diff --git a/.gitignore b/.gitignore index 44a4761f..9cf9fd7d 100644 --- a/.gitignore +++ b/.gitignore @@ -101,6 +101,7 @@ $RECYCLE.BIN/ .gradle build/ +run/ # Ignore Gradle GUI config gradle-app.setting diff --git a/build.gradle.kts b/build.gradle.kts index 9ddb6230..9b2018eb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,11 +8,12 @@ plugins { id("org.jetbrains.gradle.plugin.idea-ext") version "1.1.7" id("eclipse") id("com.gtnewhorizons.retrofuturagradle") version "1.3.19" + kotlin("jvm") } // Project properties group = "github.kasuminova.novaeng" -version = "1.21.1" +version = "1.22.5" // Set the toolchain version to decouple the Java we run Gradle with from the Java used to compile and run the mod java { @@ -46,6 +47,8 @@ minecraft { args.add("-Dmixin.hotSwap=true") args.add("-Dmixin.checks.interfaces=true") args.add("-Dmixin.debug.export=true") + //args.add("-Dlegacy.debugClassLoading=true") + //args.add("-Dlegacy.debugClassLoadingSave=true") extraRunJvmArguments.addAll(args) // If needed, add extra tweaker classes like for mixins. @@ -167,6 +170,7 @@ repositories { url = uri("http://jenkins.usrv.eu:8081/nexus/content/groups/public/") isAllowInsecureProtocol = true } + mavenCentral() } //mixin { @@ -207,21 +211,36 @@ dependencies { // Mod Dependencies implementation("CraftTweaker2:CraftTweaker2-MC1120-Main:1.12-4.+") - implementation(rfg.deobf("hellfirepvp:modularmachinery:2.1.0:main")) + implementation(rfg.deobf("curse.maven:electroblobs-wizardry-265642:5354477")) + implementation(rfg.deobf("kasuminova:ModularMachinery-CE:2.1.6:dev")) implementation(rfg.deobf("kasuminova:MMCE-ComponentModelHider:1.1:dev")) implementation(rfg.deobf("lumien231:resourceloader:1.5.3:main")) // implementation(rfg.deobf("curse.maven:modularmachinery-community-edition-817377:5255734")) - implementation(rfg.deobf("kasuminova:lumenized:1.0.3:dev")) + implementation(rfg.deobf("curse.maven:extended-crafting-terminals-for-applied-1157825:6503414")) + implementation(rfg.deobf("curse.maven:lumenized-1234162:6378222")) + implementation(rfg.deobf("curse.maven:mantle-74924:2713386")) + implementation(rfg.deobf("curse.maven:tinkers-construct-74072:2902483")) + implementation(rfg.deobf("curse.maven:not-enough-energistics-515565:5234732")) + implementation(rfg.deobf("curse.maven:psi-241665:3085917")) + implementation(rfg.deobf("curse.maven:RandomTweaker-514170:5528753")) + implementation(rfg.deobf("curse.maven:jetif-303122:2919936")) implementation(rfg.deobf("curse.maven:ctm-267602:2915363")) // implementation(rfg.deobf("curse.maven:component-model-hider-940949:4885858")) implementation(rfg.deobf("curse.maven:had-enough-items-557549:4810661")) implementation(rfg.deobf("curse.maven:the-one-probe-245211:2667280")) - implementation(rfg.deobf("curse.maven:ae2-extended-life-570458:5378163")) + implementation(rfg.deobf("curse.maven:FTB-Library-237167:2985811")) + implementation(rfg.deobf("curse.maven:FTBU-237102:3157548")) + implementation(rfg.deobf("curse.maven:ae2-extended-life-570458:6302098")) implementation(rfg.deobf("curse.maven:ae2-fluid-crafting-rework-623955:5504001")) - implementation(rfg.deobf("curse.maven:nae2-884359:4955559")) + compileOnly(rfg.deobf("curse.maven:MekanismEnergistics-1027681:5775101")) + implementation(rfg.deobf("curse.maven:nae2-884359:5380800")) // implementation(rfg.deobf("curse.maven:applied-energistics-2-223794:2747063")) // implementation(rfg.deobf("curse.maven:tx-loader-706505:4515357")) implementation(rfg.deobf("curse.maven:CodeChickenLib-242818:2779848")) + implementation(rfg.deobf("curse.maven:wanionlib-253043:4623135")) + implementation(rfg.deobf("curse.maven:avaritia-1-1x-unofficial-1165010:6207893")) + implementation(rfg.deobf("curse.maven:eternal-singularity-253077:2922583")) + compileOnly(rfg.deobf("curse.maven:optifine-check-626981:3806565")) compileOnly(rfg.deobf("curse.maven:nuclearcraft-overhauled-336895:3862197")) compileOnly(rfg.deobf("curse.maven:industrialcraft-2-242638:3078604")) // implementation(rfg.deobf("sddsd233:mekceu-9.8.11.185")) @@ -231,16 +250,19 @@ dependencies { implementation(rfg.deobf("curse.maven:botania-225643:3330934")) implementation(rfg.deobf("curse.maven:astral-sorcery-241721:3044416")) implementation(rfg.deobf("curse.maven:baubles-227083:2518667")) - implementation(rfg.deobf("curse.maven:zenutil-401178:5056679")) + implementation(rfg.deobf("curse.maven:zenutil-401178:6033519")) compileOnly(rfg.deobf("curse.maven:smooth-font-285742:3944565")) implementation(rfg.deobf("curse.maven:scalingguis-319656:2716334")) implementation(rfg.deobf("curse.maven:lolasm-460609:5257348")) compileOnly(rfg.deobf("curse.maven:matter-overdrive-community-edition-557428:4592069")) - compileOnly(rfg.deobf("curse.maven:cofh-core-69162:2920433")) - compileOnly(rfg.deobf("curse.maven:cofh-world-271384:2920434")) - compileOnly(rfg.deobf("curse.maven:thermal-foundation-222880:2926428")) + implementation(rfg.deobf("curse.maven:cofh-core-69162:2920433")) + implementation(rfg.deobf("curse.maven:cofh-world-271384:2920434")) + implementation(rfg.deobf("curse.maven:thermal-foundation-222880:2926428")) compileOnly(rfg.deobf("curse.maven:thermal-innovation-291737:2920441")) - compileOnly(rfg.deobf("curse.maven:thermal-expansion-69163:2926431")) + compileOnly(rfg.deobf("curse.maven:tesla-244651:2487959")) + implementation(rfg.deobf("curse.maven:mcjtylib-233105:2745846")) + implementation(rfg.deobf("curse.maven:rftools-224641:2861573")) + implementation(rfg.deobf("curse.maven:thermal-expansion-69163:2926431")) compileOnly(rfg.deobf("curse.maven:athenaeum-284350:4633750")) compileOnly(rfg.deobf("curse.maven:artisan-worktables-284351:3205284")) compileOnly(rfg.deobf("curse.maven:endercore-231868:4671384")) @@ -248,22 +270,37 @@ dependencies { compileOnly(rfg.deobf("curse.maven:more-electric-tools-366298:3491973")) compileOnly(rfg.deobf("curse.maven:brandonscore-231382:3051539")) compileOnly(rfg.deobf("curse.maven:draconicevolution-223565:3051542")) - compileOnly(rfg.deobf("curse.maven:extrabotany-299086:3112313")) - compileOnly(rfg.deobf("curse.maven:libnine-322344:3509087")) - compileOnly(rfg.deobf("curse.maven:lazy-ae2-322347:3254160")) + implementation(rfg.deobf("curse.maven:extrabotany-299086:3112313")) + implementation(rfg.deobf("curse.maven:libnine-322344:3509087")) + implementation(rfg.deobf("curse.maven:lazy-ae2-322347:3254160")) compileOnly(rfg.deobf("curse.maven:better-chat-363860:3048407")) compileOnly(rfg.deobf("curse.maven:ae2-fluid-crafting-rework-623955:5237484")) - compileOnly(rfg.deobf("curse.maven:ingame-info-xml-225604:2489566")) compileOnly(rfg.deobf("curse.maven:lunatriuscore-225605:2489549")) compileOnly(rfg.deobf("curse.maven:immersive-engineering-231951:2974106")) + compileOnly(rfg.deobf("curse.maven:ingame-info-xml-225604:2489566")) compileOnly(rfg.deobf("curse.maven:unidict-244258:3553627")) compileOnly(rfg.deobf("curse.maven:wanionlib-253043:4623135")) compileOnly(rfg.deobf("curse.maven:dme-737252:5043404")) // Performance Test Tool runtimeOnly(rfg.deobf("curse.maven:spark-361579:3245793")) // Optimization - implementation(rfg.deobf("curse.maven:stellarcore-1064321:5791405")) + implementation(rfg.deobf("curse.maven:stellarcore-1064321:5952608")) implementation(rfg.deobf("curse.maven:configanytime-870276:5212709")) + implementation(rfg.deobf("curse.maven:LibVulpes-236541:3801015")) + implementation(rfg.deobf("curse.maven:AutoRegLib-250363:2746011")) + implementation(rfg.deobf("curse.maven:Cucumber-272335:2645867")) + implementation(rfg.deobf("curse.maven:LibVulpes-236541:3801015")) + implementation(rfg.deobf("curse.maven:extended-crafting-nomifactory-edition-398267:5778512")) + implementation(rfg.deobf("curse.maven:techguns-244201:2958103")) + implementation(rfg.deobf("curse.maven:legendary-tooltips-532127:5734973")) + implementation(rfg.deobf("curse.maven:betterer-p2p-943734:4928154")) + implementation(rfg.deobf("curse.maven:nuclearcraft-overhauled-336895:6605808")) + implementation(rfg.deobf("curse.maven:Loot-Overhaul-299389:2711740")) + implementation(rfg.deobf("curse.maven:Flux-Networks-248020:3178199")) + implementation(rfg.deobf("curse.maven:BloodMagic-224791:2822288")) + implementation(rfg.deobf("curse.maven:dme-737252:5985530")) + implementation(rfg.deobf("curse.maven:packagedauto-308380:6312996")) + implementation(kotlin("stdlib-jdk8")) } // Publishing to a Maven repository @@ -317,6 +354,9 @@ idea { self.add(Gradle("4. Run Obfuscated Server").apply { setProperty("taskNames", listOf("runObfServer")) }) + self.add(Gradle("5. Build Jars").apply { + setProperty("taskNames", listOf("build")) + }) /* These require extra configuration in IntelliJ, so are not enabled by default self.add(Application("Run Client (IJ Native, Deprecated)", project).apply { @@ -350,7 +390,7 @@ idea { afterEvaluate { self.javac.moduleJavacAdditionalOptions = mapOf( (project.name + ".main") to - tasks.compileJava.get().options.compilerArgs.map { '"' + it + '"' }.joinToString(" ") + tasks.compileJava.get().options.compilerArgs.joinToString(" ") { '"' + it + '"' } ) } } diff --git a/lib/modularmachinery-2.1.0-main.jar b/lib/ModularMachinery-CE-2.1.6-dev.jar similarity index 74% rename from lib/modularmachinery-2.1.0-main.jar rename to lib/ModularMachinery-CE-2.1.6-dev.jar index 4bc857ac..f1bae503 100644 Binary files a/lib/modularmachinery-2.1.0-main.jar and b/lib/ModularMachinery-CE-2.1.6-dev.jar differ diff --git a/lib/lumenized-1.0.3-dev.jar b/lib/lumenized-1.0.3-dev.jar deleted file mode 100644 index 1b3e24ae..00000000 Binary files a/lib/lumenized-1.0.3-dev.jar and /dev/null differ diff --git a/libs/ModularMachinery-CE-2.0.0-pre3.jar b/libs/ModularMachinery-CE-2.0.0-pre3.jar deleted file mode 100644 index a2ce18f0..00000000 Binary files a/libs/ModularMachinery-CE-2.0.0-pre3.jar and /dev/null differ diff --git a/settings.gradle.kts b/settings.gradle.kts index 6a6c0e6b..b73ee3a0 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -14,6 +14,9 @@ pluginManagement { mavenCentral() mavenLocal() } + plugins { + kotlin("jvm") version "2.1.20" + } } plugins { diff --git a/src/main/java/github/kasuminova/mmce/client/gui/widget/DragBar.java b/src/main/java/github/kasuminova/mmce/client/gui/widget/DragBar.java index d970e626..50ad39a7 100644 --- a/src/main/java/github/kasuminova/mmce/client/gui/widget/DragBar.java +++ b/src/main/java/github/kasuminova/mmce/client/gui/widget/DragBar.java @@ -411,7 +411,7 @@ public class DragBarButton extends DynamicWidget { protected ResourceLocation texLocation = DEFAULT_TEX_RES; protected float width = 0; - protected float height = 0; + protected float height; protected int buttonLeftTexOffsetX = DEFAULT_BUTTON_LEFT_TEX_OFFSET_X; protected int buttonLeftTexOffsetY = DEFAULT_BUTTON_LEFT_TEX_OFFSET_Y; diff --git a/src/main/java/github/kasuminova/novaeng/NovaEngineeringCore.java b/src/main/java/github/kasuminova/novaeng/NovaEngineeringCore.java index 689d4387..ca7326e3 100644 --- a/src/main/java/github/kasuminova/novaeng/NovaEngineeringCore.java +++ b/src/main/java/github/kasuminova/novaeng/NovaEngineeringCore.java @@ -2,16 +2,41 @@ import github.kasuminova.novaeng.client.hitokoto.HitokotoAPI; import github.kasuminova.novaeng.common.CommonProxy; +import github.kasuminova.novaeng.common.command.CommandBuilder; import github.kasuminova.novaeng.common.command.CommandSPacketProfiler; import github.kasuminova.novaeng.common.config.NovaEngCoreConfig; -import github.kasuminova.novaeng.common.network.*; +import github.kasuminova.novaeng.common.handler.WorldLoadedHandler; +import github.kasuminova.novaeng.common.network.ParallelNetworkManager; +import github.kasuminova.novaeng.common.network.PktCellDriveStatusUpdate; +import github.kasuminova.novaeng.common.network.PktECalculatorGUIData; +import github.kasuminova.novaeng.common.network.PktEFabricatorGUIAction; +import github.kasuminova.novaeng.common.network.PktEFabricatorGUIData; +import github.kasuminova.novaeng.common.network.PktEFabricatorPatternSearchGUIAction; +import github.kasuminova.novaeng.common.network.PktEFabricatorPatternSearchGUIUpdate; +import github.kasuminova.novaeng.common.network.PktEFabricatorWorkerStatusUpdate; +import github.kasuminova.novaeng.common.network.PktEStorageGUIData; +import github.kasuminova.novaeng.common.network.PktGeocentricDrillControl; +import github.kasuminova.novaeng.common.network.PktHyperNetStatus; +import github.kasuminova.novaeng.common.network.PktMouseItemUpdate; +import github.kasuminova.novaeng.common.network.PktPatternTermUploadPattern; +import github.kasuminova.novaeng.common.network.PktResearchTaskComplete; +import github.kasuminova.novaeng.common.network.PktResearchTaskProvide; +import github.kasuminova.novaeng.common.network.PktResearchTaskProvideCreative; +import github.kasuminova.novaeng.common.network.PktResearchTaskReset; +import github.kasuminova.novaeng.common.network.PktTerminalGuiData; import github.kasuminova.novaeng.common.network.packetprofiler.PktCProfilerReply; import github.kasuminova.novaeng.common.network.packetprofiler.PktCProfilerRequest; import github.kasuminova.novaeng.common.profiler.SPacketProfiler; import net.minecraft.util.text.TextFormatting; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.SidedProxy; -import net.minecraftforge.fml.common.event.*; +import net.minecraftforge.fml.common.event.FMLConstructionEvent; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLLoadCompleteEvent; +import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.event.FMLServerStartingEvent; +import net.minecraftforge.fml.common.event.FMLServerStoppingEvent; import net.minecraftforge.fml.common.network.NetworkRegistry; import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; import net.minecraftforge.fml.relauncher.Side; @@ -31,7 +56,7 @@ "required:mixinbooter@[8.0,);" + "required:lumenized@[1.0.2,);", acceptedMinecraftVersions = "[1.12, 1.13)", - acceptableRemoteVersions = "[1.21.0, 1.22.0)" + acceptableRemoteVersions = "[1.21.7, 1.23.0)" ) @SuppressWarnings("MethodMayBeStatic") public class NovaEngineeringCore { @@ -60,7 +85,7 @@ public class NovaEngineeringCore { if (hitokoto == null || hitokoto.isEmpty()) { return; } - LOG.info(LOG_PREFIX + hitokoto); + LOG.info(LOG_PREFIX + "{}", hitokoto); }); thread.setName("NovaEng Core Hitokoto Initializer"); thread.start(); @@ -72,13 +97,12 @@ public void construction(FMLConstructionEvent event) { proxy.construction(); } - @SuppressWarnings("ValueOfIncrementOrDecrementUsed") + @SuppressWarnings({"ValueOfIncrementOrDecrementUsed", "UnusedAssignment"}) @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { event.getModMetadata().version = VERSION; byte start = 0; - NET_CHANNEL.registerMessage(PktHyperNetStatus.class, PktHyperNetStatus.class, start++, Side.CLIENT); NET_CHANNEL.registerMessage(PktTerminalGuiData.class, PktTerminalGuiData.class, start++, Side.CLIENT); NET_CHANNEL.registerMessage(PktResearchTaskComplete.class, PktResearchTaskComplete.class, start++, Side.CLIENT); @@ -124,15 +148,19 @@ public void loadComplete(FMLLoadCompleteEvent event) { @Mod.EventHandler public void onServerStart(FMLServerStartingEvent event) { event.registerServerCommand(CommandSPacketProfiler.INSTANCE); + event.registerServerCommand(CommandBuilder.INSTANCE); + WorldLoadedHandler.REGISTERED_DIMENSIONS.clear(); + WorldLoadedHandler.ERRORWROLD.clear(); + WorldLoadedHandler.init = true; } @Mod.EventHandler public void onServerStopping(FMLServerStoppingEvent event) { - log.info(TextFormatting.BLUE + "服务器正在关闭,正在生成网络包报告。"); + log.info("{}服务器正在关闭,正在生成网络包报告。", TextFormatting.BLUE); for (final String message : SPacketProfiler.getProfilerMessages()) { log.info(message); } - log.info(TextFormatting.BLUE + "所有玩家的完整网络包报告:"); + log.info("{}所有玩家的完整网络包报告:", TextFormatting.BLUE); for (final String message : SPacketProfiler.getFullProfilerMessages()) { log.info(message); } diff --git a/src/main/java/github/kasuminova/novaeng/client/ClientProxy.java b/src/main/java/github/kasuminova/novaeng/client/ClientProxy.java index 8148ed19..90c5987e 100644 --- a/src/main/java/github/kasuminova/novaeng/client/ClientProxy.java +++ b/src/main/java/github/kasuminova/novaeng/client/ClientProxy.java @@ -1,11 +1,20 @@ package github.kasuminova.novaeng.client; - import github.kasuminova.mmce.client.renderer.MachineControllerRenderer; -import github.kasuminova.novaeng.client.gui.*; +import github.kasuminova.novaeng.client.book.BookTransformerAppendModifiers; +import github.kasuminova.novaeng.client.gui.GuiECalculatorController; +import github.kasuminova.novaeng.client.gui.GuiEFabricatorController; +import github.kasuminova.novaeng.client.gui.GuiEFabricatorPatternBus; +import github.kasuminova.novaeng.client.gui.GuiEFabricatorPatternSearch; +import github.kasuminova.novaeng.client.gui.GuiEStorageController; +import github.kasuminova.novaeng.client.gui.GuiGeocentricDrill; +import github.kasuminova.novaeng.client.gui.GuiHyperNetTerminal; +import github.kasuminova.novaeng.client.gui.GuiModularServerAssembler; +import github.kasuminova.novaeng.client.gui.GuiSingularityCore; import github.kasuminova.novaeng.client.handler.BlockAngelRendererHandler; import github.kasuminova.novaeng.client.handler.ClientEventHandler; import github.kasuminova.novaeng.client.handler.HyperNetClientEventHandler; +import github.kasuminova.novaeng.client.util.ExJEI; import github.kasuminova.novaeng.client.util.TitleUtils; import github.kasuminova.novaeng.common.CommonProxy; import github.kasuminova.novaeng.common.command.CommandPacketProfiler; @@ -29,12 +38,19 @@ import net.minecraftforge.client.ClientCommandHandler; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.config.Configuration; import net.minecraftforge.fml.client.registry.ClientRegistry; +import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.relauncher.Side; +import slimeknights.tconstruct.library.book.TinkerBook; import javax.annotation.Nullable; +import java.io.File; + +import static github.kasuminova.novaeng.mixin.NovaEngCoreEarlyMixinLoader.checkJavaVersion; +import static github.kasuminova.novaeng.mixin.NovaEngCoreEarlyMixinLoader.isCleanroomLoader; @SuppressWarnings("MethodMayBeStatic") @Mod.EventBusSubscriber(Side.CLIENT) @@ -48,6 +64,15 @@ public ClientProxy() { public void construction() { super.construction(); + var config = new Configuration(new File(Loader.instance().getConfigDir(), "novaeng_core.cfg")); + config.load(); + if (config.getBoolean("javaCheck", Configuration.CATEGORY_GENERAL,true,"java1.8.0_51 is bad")) { + if (!isCleanroomLoader()){ + checkJavaVersion(); + } + } + config.save(); + TitleUtils.setRandomTitle("*Construction*"); } @@ -70,6 +95,10 @@ public void init() { super.init(); TitleUtils.setRandomTitle("*Init*"); + + if (Loader.isModLoaded("ic2")) { + ExJEI.jeiCreate(); + } } @Override @@ -80,6 +109,12 @@ public void postInit() { ClientCommandHandler.instance.registerCommand(CommandPacketProfiler.INSTANCE); TitleUtils.setRandomTitle("*PostInit*"); + + if (Loader.isModLoaded("ic2")) { + ExJEI.jeiRecipeRegister(); + } + + TinkerBook.INSTANCE.addTransformer(BookTransformerAppendModifiers.INSTANCE_FALSE); } @Override diff --git a/src/main/java/github/kasuminova/novaeng/client/book/BookTransformerAppendModifiers.java b/src/main/java/github/kasuminova/novaeng/client/book/BookTransformerAppendModifiers.java new file mode 100644 index 00000000..9fcbda31 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/client/book/BookTransformerAppendModifiers.java @@ -0,0 +1,45 @@ +package github.kasuminova.novaeng.client.book; + +import github.kasuminova.novaeng.common.trait.Register; +import slimeknights.mantle.client.book.data.BookData; +import slimeknights.mantle.client.book.data.PageData; +import slimeknights.mantle.client.book.data.SectionData; +import slimeknights.mantle.client.book.repository.BookRepository; +import slimeknights.mantle.client.book.repository.FileRepository; +import slimeknights.tconstruct.library.book.content.ContentListing; +import slimeknights.tconstruct.library.book.sectiontransformer.SectionTransformer; +import slimeknights.tconstruct.library.modifiers.Modifier; + +import java.util.List; + +// adapted from Tinkers' MEMES BookTransformerAppendModifiers +public class BookTransformerAppendModifiers extends SectionTransformer { + + private final BookRepository source; + private final boolean armour; + private final List modCollector; + public static BookTransformerAppendModifiers INSTANCE_FALSE = new BookTransformerAppendModifiers(new FileRepository("tconstruct:book"), false, Register.TRAITREGISTER.modifierTraitsF); + public static BookTransformerAppendModifiers INSTANCE_TRUE= new BookTransformerAppendModifiers(new FileRepository("tconstruct:book"), true, Register.TRAITREGISTER.modifierTraitsT); + + public BookTransformerAppendModifiers(BookRepository source, boolean armour, List modCollector) { + super("modifiers"); + this.source = source; + this.armour = armour; + this.modCollector = modCollector; + } + + @Override + public void transform(BookData book, SectionData section) { + ContentListing listing = (ContentListing) section.pages.get(0).content; + for (Modifier mod : modCollector) { + PageData page = new PageData(); + page.source = source; + page.parent = section; + page.type = armour ? "armormodifier" : "modifier"; + page.data = "modifiers/" + mod.identifier + ".json"; + section.pages.add(page); + page.load(); + listing.addEntry(mod.getLocalizedName(), page); + } + } +} diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/GuiEFabricatorController.java b/src/main/java/github/kasuminova/novaeng/client/gui/GuiEFabricatorController.java index 5f8c0ea1..4dc03205 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/GuiEFabricatorController.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/GuiEFabricatorController.java @@ -4,7 +4,11 @@ import github.kasuminova.mmce.client.gui.widget.base.WidgetController; import github.kasuminova.mmce.client.gui.widget.base.WidgetGui; import github.kasuminova.novaeng.NovaEngineeringCore; -import github.kasuminova.novaeng.client.gui.widget.efabricator.*; +import github.kasuminova.novaeng.client.gui.widget.efabricator.ControlPanel; +import github.kasuminova.novaeng.client.gui.widget.efabricator.CraftingStatusPanel; +import github.kasuminova.novaeng.client.gui.widget.efabricator.HeatStatisticPanel; +import github.kasuminova.novaeng.client.gui.widget.efabricator.TitleButtonLine; +import github.kasuminova.novaeng.client.gui.widget.efabricator.TotalCraftedLabel; import github.kasuminova.novaeng.client.gui.widget.efabricator.event.EFGUIDataUpdateEvent; import github.kasuminova.novaeng.common.container.ContainerEFabricatorController; import github.kasuminova.novaeng.common.container.data.EFabricatorData; diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/GuiGeocentricDrill.java b/src/main/java/github/kasuminova/novaeng/client/gui/GuiGeocentricDrill.java index 69d1cd9f..cd7782fd 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/GuiGeocentricDrill.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/GuiGeocentricDrill.java @@ -113,7 +113,7 @@ protected void drawGuiContainerBackgroundLayer(final float partialTicks, final i } public void updateData() { - this.oreControlList.setStackList(GeocentricDrill.GEOCENTRIC_DRILL.getRawOres(), owner.getAccelerateOres()); + this.oreControlList.setStackList(GeocentricDrill.INSTANCE.getRawOres(), owner.getAccelerateOres()); this.dive.setAvailable(owner.getTargetDepth() < GeocentricDrill.MAX_DEPTH); this.ascend.setAvailable(owner.getTargetDepth() > GeocentricDrill.MIN_DEPTH); } diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/GuiHyperNetTerminal.java b/src/main/java/github/kasuminova/novaeng/client/gui/GuiHyperNetTerminal.java index 650e88ea..4a94c1b0 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/GuiHyperNetTerminal.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/GuiHyperNetTerminal.java @@ -26,6 +26,9 @@ import hellfirepvp.modularmachinery.common.util.MiscUtils; import io.netty.util.internal.ThrowableUtil; import it.unimi.dsi.fastutil.objects.Object2DoubleOpenHashMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.gui.FontRenderer; @@ -44,7 +47,13 @@ import org.lwjgl.input.Mouse; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; public class GuiHyperNetTerminal extends GuiContainerBase { @@ -73,11 +82,11 @@ public class GuiHyperNetTerminal extends GuiContainerBase unlockedData = new HashSet<>(); - protected final List lockedData = new ArrayList<>(); - protected final List unavailableData = new ArrayList<>(); + protected final Set unlockedData = new ObjectOpenHashSet<>(); + protected final List lockedData = new ObjectArrayList<>(); + protected final List unavailableData = new ObjectArrayList<>(); protected final Object2DoubleOpenHashMap researchingData = new Object2DoubleOpenHashMap<>(); - protected final List renderingData = new ArrayList<>(); + protected final List renderingData = new ObjectArrayList<>(); protected boolean darkMode = true; protected boolean showLockedResearchDesc = false; @@ -492,10 +501,24 @@ protected void updateSearchTextField() { ); } + protected static final Comparator comparator = + (o1, o2) -> { + float a = o1.getTechLevel(); + float b = o2.getTechLevel(); + if (a == b){ + return 0; + } else { + return a > b ? 1 : -1; + } + }; + protected void updateRenderingData() { renderingData.clear(); - Map tmp = new LinkedHashMap<>(); + Map tmp = new Object2ObjectLinkedOpenHashMap<>(); + + lockedData.sort(comparator); + unavailableData.sort(comparator); researchingData.forEach((data, progress) -> { ResearchDataContext context = new ResearchDataContext(data, true, true, progress); @@ -504,15 +527,15 @@ protected void updateRenderingData() { setCurrent(context); } }); - unlockedData.forEach(data -> { - ResearchDataContext context = new ResearchDataContext(data, false, true, -1D); + lockedData.forEach(data -> { + ResearchDataContext context = new ResearchDataContext(data, true, true, -1D); tmp.put(data.getTranslatedName(), context); if (context.equals(current)) { setCurrent(context); } }); - lockedData.forEach(data -> { - ResearchDataContext context = new ResearchDataContext(data, true, true, -1D); + unlockedData.stream().sorted(comparator).forEach(data -> { + ResearchDataContext context = new ResearchDataContext(data, false, true, -1D); tmp.put(data.getTranslatedName(), context); if (context.equals(current)) { setCurrent(context); diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/GuiModularServerAssembler.java b/src/main/java/github/kasuminova/novaeng/client/gui/GuiModularServerAssembler.java index 7ee792b8..d5f7e2c7 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/GuiModularServerAssembler.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/GuiModularServerAssembler.java @@ -5,7 +5,12 @@ import github.kasuminova.mmce.client.gui.widget.base.WidgetController; import github.kasuminova.mmce.client.gui.widget.base.WidgetGui; import github.kasuminova.novaeng.NovaEngineeringCore; -import github.kasuminova.novaeng.client.gui.widget.msa.*; +import github.kasuminova.novaeng.client.gui.widget.msa.AssemblyInvCPU; +import github.kasuminova.novaeng.client.gui.widget.msa.AssemblyInvCalculateCard; +import github.kasuminova.novaeng.client.gui.widget.msa.AssemblyInvExtension; +import github.kasuminova.novaeng.client.gui.widget.msa.AssemblyInvManager; +import github.kasuminova.novaeng.client.gui.widget.msa.AssemblyInvPower; +import github.kasuminova.novaeng.client.gui.widget.msa.ServerInfoColumn; import github.kasuminova.novaeng.client.gui.widget.msa.event.AssemblerInvUpdateEvent; import github.kasuminova.novaeng.common.container.ContainerModularServerAssembler; import github.kasuminova.novaeng.common.tile.TileModularServerAssembler; diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/widget/Button4StateWithText.java b/src/main/java/github/kasuminova/novaeng/client/gui/widget/Button4StateWithText.java index f07eaa62..1f925821 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/widget/Button4StateWithText.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/widget/Button4StateWithText.java @@ -7,7 +7,6 @@ import github.kasuminova.mmce.client.gui.widget.base.WidgetGui; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.renderer.GlStateManager; public class Button4StateWithText extends Button4State { diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/widget/ProgressBar.java b/src/main/java/github/kasuminova/novaeng/client/gui/widget/ProgressBar.java index 0ff8f178..ac541ce4 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/widget/ProgressBar.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/widget/ProgressBar.java @@ -1,6 +1,10 @@ package github.kasuminova.novaeng.client.gui.widget; -import github.kasuminova.mmce.client.gui.util.*; +import github.kasuminova.mmce.client.gui.util.AnimationValue; +import github.kasuminova.mmce.client.gui.util.MousePos; +import github.kasuminova.mmce.client.gui.util.RenderPos; +import github.kasuminova.mmce.client.gui.util.RenderSize; +import github.kasuminova.mmce.client.gui.util.TextureProperties; import github.kasuminova.mmce.client.gui.widget.base.DynamicWidget; import github.kasuminova.mmce.client.gui.widget.base.WidgetGui; import net.minecraft.client.gui.GuiScreen; @@ -104,7 +108,7 @@ protected Optional findProgressForegroundTex(final double per if (idx >= progressTextures.size()) { return Optional.of(progressTextures.get(progressTextures.size() - 1)); } else { - return Optional.of(progressTextures.get(idx)); + return Optional.of(progressTextures.get(Math.max(idx, 0))); } } diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/widget/efabricator/PatternPanel.java b/src/main/java/github/kasuminova/novaeng/client/gui/widget/efabricator/PatternPanel.java index e0723405..93e78582 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/widget/efabricator/PatternPanel.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/widget/efabricator/PatternPanel.java @@ -2,7 +2,11 @@ import appeng.api.networking.crafting.ICraftingPatternDetails; import appeng.api.storage.data.IAEItemStack; -import github.kasuminova.mmce.client.gui.util.*; +import github.kasuminova.mmce.client.gui.util.MousePos; +import github.kasuminova.mmce.client.gui.util.RenderFunction; +import github.kasuminova.mmce.client.gui.util.RenderPos; +import github.kasuminova.mmce.client.gui.util.RenderSize; +import github.kasuminova.mmce.client.gui.util.TextureProperties; import github.kasuminova.mmce.client.gui.widget.base.DynamicWidget; import github.kasuminova.mmce.client.gui.widget.base.WidgetGui; import github.kasuminova.mmce.client.gui.widget.container.Row; @@ -27,7 +31,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Pattern; diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/widget/efabricator/SlotItemVirtualJEISmall.java b/src/main/java/github/kasuminova/novaeng/client/gui/widget/efabricator/SlotItemVirtualJEISmall.java index 1e447452..92c9cdb8 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/widget/efabricator/SlotItemVirtualJEISmall.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/widget/efabricator/SlotItemVirtualJEISmall.java @@ -9,7 +9,7 @@ import net.minecraft.client.renderer.GlStateManager; import net.minecraft.item.ItemStack; -import java.awt.*; +import java.awt.Color; public class SlotItemVirtualJEISmall extends SlotItemVirtualJEI { diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/widget/estorage/EStorageCellInfo.java b/src/main/java/github/kasuminova/novaeng/client/gui/widget/estorage/EStorageCellInfo.java index ec4d98d1..94e378e1 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/widget/estorage/EStorageCellInfo.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/widget/estorage/EStorageCellInfo.java @@ -13,6 +13,7 @@ import github.kasuminova.novaeng.common.container.data.EStorageCellData; import github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils; import github.kasuminova.novaeng.common.tile.ecotech.estorage.EStorageCellDrive; +import hellfirepvp.modularmachinery.common.base.Mods; import net.minecraft.client.resources.I18n; import net.minecraft.util.ResourceLocation; @@ -54,6 +55,16 @@ public class EStorageCellInfo extends SizedColumn { CELL_TYPE_BACKGROUND_WIDTH, CELL_TYPE_BACKGROUND_HEIGHT ); + public static final TextureProperties CELL_TYPE_BACKGROUND_GAS = new TextureProperties(BG_TEX_RES, + 28, 82, + CELL_TYPE_BACKGROUND_WIDTH, CELL_TYPE_BACKGROUND_HEIGHT + ); + + public static final TextureProperties CELL_TYPE_BACKGROUND_EMPTY = new TextureProperties(BG_TEX_RES, + 1, 82, + CELL_TYPE_BACKGROUND_WIDTH, CELL_TYPE_BACKGROUND_HEIGHT + ); + protected TextureProperties cellBackground = TextureProperties.EMPTY; protected TextureProperties cellTypeBackground = TextureProperties.EMPTY; @@ -82,8 +93,10 @@ protected void initBackground() { case C -> cellBackground = CELL_BACKGROUND_L9; } switch (data.type()) { + case EMPTY -> cellTypeBackground = CELL_TYPE_BACKGROUND_EMPTY; case ITEM -> cellTypeBackground = CELL_TYPE_BACKGROUND_ITEM; case FLUID -> cellTypeBackground = CELL_TYPE_BACKGROUND_FLUID; + case GAS -> cellTypeBackground = Mods.MEKENG.isPresent() ? CELL_TYPE_BACKGROUND_GAS : CELL_TYPE_BACKGROUND_EMPTY; } } @@ -96,12 +109,13 @@ protected void initInfo() { long maxBytes = EStorageCellDrive.getMaxBytes(data); String typeName = I18n.format("gui.estorage_controller.cell_info." + switch (type) { - case EMPTY -> "unknown"; + case EMPTY -> "empty"; case ITEM -> "item"; case FLUID -> "fluid"; + case GAS -> Mods.MEKENG.isPresent() ? "gas" : "empty"; }); String levelName = switch (level) { - case EMPTY -> "unknown"; + case EMPTY -> "empty"; case A -> "L4"; case B -> "L6"; case C -> "L9"; diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/widget/estorage/EStorageGraph.java b/src/main/java/github/kasuminova/novaeng/client/gui/widget/estorage/EStorageGraph.java index 1e3b2e6a..4f2e9052 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/widget/estorage/EStorageGraph.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/widget/estorage/EStorageGraph.java @@ -12,6 +12,7 @@ import github.kasuminova.novaeng.common.container.data.EStorageEnergyData; import github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils; import github.kasuminova.novaeng.common.tile.ecotech.estorage.EStorageCellDrive; +import hellfirepvp.modularmachinery.common.base.Mods; import net.minecraft.client.resources.I18n; import org.lwjgl.input.Keyboard; @@ -27,9 +28,15 @@ public EStorageGraph(final GuiEStorageController controllerGUI) { WidgetController widgetController = controllerGUI.getWidgetController(); widgetController.addWidgetContainer(new FluidGraph(this)); widgetController.addWidgetContainer(new ItemGraph(this)); + if (getMekEngLoad()) { + widgetController.addWidgetContainer(new GasGraph(this)); + } widgetController.addWidgetContainer(new TotalGraph(this)); widgetController.addWidgetContainer(new FluidTypeGraph(this)); widgetController.addWidgetContainer(new ItemTypeGraph(this)); + if (getMekEngLoad()) { + widgetController.addWidgetContainer(new GasTypeGraph(this)); + } widgetController.addWidgetContainer(new EnergyCapacityGraph(this)); widgetController.addWidgetContainer(new EnergyUsageGraph(this)); } @@ -131,11 +138,53 @@ public boolean onGuiEvent(final GuiEvent event) { } } + public class GasGraph extends Graph { + + public GasGraph(final EStorageGraph graphParent) { + super(graphParent, + 10, 70, + 60, 16, + 2, + 1, 232, + 65, 6, + true, false); + } + + @Override + public void update(final WidgetGui gui) { + super.update(gui); + if (!value.isAnimFinished()) { + label.setContents(Collections.singletonList( + I18n.format("gui.estorage_controller.graph.gas.percent", + NovaEngUtils.formatDouble(value.get() * 100, 1))) + ); + } + } + + @Override + public boolean onGuiEvent(final GuiEvent event) { + if (event instanceof ESGUIDataUpdateEvent) { + double totalUsedBytes = 0; + double totalMaxBytes = 0; + for (final EStorageCellData data : controllerGUI.getCellDataList()) { + long maxBytes = EStorageCellDrive.getMaxBytes(data); + totalMaxBytes += maxBytes; + if (data.type() == DriveStorageType.GAS) { + long usedBytes = data.usedBytes(); + totalUsedBytes += usedBytes; + } + } + value.set(totalMaxBytes <= 0 ? 0 : totalUsedBytes / totalMaxBytes); + } + return super.onGuiEvent(event); + } + } + public class TotalGraph extends Graph { public TotalGraph(final EStorageGraph graphParent) { super(graphParent, - 8, 70, + 8, getMekEngLoad() ? 70 + 19 : 70, 64, 16, 2, 2, 239, @@ -267,6 +316,52 @@ public boolean onGuiEvent(final GuiEvent event) { } } + public class GasTypeGraph extends Graph { + + protected final AnimationValue totalUsedGasTypes = AnimationValue.ofFinished(0, 500, .25, .1, .25, 1); + protected final AnimationValue totalMaxGasTypes = AnimationValue.ofFinished(0, 500, .25, .1, .25, 1); + + public GasTypeGraph(final EStorageGraph graphParent) { + super(graphParent, + 82, 63, + 59, 16, + 1, + 1, 197, + 59, 6, + false, false); + } + + @Override + public void update(final WidgetGui gui) { + super.update(gui); + if (!value.isAnimFinished()) { + label.setContents(Collections.singletonList( + I18n.format("gui.estorage_controller.graph.gas_type", + NovaEngUtils.formatNumber((long) totalUsedGasTypes.get(), 1), + NovaEngUtils.formatNumber((long) totalMaxGasTypes.get(), 1) + )) + ); + } + } + + @Override + public boolean onGuiEvent(final GuiEvent event) { + if (event instanceof ESGUIDataUpdateEvent) { + int totalUsedGasTypes = 0; + int totalMaxGasTypes = 0; + for (final EStorageCellData data : controllerGUI.getCellDataList()) { + if (data.type() == DriveStorageType.GAS) { + totalUsedGasTypes += data.usedTypes(); + totalMaxGasTypes += 25; + } + } + this.totalUsedGasTypes.set(totalUsedGasTypes); + this.totalMaxGasTypes.set(totalMaxGasTypes); + value.set(totalUsedGasTypes <= 0 ? 0 : (double) totalUsedGasTypes / totalMaxGasTypes); + } + return super.onGuiEvent(event); + } + } public class EnergyUsageGraph extends Graph { @@ -274,7 +369,7 @@ public class EnergyUsageGraph extends Graph { public EnergyUsageGraph(final EStorageGraph graphParent) { super(graphParent, - 83, 63, + 83, getMekEngLoad() ? 80 : 63, 61, 16, 1, 1, 211, @@ -317,7 +412,7 @@ public class EnergyCapacityGraph extends Graph { public EnergyCapacityGraph(final EStorageGraph graphParent) { super(graphParent, - 83, 78, + 83, getMekEngLoad() ? 97 : 80, 60, 16, 1, 1, 218, @@ -362,4 +457,7 @@ public boolean onGuiEvent(final GuiEvent event) { } } + public boolean getMekEngLoad() { + return Mods.MEKENG.isPresent(); + } } diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/widget/estorage/EStorageGraphBar.java b/src/main/java/github/kasuminova/novaeng/client/gui/widget/estorage/EStorageGraphBar.java index 0af1a419..41773a33 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/widget/estorage/EStorageGraphBar.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/widget/estorage/EStorageGraphBar.java @@ -13,7 +13,7 @@ import net.minecraft.client.renderer.GlStateManager; import net.minecraft.util.ResourceLocation; -import java.awt.*; +import java.awt.Color; public class EStorageGraphBar extends DynamicWidget { public static final ResourceLocation TEX_RES = new ResourceLocation(NovaEngineeringCore.MOD_ID, "textures/gui/estorage_controller_elements.png"); diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/widget/geocentricdrill/SlotOreControl.java b/src/main/java/github/kasuminova/novaeng/client/gui/widget/geocentricdrill/SlotOreControl.java index de51e4be..77284ff0 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/widget/geocentricdrill/SlotOreControl.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/widget/geocentricdrill/SlotOreControl.java @@ -16,14 +16,14 @@ import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; -import java.awt.*; +import java.awt.Color; import java.util.List; public class SlotOreControl extends SlotItemVirtualJEI { private final String oreName; - private float chance; - private boolean accelerated; + private final float chance; + private final boolean accelerated; public SlotOreControl(final String oreName, final ItemStack stackInSlot, float chance, boolean accelerated) { super(stackInSlot); diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/widget/msa/AssemblyInvCPU.java b/src/main/java/github/kasuminova/novaeng/client/gui/widget/msa/AssemblyInvCPU.java index a423be7d..ac03bf35 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/widget/msa/AssemblyInvCPU.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/widget/msa/AssemblyInvCPU.java @@ -7,7 +7,12 @@ import github.kasuminova.novaeng.client.gui.GuiModularServerAssembler; import github.kasuminova.novaeng.client.gui.widget.msa.overlay.OverlayCPU; import github.kasuminova.novaeng.client.gui.widget.msa.overlay.OverlayRAM; -import github.kasuminova.novaeng.client.gui.widget.msa.slot.*; +import github.kasuminova.novaeng.client.gui.widget.msa.slot.SlotCPU; +import github.kasuminova.novaeng.client.gui.widget.msa.slot.SlotCPUExtension; +import github.kasuminova.novaeng.client.gui.widget.msa.slot.SlotCPUHeatRadiator; +import github.kasuminova.novaeng.client.gui.widget.msa.slot.SlotDisabled; +import github.kasuminova.novaeng.client.gui.widget.msa.slot.SlotRAM; +import github.kasuminova.novaeng.client.gui.widget.msa.slot.SlotRAMHeatRadiator; import github.kasuminova.novaeng.common.container.slot.AssemblySlotManager; import github.kasuminova.novaeng.common.hypernet.computer.assembly.AssemblyInvCPUConst; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/github/kasuminova/novaeng/client/gui/widget/msa/ServerInfoColumn.java b/src/main/java/github/kasuminova/novaeng/client/gui/widget/msa/ServerInfoColumn.java index 2d4ab887..a8cec86a 100644 --- a/src/main/java/github/kasuminova/novaeng/client/gui/widget/msa/ServerInfoColumn.java +++ b/src/main/java/github/kasuminova/novaeng/client/gui/widget/msa/ServerInfoColumn.java @@ -6,15 +6,31 @@ import github.kasuminova.mmce.client.gui.widget.container.ScrollingColumn; import github.kasuminova.mmce.client.gui.widget.event.GuiEvent; import github.kasuminova.novaeng.client.gui.widget.msa.event.AssemblerInvUpdateEvent; -import github.kasuminova.novaeng.common.container.slot.*; +import github.kasuminova.novaeng.common.container.slot.AssemblySlotManager; +import github.kasuminova.novaeng.common.container.slot.SlotCPUItemHandler; +import github.kasuminova.novaeng.common.container.slot.SlotCalculateCardItemHandler; +import github.kasuminova.novaeng.common.container.slot.SlotCapacitorItemHandler; +import github.kasuminova.novaeng.common.container.slot.SlotConditionItemHandler; +import github.kasuminova.novaeng.common.container.slot.SlotExtensionCardItemHandler; +import github.kasuminova.novaeng.common.container.slot.SlotPSUItemHandler; +import github.kasuminova.novaeng.common.container.slot.SlotRAMItemHandler; import github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils; -import github.kasuminova.novaeng.common.hypernet.calculation.*; -import github.kasuminova.novaeng.common.hypernet.computer.*; +import github.kasuminova.novaeng.common.hypernet.calculation.Calculable; +import github.kasuminova.novaeng.common.hypernet.calculation.CalculateRequest; +import github.kasuminova.novaeng.common.hypernet.calculation.CalculateStage; +import github.kasuminova.novaeng.common.hypernet.calculation.CalculateType; +import github.kasuminova.novaeng.common.hypernet.calculation.CalculateTypes; import github.kasuminova.novaeng.common.hypernet.calculation.modifier.ModifierManager; +import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; import github.kasuminova.novaeng.common.util.TileItemHandler; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.client.resources.I18n; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; import java.util.function.Predicate; public class ServerInfoColumn extends ScrollingColumn { @@ -52,7 +68,7 @@ protected static void addUninstalledDependenciesTip(final TileItemHandler inv, f } protected static void addUninstalledDependenciesTip(final TileItemHandler cpu, final AssemblySlotManager slotManager, final TileItemHandler calculateCard, final TileItemHandler extension, final TileItemHandler power, final List errorTips) { - List uninstalledDependenciesTip = new ArrayList<>(); + List uninstalledDependenciesTip = new ObjectArrayList<>(); addUninstalledDependenciesTip(cpu, slotManager, "cpu", uninstalledDependenciesTip); addUninstalledDependenciesTip(calculateCard, slotManager, "calculate_card", uninstalledDependenciesTip); addUninstalledDependenciesTip(extension, slotManager, "extension", uninstalledDependenciesTip); @@ -113,7 +129,7 @@ protected void updateTips() { private void addModuleTips(final int totalInstalledModules, final int installedCPUModules, final int installedRAMModules, final int installedCalculateCardModules, final int installedExtensionCardModules, final int installedPSUModules, final int installedCapacitorModules) { addWidget(createLabel(Collections.singletonList(I18n.format("gui.modular_server_assembler.info.total_modules", totalInstalledModules)))); - List moduleTips = new ArrayList<>(); + List moduleTips = new ObjectArrayList<>(); moduleTips.add(I18n.format("gui.modular_server_assembler.info.total_cpus", installedCPUModules)); moduleTips.add(I18n.format("gui.modular_server_assembler.info.total_rams", installedRAMModules)); moduleTips.add(I18n.format("gui.modular_server_assembler.info.total_calculate_cards", installedCalculateCardModules)); @@ -125,7 +141,7 @@ private void addModuleTips(final int totalInstalledModules, final int installedC } protected void addHardwareBandwidthTips() { - List hardwareBandwidthTips = new ArrayList<>(); + List hardwareBandwidthTips = new ObjectArrayList<>(); int totalHardwareBandwidth = server.getTotalHardwareBandwidth(); int usedHardwareBandwidth = server.getUsedHardwareBandwidth(); hardwareBandwidthTips.add(I18n.format("gui.modular_server_assembler.info.total_hardware_bandwidth", totalHardwareBandwidth)); @@ -169,7 +185,7 @@ protected void addErrorTips(final int installedCPUModules, final List er } protected void addExpectedCalculateTip() { - List tip = new ArrayList<>(); + List tip = new ObjectArrayList<>(); tip.add(I18n.format("gui.modular_server_assembler.calculate.expected")); for (final CalculateType type : CalculateTypes.getAvailableTypes().values()) { @@ -178,7 +194,7 @@ protected void addExpectedCalculateTip() { )); tip.add(I18n.format("gui.modular_server_assembler.calculate.value", type.format(server.calculate( - new CalculateRequest(Double.MAX_VALUE, true, type, CalculateStage.START, server.getOwner(), new ModifierManager(), new HashMap<>())) + new CalculateRequest(Double.MAX_VALUE, true, type, CalculateStage.START, server.getOwner(), new ModifierManager(), new Object2ObjectOpenHashMap<>())) .generated() ), Calculable.formatEfficiency(server.getCalculateAvgEfficiency(type)) diff --git a/src/main/java/github/kasuminova/novaeng/client/hitokoto/HitokotoDeserializer.java b/src/main/java/github/kasuminova/novaeng/client/hitokoto/HitokotoDeserializer.java index aadd728d..4096e11c 100644 --- a/src/main/java/github/kasuminova/novaeng/client/hitokoto/HitokotoDeserializer.java +++ b/src/main/java/github/kasuminova/novaeng/client/hitokoto/HitokotoDeserializer.java @@ -1,6 +1,11 @@ package github.kasuminova.novaeng.client.hitokoto; -import com.google.gson.*; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonPrimitive; import java.lang.reflect.Type; diff --git a/src/main/java/github/kasuminova/novaeng/client/model/ItemModelFileAutoGenerator.java b/src/main/java/github/kasuminova/novaeng/client/model/ItemModelFileAutoGenerator.java index 4147bb10..09dc6c24 100644 --- a/src/main/java/github/kasuminova/novaeng/client/model/ItemModelFileAutoGenerator.java +++ b/src/main/java/github/kasuminova/novaeng/client/model/ItemModelFileAutoGenerator.java @@ -7,7 +7,14 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; -import java.io.*; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; import java.nio.charset.StandardCharsets; public class ItemModelFileAutoGenerator { diff --git a/src/main/java/github/kasuminova/novaeng/client/util/ExJEI.java b/src/main/java/github/kasuminova/novaeng/client/util/ExJEI.java new file mode 100644 index 00000000..09b6eb59 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/client/util/ExJEI.java @@ -0,0 +1,74 @@ +package github.kasuminova.novaeng.client.util; + +import crafttweaker.api.item.IItemStack; +import crafttweaker.api.minecraft.CraftTweakerMC; +import github.kasuminova.novaeng.NovaEngineeringCore; +import github.kasuminova.novaeng.common.util.SimpleItem; +import ic2.core.ref.BlockName; +import ic2.core.ref.ItemName; +import ic2.core.ref.TeBlock; +import ic2.core.util.Util; +import ic2.core.uu.UuGraph; +import ink.ikx.rt.api.mods.jei.IJeiUtils; +import ink.ikx.rt.impl.mods.jei.impl.core.MCJeiPanel; +import ink.ikx.rt.impl.mods.jei.impl.core.MCJeiRecipe; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import net.minecraft.client.resources.I18n; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +@SideOnly(Side.CLIENT) +public class ExJEI{ + + private static final List blockList = Arrays.asList( + "mekanismgenerators","artisanworktables" + ); + + public static void jeiCreate() { + IItemStack pattern_storage = CraftTweakerMC.getIItemStack(BlockName.te.getItemStack(TeBlock.pattern_storage)); + IItemStack replicator = CraftTweakerMC.getIItemStack(BlockName.te.getItemStack(TeBlock.replicator)); + MCJeiPanel JeiP = new MCJeiPanel("replicator_jei", I18n.format("gui." + NovaEngineeringCore.MOD_ID + ".replicator")); + JeiP.setModid("ic2"); + JeiP.recipeCatalysts.addAll( + Arrays.asList( + pattern_storage, + replicator, + CraftTweakerMC.getIItemStack(ItemName.crystal_memory.getItemStack()) + ) + ); + JeiP.background = IJeiUtils.createBackground(80, 32); + JeiP.slots.addAll( + Arrays.asList( + IJeiUtils.createItemSlot(30,0,true,false), + IJeiUtils.createItemSlot(30,0,false,false) + ) + ); + JeiP.icon = replicator; + JeiP.register(); + } + + public static void jeiRecipeRegister() { + Map uniqueKeys = new Object2ObjectOpenHashMap<>(); + + UuGraph.iterator().forEachRemaining(item -> { + ItemStack stack = item.getKey().copy(); + + ItemStack canonicalKey = uniqueKeys.computeIfAbsent(SimpleItem.getInstance(stack), k -> stack); + + if (stack == canonicalKey) { + if (item.getValue() != Double.POSITIVE_INFINITY && !blockList.contains(Objects.requireNonNull(stack.getItem().getRegistryName()).getNamespace())) { + double bValue = item.getValue() / 100000; + new MCJeiRecipe("replicator_jei").addInput(CraftTweakerMC.getIItemStack(stack)).addOutput(CraftTweakerMC.getIItemStack(stack)).addElement(IJeiUtils.createFontInfoElement(I18n.format("gui." + NovaEngineeringCore.MOD_ID + ".replicator.tooltips1", Util.toSiString(bValue, 2)), 0, 20, 0x000000, 0, 0)).build(); + } + } + }); + + uniqueKeys.clear(); + } +} diff --git a/src/main/java/github/kasuminova/novaeng/client/util/TitleUtils.java b/src/main/java/github/kasuminova/novaeng/client/util/TitleUtils.java index 0cfbb274..e47b0103 100644 --- a/src/main/java/github/kasuminova/novaeng/client/util/TitleUtils.java +++ b/src/main/java/github/kasuminova/novaeng/client/util/TitleUtils.java @@ -13,7 +13,7 @@ public class TitleUtils { /** * TODO 喜欢我硬编码吗.jpg */ - public static final String DEFAULT_TITLE = "Nova Engineering: World 1.16.0 by Hikari_Nova | Core Ver: " + NovaEngineeringCore.VERSION; + public static final String DEFAULT_TITLE = "Nova Engineering: World 1.18.2 by Hikari_Nova | Core Ver: " + NovaEngineeringCore.VERSION; public static final String VANILLA_TITLE = "Minecraft 1.12.2"; public static String currentTitle = null; diff --git a/src/main/java/github/kasuminova/novaeng/common/CommonProxy.java b/src/main/java/github/kasuminova/novaeng/common/CommonProxy.java index b7dd9c82..298ea615 100644 --- a/src/main/java/github/kasuminova/novaeng/common/CommonProxy.java +++ b/src/main/java/github/kasuminova/novaeng/common/CommonProxy.java @@ -5,18 +5,44 @@ import github.kasuminova.mmce.common.integration.ModIntegrationAE2; import github.kasuminova.novaeng.NovaEngineeringCore; import github.kasuminova.novaeng.common.adapter.RecipeAdapterExtended; -import github.kasuminova.novaeng.common.container.*; +import github.kasuminova.novaeng.common.container.ContainerECalculatorController; +import github.kasuminova.novaeng.common.container.ContainerEFabricatorController; +import github.kasuminova.novaeng.common.container.ContainerEFabricatorPatternBus; +import github.kasuminova.novaeng.common.container.ContainerEFabricatorPatternSearch; +import github.kasuminova.novaeng.common.container.ContainerEStorageController; +import github.kasuminova.novaeng.common.container.ContainerGeocentricDrill; +import github.kasuminova.novaeng.common.container.ContainerHyperNetTerminal; +import github.kasuminova.novaeng.common.container.ContainerModularServerAssembler; +import github.kasuminova.novaeng.common.container.ContainerSingularityCore; +import github.kasuminova.novaeng.common.enchantment.MagicBreaking; import github.kasuminova.novaeng.common.estorage.EStorageCellHandler; -import github.kasuminova.novaeng.common.handler.*; +import github.kasuminova.novaeng.common.handler.ECalculatorEventHandler; +import github.kasuminova.novaeng.common.handler.EFabricatorEventHandler; +import github.kasuminova.novaeng.common.handler.EStorageEventHandler; +import github.kasuminova.novaeng.common.handler.EnchantmentHandler; +import github.kasuminova.novaeng.common.handler.HyperNetEventHandler; +import github.kasuminova.novaeng.common.handler.HyperNetMachineEventHandler; +import github.kasuminova.novaeng.common.handler.OreHandler; +import github.kasuminova.novaeng.common.handler.WorldLoadedHandler; import github.kasuminova.novaeng.common.hypernet.old.HyperNetTerminal; import github.kasuminova.novaeng.common.hypernet.old.machine.AssemblyLine; import github.kasuminova.novaeng.common.hypernet.old.recipe.HyperNetRecipeManager; import github.kasuminova.novaeng.common.integration.IntegrationCRT; import github.kasuminova.novaeng.common.integration.ic2.IntegrationIC2; import github.kasuminova.novaeng.common.integration.theoneprobe.IntegrationTOP; +import github.kasuminova.novaeng.common.machine.BiogenicSimulationComputer; +import github.kasuminova.novaeng.common.machine.DreamEnergyCore; +import github.kasuminova.novaeng.common.machine.Drills.DifferentWorld; +import github.kasuminova.novaeng.common.machine.Drills.ManaOreDrill; +import github.kasuminova.novaeng.common.machine.Drills.MineralExtractor; +import github.kasuminova.novaeng.common.machine.Drills.OrichalcosDrill; +import github.kasuminova.novaeng.common.machine.Drills.VoidMiner; import github.kasuminova.novaeng.common.machine.GeocentricDrill; import github.kasuminova.novaeng.common.machine.IllumPool; +import github.kasuminova.novaeng.common.machine.MMAltar; +import github.kasuminova.novaeng.common.machine.MaterialSequenceProcessing; import github.kasuminova.novaeng.common.machine.SingularityCore; +import github.kasuminova.novaeng.common.machine.SpaceGenerator; import github.kasuminova.novaeng.common.registry.RegistryBlocks; import github.kasuminova.novaeng.common.registry.RegistryHyperNet; import github.kasuminova.novaeng.common.registry.RegistryItems; @@ -28,7 +54,9 @@ import github.kasuminova.novaeng.common.tile.ecotech.efabricator.EFabricatorPatternBus; import github.kasuminova.novaeng.common.tile.ecotech.estorage.EStorageController; import github.kasuminova.novaeng.common.tile.machine.GeocentricDrillController; +import github.kasuminova.novaeng.common.trait.Register; import github.kasuminova.novaeng.common.util.MachineCoolants; +import github.kasuminova.novaeng.mixin.NovaEngCoreEarlyMixinLoader; import github.kasuminova.novaeng.mixin.ae2.AccessorCellRegistry; import hellfirepvp.modularmachinery.ModularMachinery; import hellfirepvp.modularmachinery.common.base.Mods; @@ -42,6 +70,7 @@ import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.network.IGuiHandler; import net.minecraftforge.fml.common.network.NetworkRegistry; +import net.minecraftforge.fml.common.registry.ForgeRegistries; import javax.annotation.Nullable; import java.util.List; @@ -55,7 +84,9 @@ public CommonProxy() { } public void construction() { - + if (Loader.isModLoaded("ecoaeextension")){ + throw new RuntimeException(NovaEngCoreEarlyMixinLoader.getString("mod.ecoae.warning")); + } } public void preInit() { @@ -66,10 +97,15 @@ public void preInit() { MinecraftForge.EVENT_BUS.register(EStorageEventHandler.INSTANCE); MinecraftForge.EVENT_BUS.register(EFabricatorEventHandler.INSTANCE); MinecraftForge.EVENT_BUS.register(ECalculatorEventHandler.INSTANCE); + MinecraftForge.EVENT_BUS.register(WorldLoadedHandler.INSTANCE); + MinecraftForge.EVENT_BUS.register(EnchantmentHandler.INSTANCE); + MinecraftForge.EVENT_BUS.register(OreHandler.INSTANCE); if (Loader.isModLoaded("ic2")) { IntegrationIC2.preInit(); } + + ForgeRegistries.ENCHANTMENTS.register(MagicBreaking.MAGICBREAKING); } public void init() { @@ -77,27 +113,46 @@ public void init() { new ResourceLocation(ModularMachinery.MODID, "hypernet_terminal"), HyperNetTerminal.class ); - - IntegrationTOP.registerProvider(); + if (Loader.isModLoaded("theoneprobe")) IntegrationTOP.registerProvider(); RecipeAdapterExtended.registerAdapter(); AssemblyLine.registerNetNode(); HyperNetRecipeManager.registerRecipes(); if (Mods.ASTRAL_SORCERY.isPresent() && Mods.BOTANIA.isPresent()) { - RegistryMachineSpecial.registrySpecialMachine(IllumPool.ILLUM_POOL); + RegistryMachineSpecial.registrySpecialMachine(IllumPool.INSTANCE); } if (Mods.GECKOLIB.isPresent()) { - RegistryMachineSpecial.registrySpecialMachine(SingularityCore.SINGULARITY_CORE); + RegistryMachineSpecial.registrySpecialMachine(SingularityCore.INSTANCE); + } + if (Mods.BM2.isPresent()) { + RegistryMachineSpecial.registrySpecialMachine(MMAltar.INSTANCE); + } + RegistryMachineSpecial.registrySpecialMachine(DreamEnergyCore.INSTANCE); + RegistryMachineSpecial.registrySpecialMachine(GeocentricDrill.INSTANCE); + if (Loader.isModLoaded("deepmoblearning")) { + RegistryMachineSpecial.registrySpecialMachine(MaterialSequenceProcessing.INSTANCE); + RegistryMachineSpecial.registrySpecialMachine(BiogenicSimulationComputer.INSTANCE); + } + if (Loader.isModLoaded("avaritia")){ + RegistryMachineSpecial.registrySpecialMachine(SpaceGenerator.INSTANCE); } - RegistryMachineSpecial.registrySpecialMachine(GeocentricDrill.GEOCENTRIC_DRILL); if (Mods.AE2.isPresent()) { List handlers = ((AccessorCellRegistry) (AEApi.instance().registries().cell())).getHandlers(); handlers.add(0, EStorageCellHandler.INSTANCE); } + if (Loader.isModLoaded("immersiveengineering")){ + RegistryMachineSpecial.registrySpecialMachine(MineralExtractor.INSTANCE); + RegistryMachineSpecial.registrySpecialMachine(VoidMiner.INSTANCE); + RegistryMachineSpecial.registrySpecialMachine(DifferentWorld.INSTANCE); + RegistryMachineSpecial.registrySpecialMachine(ManaOreDrill.INSTANCE); + RegistryMachineSpecial.registrySpecialMachine(OrichalcosDrill.INSTANCE); + } + Register.TRAITREGISTER.registerModifiers(); } public void postInit() { MachineCoolants.INSTANCE.init(); HyperNetMachineEventHandler.registerHandler(); + OreHandler.registry(); } public void loadComplete() { diff --git a/src/main/java/github/kasuminova/novaeng/common/adapter/AdapterShredder.java b/src/main/java/github/kasuminova/novaeng/common/adapter/AdapterShredder.java index 2429a621..2a08c7d9 100644 --- a/src/main/java/github/kasuminova/novaeng/common/adapter/AdapterShredder.java +++ b/src/main/java/github/kasuminova/novaeng/common/adapter/AdapterShredder.java @@ -2,18 +2,27 @@ import crafttweaker.util.IEventHandler; import github.kasuminova.mmce.common.event.recipe.RecipeEvent; -import github.kasuminova.novaeng.common.adapter.util.*; +import github.kasuminova.novaeng.common.adapter.util.HashedItemStack; +import github.kasuminova.novaeng.common.adapter.util.IC2MachineRecipeConverter; +import github.kasuminova.novaeng.common.adapter.util.MekCrusherRecipeConverter; +import github.kasuminova.novaeng.common.adapter.util.NCOBasicRecipeConverter; +import github.kasuminova.novaeng.common.adapter.util.PulverizerRecipeConverter; import hellfirepvp.modularmachinery.common.crafting.MachineRecipe; import hellfirepvp.modularmachinery.common.crafting.adapter.RecipeAdapter; import hellfirepvp.modularmachinery.common.crafting.helper.ComponentRequirement; import hellfirepvp.modularmachinery.common.lib.RequirementTypesMM; import hellfirepvp.modularmachinery.common.machine.IOType; import hellfirepvp.modularmachinery.common.modifier.RecipeModifier; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import javax.annotation.Nonnull; -import java.util.*; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Set; public class AdapterShredder extends RecipeAdapter { @@ -26,8 +35,8 @@ public AdapterShredder() { @Nonnull @Override public Collection createRecipesFor(final ResourceLocation owningMachineName, final List modifiers, final List> additionalRequirements, final Map, List>> eventHandlers, final List recipeTooltips) { - Set registeredStack = new HashSet<>(); - List recipes = new LinkedList<>(); + Set registeredStack = new ObjectOpenHashSet<>(); + List recipes = new ObjectArrayList<>(); recipes.addAll(PulverizerRecipeConverter.convert( stack -> createRecipeShell(owningMachineName, HashedItemStack.stackToString(stack), modifiers), stacks -> checkStackRegistered(registeredStack, stacks), modifiers)); @@ -53,7 +62,7 @@ protected MachineRecipe createRecipeShell(final ResourceLocation owningMachineNa } protected boolean checkStackRegistered(Set registeredStack, List stacks) { - List checked = new ArrayList<>(); + List checked = new ObjectArrayList<>(); for (final ItemStack stack : stacks) { if (stack.isEmpty()) { return false; diff --git a/src/main/java/github/kasuminova/novaeng/common/adapter/util/NCOBasicRecipeConverter.java b/src/main/java/github/kasuminova/novaeng/common/adapter/util/NCOBasicRecipeConverter.java index 121b2095..a63648b4 100644 --- a/src/main/java/github/kasuminova/novaeng/common/adapter/util/NCOBasicRecipeConverter.java +++ b/src/main/java/github/kasuminova/novaeng/common/adapter/util/NCOBasicRecipeConverter.java @@ -12,7 +12,12 @@ import hellfirepvp.modularmachinery.common.util.ItemUtils; import nc.recipe.BasicRecipe; import nc.recipe.NCRecipes; -import nc.recipe.ingredient.*; +import nc.recipe.ingredient.ChanceItemIngredient; +import nc.recipe.ingredient.EmptyItemIngredient; +import nc.recipe.ingredient.IFluidIngredient; +import nc.recipe.ingredient.IItemIngredient; +import nc.recipe.ingredient.ItemArrayIngredient; +import nc.recipe.ingredient.OreIngredient; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; diff --git a/src/main/java/github/kasuminova/novaeng/common/block/BlockDreamEnergyPort.java b/src/main/java/github/kasuminova/novaeng/common/block/BlockDreamEnergyPort.java new file mode 100644 index 00000000..5f281cdd --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/block/BlockDreamEnergyPort.java @@ -0,0 +1,66 @@ +package github.kasuminova.novaeng.common.block; + +import github.kasuminova.novaeng.NovaEngineeringCore; +import github.kasuminova.novaeng.common.core.CreativeTabNovaEng; +import github.kasuminova.novaeng.common.tile.TileDreamEnergyPort; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockRenderLayer; +import net.minecraft.util.EnumBlockRenderType; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import sonar.fluxnetworks.common.block.BlockFluxStorage; +import sonar.fluxnetworks.common.registry.RegistryBlocks; +import sonar.fluxnetworks.common.registry.RegistryItems; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.List; + +public class BlockDreamEnergyPort extends BlockFluxStorage { + public static final BlockDreamEnergyPort INSTANCE = new BlockDreamEnergyPort(); + + private BlockDreamEnergyPort() { + super("DreamEnergyPort"); + this.setTranslationKey(NovaEngineeringCore.MOD_ID + '.' + "dream_energy_port"); + this.setCreativeTab(CreativeTabNovaEng.INSTANCE); + RegistryBlocks.BLOCKS.remove(this); + RegistryItems.ITEMS.remove(RegistryItems.ITEMS.size() - 1); + } + + @Nullable + @Override + public TileEntity createTileEntity(World world, IBlockState state) { + return new TileDreamEnergyPort(); + } + + @Override + public int getMaxStorage() { + return Integer.MAX_VALUE; + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, @Nullable World player, List tooltip, ITooltipFlag advanced) { + super.addInformation(stack, player, tooltip, advanced); + tooltip.add(I18n.format("text.dream_energy_port.0")); + tooltip.add(I18n.format("text.dream_energy_port.1")); + } + + @Nonnull + @Override + @SideOnly(Side.CLIENT) + public BlockRenderLayer getRenderLayer() { + return BlockRenderLayer.CUTOUT; + } + + @Nonnull + @Override + public EnumBlockRenderType getRenderType(@Nonnull IBlockState state) { + return EnumBlockRenderType.MODEL; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/block/BlockGeocentricDrillController.java b/src/main/java/github/kasuminova/novaeng/common/block/BlockGeocentricDrillController.java index 8316c42a..f10e254f 100644 --- a/src/main/java/github/kasuminova/novaeng/common/block/BlockGeocentricDrillController.java +++ b/src/main/java/github/kasuminova/novaeng/common/block/BlockGeocentricDrillController.java @@ -10,9 +10,6 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; @@ -23,8 +20,6 @@ import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nonnull; -import java.util.Random; -import java.util.UUID; public class BlockGeocentricDrillController extends BlockController { @@ -46,26 +41,6 @@ public String getLocalizedName() { return I18n.format("tile.novaeng_core.geocentric_drill_controller.name"); } - @Override - public void breakBlock(World worldIn, @Nonnull BlockPos pos, @Nonnull IBlockState state) { - Random rand = worldIn.rand; - TileEntity te = worldIn.getTileEntity(pos); - if (te instanceof GeocentricDrillController ctrl) { - UUID ownerUUID = ctrl.getOwner(); - Item dropped = getItemDropped(state, rand, damageDropped(state)); - ItemStack stackCtrl = new ItemStack(dropped, 1); - if (ownerUUID != null) { - NBTTagCompound tag = new NBTTagCompound(); - tag.setString("owner", ownerUUID.toString()); - stackCtrl.setTagCompound(tag); - } - spawnAsEntity(worldIn, pos, stackCtrl); - } - - // TODO MM warn. - super.breakBlock(worldIn, pos, state); - } - @Override public boolean onBlockActivated(final World worldIn, @Nonnull final BlockPos pos, @Nonnull final IBlockState state, @Nonnull final EntityPlayer playerIn, @Nonnull final EnumHand hand, @Nonnull final EnumFacing facing, final float hitX, final float hitY, final float hitZ) { if (!worldIn.isRemote) { diff --git a/src/main/java/github/kasuminova/novaeng/common/block/BlockModularServerAssembler.java b/src/main/java/github/kasuminova/novaeng/common/block/BlockModularServerAssembler.java index 76df00bd..48b8d8ea 100644 --- a/src/main/java/github/kasuminova/novaeng/common/block/BlockModularServerAssembler.java +++ b/src/main/java/github/kasuminova/novaeng/common/block/BlockModularServerAssembler.java @@ -20,6 +20,7 @@ import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -33,7 +34,7 @@ private BlockModularServerAssembler() { } @Override - public AxisAlignedBB getBoundingBox(final IBlockState state, final IBlockAccess source, final BlockPos pos) { + public @NotNull AxisAlignedBB getBoundingBox(final IBlockState state, final IBlockAccess source, final BlockPos pos) { return super.getBoundingBox(state, source, pos); } diff --git a/src/main/java/github/kasuminova/novaeng/common/block/BlockRedstoneLogicalPort.java b/src/main/java/github/kasuminova/novaeng/common/block/BlockRedstoneLogicalPort.java new file mode 100644 index 00000000..8df36e6a --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/block/BlockRedstoneLogicalPort.java @@ -0,0 +1,142 @@ +package github.kasuminova.novaeng.common.block; + +import github.kasuminova.novaeng.NovaEngineeringCore; +import github.kasuminova.novaeng.common.core.CreativeTabNovaEng; +import hellfirepvp.modularmachinery.common.block.BlockDynamicColor; +import hellfirepvp.modularmachinery.common.data.Config; +import hellfirepvp.modularmachinery.common.tiles.base.ColorableMachineTile; +import hellfirepvp.modularmachinery.common.tiles.base.TileColorableMachineComponent; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.BlockHorizontal; +import net.minecraft.block.SoundType; +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.PropertyInteger; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockRenderLayer; +import net.minecraft.util.EnumBlockRenderType; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.annotation.Nonnull; + +public class BlockRedstoneLogicalPort extends BlockContainer implements BlockDynamicColor { + static final PropertyInteger POWER = PropertyInteger.create("power", 0, 15); + public static BlockRedstoneLogicalPort INSTANCE = new BlockRedstoneLogicalPort(); + + private BlockRedstoneLogicalPort() { + super(Material.IRON); + this.setHardness(2.0F); + this.setResistance(10.0F); + this.setSoundType(SoundType.METAL); + this.setTranslationKey(NovaEngineeringCore.MOD_ID + '.' + "redstone_logical_port"); + this.setRegistryName(NovaEngineeringCore.MOD_ID, "redstone_logical_port"); + this.setHarvestLevel("pickaxe", 1); + this.setCreativeTab(CreativeTabNovaEng.INSTANCE); + } + + @Nonnull + @Override + protected BlockStateContainer createBlockState() { + return new BlockStateContainer.Builder(this).add(POWER).build(); + } + + @Override + public @NotNull IBlockState getStateFromMeta(int meta) { + return this.getDefaultState().withProperty(POWER, meta); + } + + @Override + public int getMetaFromState(IBlockState state) { + return state.getValue(POWER); + } + + @Override + public int getWeakPower(IBlockState blockState, @NotNull IBlockAccess blockAccess, @NotNull BlockPos pos, @NotNull EnumFacing side) { + return blockState.getValue(POWER); + } + + @Override + public boolean canProvidePower(@NotNull IBlockState state) { + return true; + } + + @Override + public boolean canConnectRedstone(@NotNull IBlockState state, @NotNull IBlockAccess world, @NotNull BlockPos pos, EnumFacing side) { + return true; + } + + @Override + public int getStrongPower(@NotNull IBlockState blockState, @NotNull IBlockAccess blockAccess, @NotNull BlockPos pos, EnumFacing side) { + final EnumFacing.Axis currentAxis = side.getAxis(); + if (currentAxis == EnumFacing.Axis.Y) return 0; + + final BlockPos neighborPos = pos.offset(side.getOpposite()); + final IBlockState neighborState = blockAccess.getBlockState(neighborPos); + final Block neighborBlock = neighborState.getBlock(); + + final boolean isComparator = (neighborBlock == Blocks.POWERED_COMPARATOR) || (neighborBlock == Blocks.UNPOWERED_COMPARATOR); + if (!isComparator) return 0; + + final EnumFacing comparatorFacing = neighborState.getValue(BlockHorizontal.FACING); + final boolean isOrthogonalAxis = (comparatorFacing.getAxis() != currentAxis); + + return isOrthogonalAxis ? blockState.getValue(POWER) : 0; + } + + @Nonnull + @Override + @SideOnly(Side.CLIENT) + public BlockRenderLayer getRenderLayer() { + return BlockRenderLayer.CUTOUT; + } + + @Nonnull + @Override + public EnumBlockRenderType getRenderType(@Nonnull IBlockState state) { + return EnumBlockRenderType.MODEL; + } + + @Override + public int getColorMultiplier(IBlockState state, @Nullable IBlockAccess worldIn, @Nullable BlockPos pos, int tintIndex) { + if (worldIn == null || pos == null) { + return Config.machineColor; + } + TileEntity te = worldIn.getTileEntity(pos); + if (te instanceof ColorableMachineTile) { + return ((ColorableMachineTile) te).getMachineColor(); + } + return Config.machineColor; + } + + @Override + public boolean hasTileEntity(@NotNull IBlockState state) { + return true; + } + + @Override + public boolean hasTileEntity() { + return true; + } + + @javax.annotation.Nullable + @Override + public TileEntity createTileEntity(@NotNull World world, @NotNull IBlockState state) { + return new TileColorableMachineComponent(); + } + + @javax.annotation.Nullable + @Override + public TileEntity createNewTileEntity(@NotNull World worldIn, int meta) { + return new TileColorableMachineComponent(); + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/block/BlockSingularityCoreController.java b/src/main/java/github/kasuminova/novaeng/common/block/BlockSingularityCoreController.java index 9312957a..355c82a8 100644 --- a/src/main/java/github/kasuminova/novaeng/common/block/BlockSingularityCoreController.java +++ b/src/main/java/github/kasuminova/novaeng/common/block/BlockSingularityCoreController.java @@ -10,9 +10,6 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; @@ -25,8 +22,6 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.Random; -import java.util.UUID; public class BlockSingularityCoreController extends BlockController { public static final BlockSingularityCoreController INSTANCE = new BlockSingularityCoreController(); @@ -70,26 +65,6 @@ public String getLocalizedName() { return I18n.format("tile.novaeng_core.singularity_core_controller.name"); } - @Override - public void breakBlock(World worldIn, @Nonnull BlockPos pos, @Nonnull IBlockState state) { - Random rand = worldIn.rand; - TileEntity te = worldIn.getTileEntity(pos); - if (te instanceof SingularityCore ctrl) { - UUID ownerUUID = ctrl.getOwner(); - Item dropped = getItemDropped(state, rand, damageDropped(state)); - ItemStack stackCtrl = new ItemStack(dropped, 1); - if (ownerUUID != null) { - NBTTagCompound tag = new NBTTagCompound(); - tag.setString("owner", ownerUUID.toString()); - stackCtrl.setTagCompound(tag); - } - spawnAsEntity(worldIn, pos, stackCtrl); - } - - // TODO MM warn. - super.breakBlock(worldIn, pos, state); - } - @Override public boolean canConnectRedstone(@Nonnull IBlockState state, @Nonnull IBlockAccess world, @Nonnull BlockPos pos, @Nullable EnumFacing side) { return false; diff --git a/src/main/java/github/kasuminova/novaeng/common/block/ecotech/ecalculator/BlockECalculatorController.java b/src/main/java/github/kasuminova/novaeng/common/block/ecotech/ecalculator/BlockECalculatorController.java index 04a9a67b..f667090e 100644 --- a/src/main/java/github/kasuminova/novaeng/common/block/ecotech/ecalculator/BlockECalculatorController.java +++ b/src/main/java/github/kasuminova/novaeng/common/block/ecotech/ecalculator/BlockECalculatorController.java @@ -7,12 +7,8 @@ import hellfirepvp.modularmachinery.common.block.BlockController; import hellfirepvp.modularmachinery.common.machine.DynamicMachine; import hellfirepvp.modularmachinery.common.machine.MachineRegistry; -import hellfirepvp.modularmachinery.common.util.IOInventory; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; @@ -26,8 +22,6 @@ import javax.annotation.Nullable; import java.util.LinkedHashMap; import java.util.Map; -import java.util.Random; -import java.util.UUID; @SuppressWarnings("deprecation") public class BlockECalculatorController extends BlockController { @@ -68,34 +62,6 @@ public IBlockState getActualState(@Nonnull IBlockState state, @Nonnull IBlockAcc return state; } - @Override - public void breakBlock(World worldIn, @Nonnull BlockPos pos, @Nonnull IBlockState state) { - Random rand = worldIn.rand; - TileEntity te = worldIn.getTileEntity(pos); - if (te instanceof ECalculatorController ctrl) { - IOInventory inv = ctrl.getInventory(); - for (int i = 0; i < inv.getSlots(); i++) { - ItemStack stack = inv.getStackInSlot(i); - if (!stack.isEmpty()) { - spawnAsEntity(worldIn, pos, stack); - inv.setStackInSlot(i, ItemStack.EMPTY); - } - } - - UUID ownerUUID = ctrl.getOwner(); - Item dropped = getItemDropped(state, rand, damageDropped(state)); - ItemStack stackCtrl = new ItemStack(dropped, 1); - if (ownerUUID != null) { - NBTTagCompound tag = new NBTTagCompound(); - tag.setString("owner", ownerUUID.toString()); - stackCtrl.setTagCompound(tag); - } - spawnAsEntity(worldIn, pos, stackCtrl); - } - - worldIn.removeTileEntity(pos); - } - @Override public int getLightValue(@Nonnull final IBlockState state) { return state.getValue(FORMED) ? 12 : 4; diff --git a/src/main/java/github/kasuminova/novaeng/common/block/ecotech/ecalculator/BlockECalculatorParallelProc.java b/src/main/java/github/kasuminova/novaeng/common/block/ecotech/ecalculator/BlockECalculatorParallelProc.java index 23750064..45488da5 100644 --- a/src/main/java/github/kasuminova/novaeng/common/block/ecotech/ecalculator/BlockECalculatorParallelProc.java +++ b/src/main/java/github/kasuminova/novaeng/common/block/ecotech/ecalculator/BlockECalculatorParallelProc.java @@ -48,13 +48,13 @@ public int getParallelism() { @Nullable @Override public TileEntity createNewTileEntity(@Nonnull final World worldIn, final int meta) { - return new ECalculatorParallelProc(this.parallelism); + return new ECalculatorParallelProc(); } @Nullable @Override public TileEntity createTileEntity(@Nonnull final World world, @Nonnull final IBlockState state) { - return new ECalculatorParallelProc(this.parallelism); + return new ECalculatorParallelProc(); } @Nonnull diff --git a/src/main/java/github/kasuminova/novaeng/common/block/ecotech/efabricator/BlockEFabricatorController.java b/src/main/java/github/kasuminova/novaeng/common/block/ecotech/efabricator/BlockEFabricatorController.java index f7eabd57..20fcdcaf 100644 --- a/src/main/java/github/kasuminova/novaeng/common/block/ecotech/efabricator/BlockEFabricatorController.java +++ b/src/main/java/github/kasuminova/novaeng/common/block/ecotech/efabricator/BlockEFabricatorController.java @@ -7,12 +7,8 @@ import hellfirepvp.modularmachinery.common.block.BlockController; import hellfirepvp.modularmachinery.common.machine.DynamicMachine; import hellfirepvp.modularmachinery.common.machine.MachineRegistry; -import hellfirepvp.modularmachinery.common.util.IOInventory; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; @@ -26,8 +22,6 @@ import javax.annotation.Nullable; import java.util.LinkedHashMap; import java.util.Map; -import java.util.Random; -import java.util.UUID; @SuppressWarnings("deprecation") public class BlockEFabricatorController extends BlockController { @@ -68,34 +62,6 @@ public IBlockState getActualState(@Nonnull IBlockState state, @Nonnull IBlockAcc return state; } - @Override - public void breakBlock(World worldIn, @Nonnull BlockPos pos, @Nonnull IBlockState state) { - Random rand = worldIn.rand; - TileEntity te = worldIn.getTileEntity(pos); - if (te instanceof EFabricatorController ctrl) { - IOInventory inv = ctrl.getInventory(); - for (int i = 0; i < inv.getSlots(); i++) { - ItemStack stack = inv.getStackInSlot(i); - if (!stack.isEmpty()) { - spawnAsEntity(worldIn, pos, stack); - inv.setStackInSlot(i, ItemStack.EMPTY); - } - } - - UUID ownerUUID = ctrl.getOwner(); - Item dropped = getItemDropped(state, rand, damageDropped(state)); - ItemStack stackCtrl = new ItemStack(dropped, 1); - if (ownerUUID != null) { - NBTTagCompound tag = new NBTTagCompound(); - tag.setString("owner", ownerUUID.toString()); - stackCtrl.setTagCompound(tag); - } - spawnAsEntity(worldIn, pos, stackCtrl); - } - - worldIn.removeTileEntity(pos); - } - @Override public int getLightValue(@Nonnull final IBlockState state) { return state.getValue(FORMED) ? 10 : 0; diff --git a/src/main/java/github/kasuminova/novaeng/common/block/ecotech/estorage/BlockEStorageController.java b/src/main/java/github/kasuminova/novaeng/common/block/ecotech/estorage/BlockEStorageController.java index 5901fa00..4b9752aa 100644 --- a/src/main/java/github/kasuminova/novaeng/common/block/ecotech/estorage/BlockEStorageController.java +++ b/src/main/java/github/kasuminova/novaeng/common/block/ecotech/estorage/BlockEStorageController.java @@ -7,12 +7,8 @@ import hellfirepvp.modularmachinery.common.block.BlockController; import hellfirepvp.modularmachinery.common.machine.DynamicMachine; import hellfirepvp.modularmachinery.common.machine.MachineRegistry; -import hellfirepvp.modularmachinery.common.util.IOInventory; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; @@ -25,8 +21,6 @@ import javax.annotation.Nullable; import java.util.LinkedHashMap; import java.util.Map; -import java.util.Random; -import java.util.UUID; @SuppressWarnings("deprecation") public class BlockEStorageController extends BlockController { @@ -61,34 +55,6 @@ public BlockEStorageController(final String level) { setTranslationKey(NovaEngineeringCore.MOD_ID + '.' + registryName.getPath()); } - @Override - public void breakBlock(World worldIn, @Nonnull BlockPos pos, @Nonnull IBlockState state) { - Random rand = worldIn.rand; - TileEntity te = worldIn.getTileEntity(pos); - if (te instanceof EStorageController ctrl) { - IOInventory inv = ctrl.getInventory(); - for (int i = 0; i < inv.getSlots(); i++) { - ItemStack stack = inv.getStackInSlot(i); - if (!stack.isEmpty()) { - spawnAsEntity(worldIn, pos, stack); - inv.setStackInSlot(i, ItemStack.EMPTY); - } - } - - UUID ownerUUID = ctrl.getOwner(); - Item dropped = getItemDropped(state, rand, damageDropped(state)); - ItemStack stackCtrl = new ItemStack(dropped, 1); - if (ownerUUID != null) { - NBTTagCompound tag = new NBTTagCompound(); - tag.setString("owner", ownerUUID.toString()); - stackCtrl.setTagCompound(tag); - } - spawnAsEntity(worldIn, pos, stackCtrl); - } - - worldIn.removeTileEntity(pos); - } - @Override public int getLightValue(@Nonnull final IBlockState state) { return state.getValue(FORMED) ? 10 : 0; diff --git a/src/main/java/github/kasuminova/novaeng/common/block/ecotech/estorage/prop/DriveStorageType.java b/src/main/java/github/kasuminova/novaeng/common/block/ecotech/estorage/prop/DriveStorageType.java index b05cd889..ff5cd779 100644 --- a/src/main/java/github/kasuminova/novaeng/common/block/ecotech/estorage/prop/DriveStorageType.java +++ b/src/main/java/github/kasuminova/novaeng/common/block/ecotech/estorage/prop/DriveStorageType.java @@ -8,7 +8,8 @@ public enum DriveStorageType implements IStringSerializable { EMPTY("empty"), ITEM("item"), - FLUID("fluid"); + FLUID("fluid"), + GAS("gas"); public static final PropertyEnum STORAGE_TYPE = PropertyEnum.create("storage_type", DriveStorageType.class); private final String name; diff --git a/src/main/java/github/kasuminova/novaeng/common/command/CommandBuilder.java b/src/main/java/github/kasuminova/novaeng/common/command/CommandBuilder.java new file mode 100644 index 00000000..172a44b2 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/command/CommandBuilder.java @@ -0,0 +1,55 @@ +package github.kasuminova.novaeng.common.command; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.BlockPos; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.List; + +public class CommandBuilder extends CommandBase { + public static final CommandBuilder INSTANCE = new CommandBuilder(); + public boolean isTickWork = false; + public boolean isQuarryWork = false; + + private CommandBuilder(){ + + } + + @Override + public @NotNull String getName() { + return "builder_log"; + } + + @Override + public @NotNull String getUsage(@NotNull ICommandSender sender) { + return "Usage: /builder_log [tick|quarry] [true|false]"; + } + + @Override + public void execute(@NotNull MinecraftServer server, @NotNull ICommandSender sender, String @NotNull [] args) { + if (args.length >= 2){ + switch (args[0]){ + case "tick" -> isTickWork = args[1].equals("true"); + case "quarry" -> isQuarryWork = args[1].equals("true"); + } + } + } + + public @NotNull List getTabCompletions(@NotNull MinecraftServer server, @NotNull ICommandSender sender, String[] args, @Nullable BlockPos targetPos) { + if (args.length == 1) { + return getListOfStringsMatchingLastWord(args, + "tick","quarry" + ); + } + if (args.length == 2) { + return getListOfStringsMatchingLastWord(args, + "true","false" + ); + } + return super.getTabCompletions(server, sender, args, targetPos); + } + +} diff --git a/src/main/java/github/kasuminova/novaeng/common/config/NovaEngCoreConfig.java b/src/main/java/github/kasuminova/novaeng/common/config/NovaEngCoreConfig.java index 305258ad..923f8bbc 100644 --- a/src/main/java/github/kasuminova/novaeng/common/config/NovaEngCoreConfig.java +++ b/src/main/java/github/kasuminova/novaeng/common/config/NovaEngCoreConfig.java @@ -12,15 +12,34 @@ @Config(modid = NovaEngineeringCore.MOD_ID, name = NovaEngineeringCore.MOD_ID) public class NovaEngCoreConfig { + @Config.RequiresMcRestart + @Config.Name("javaCheck") + public static boolean javaCheck = true; + @Config.Name("Client") public static final Client CLIENT = new Client(); + @Config.Name("Server") + public static final Server SERVER = new Server(); + public static class Client { @Config.RequiresMcRestart @Config.Name("EnableNovaEngTitle") public boolean enableNovaEngTitle = true; + @Config.RequiresMcRestart + @Config.Name("爆炸") + public boolean piece = true; + + } + + public static class Server{ + + @Config.RequiresMcRestart + @Config.Name("ForceChunkHandler") + public boolean ForceChunkHandler = true; + } /* diff --git a/src/main/java/github/kasuminova/novaeng/common/container/ContainerHyperNetTerminal.java b/src/main/java/github/kasuminova/novaeng/common/container/ContainerHyperNetTerminal.java index 034fe430..f27d4eb3 100644 --- a/src/main/java/github/kasuminova/novaeng/common/container/ContainerHyperNetTerminal.java +++ b/src/main/java/github/kasuminova/novaeng/common/container/ContainerHyperNetTerminal.java @@ -8,6 +8,7 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.SlotItemHandler; +import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; @@ -23,6 +24,7 @@ public ContainerHyperNetTerminal(final TileHyperNetTerminal owner, final EntityP } @Override + @NotNull public ItemStack transferStackInSlot(@Nonnull EntityPlayer playerIn, int index) { ItemStack itemstack = ItemStack.EMPTY; Slot slot = this.inventorySlots.get(index); diff --git a/src/main/java/github/kasuminova/novaeng/common/crafttweaker/util/NovaEngUtils.java b/src/main/java/github/kasuminova/novaeng/common/crafttweaker/util/NovaEngUtils.java index 5e2a5352..6cb6f546 100644 --- a/src/main/java/github/kasuminova/novaeng/common/crafttweaker/util/NovaEngUtils.java +++ b/src/main/java/github/kasuminova/novaeng/common/crafttweaker/util/NovaEngUtils.java @@ -1,9 +1,11 @@ package github.kasuminova.novaeng.common.crafttweaker.util; import crafttweaker.annotations.ZenRegister; +import net.minecraftforge.fml.common.FMLCommonHandler; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; +import java.math.BigInteger; import java.math.RoundingMode; import java.text.DecimalFormat; import java.text.NumberFormat; @@ -12,6 +14,8 @@ @ZenClass("novaeng.NovaEngUtils") public class NovaEngUtils { private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("#,###.##"); + public static final BigInteger BigLongMax = BigInteger.valueOf(Long.MAX_VALUE); + public static boolean isClient = FMLCommonHandler.instance().getEffectiveSide().isClient(); static { DECIMAL_FORMAT.setRoundingMode(RoundingMode.HALF_UP); @@ -53,6 +57,25 @@ public static String formatNumber(long value) { } } + @ZenMethod + public static String formatNumber(BigInteger num) { + final var value = num.toString(); + var BigValue = num.abs(); + long big = BigValue.compareTo(BigLongMax) >= 0 ? Long.MAX_VALUE : BigValue.longValue(); + StringBuilder zf = new StringBuilder(); + if (value.startsWith("-")){ + zf.append("-"); + } + if (big != (Long.MAX_VALUE)){ + return zf.append(formatNumber(big,1)).toString(); + } else { + int cfs = value.length() - 1; + float cft = (1.00f * Integer.parseInt(value.substring(0,3))) / 100; + + return zf.append(cft).append(" * 10 ^ ").append(cfs).toString(); + } + } + @ZenMethod public static String formatNumber(long value, int decimalFraction) { if (value < 1_000L) { diff --git a/src/main/java/github/kasuminova/novaeng/common/enchantment/MagicBreaking.java b/src/main/java/github/kasuminova/novaeng/common/enchantment/MagicBreaking.java new file mode 100644 index 00000000..8de06993 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/enchantment/MagicBreaking.java @@ -0,0 +1,30 @@ +package github.kasuminova.novaeng.common.enchantment; + +import github.kasuminova.novaeng.NovaEngineeringCore; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnumEnchantmentType; +import net.minecraft.inventory.EntityEquipmentSlot; +import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; + +public class MagicBreaking extends Enchantment { + + public static MagicBreaking MAGICBREAKING = new MagicBreaking(); + + public MagicBreaking() { + super(Rarity.VERY_RARE, EnumEnchantmentType.ALL, new EntityEquipmentSlot[]{EntityEquipmentSlot.MAINHAND}); + this.setName("magic_breaking"); + this.setRegistryName(new ResourceLocation(NovaEngineeringCore.MOD_ID, name)); + } + + @Override + public boolean isTreasureEnchantment() + { + return true; + } + + public @NotNull String getId() { + return this.name; + } + +} diff --git a/src/main/java/github/kasuminova/novaeng/common/handler/DreamEnergyPortHandler.java b/src/main/java/github/kasuminova/novaeng/common/handler/DreamEnergyPortHandler.java new file mode 100644 index 00000000..04b78135 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/handler/DreamEnergyPortHandler.java @@ -0,0 +1,90 @@ +package github.kasuminova.novaeng.common.handler; + +import github.kasuminova.novaeng.common.machine.DreamEnergyCore; +import github.kasuminova.novaeng.common.tile.TileDreamEnergyPort; +import hellfirepvp.modularmachinery.common.tiles.base.TileMultiblockMachineController; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import sonar.fluxnetworks.common.connection.transfer.BasicTransferHandler; + +public class DreamEnergyPortHandler extends BasicTransferHandler { + private long removed; + private BlockPos ctrlPos; + private World world; + + public DreamEnergyPortHandler(TileDreamEnergyPort device) { + super(device); + this.ctrlPos = device.getCtrlPos(); + this.world = device.getWorld(); + } + + public void setWorld(World world) { + this.world = world; + } + + public void setCtrlPos(BlockPos ctrlPos) { + this.ctrlPos = ctrlPos; + } + + @Override + public void onCycleStart() { + } + + @Override + public void onCycleEnd() { + this.removed = 0L; + } + + @Override + public void updateTransfers(EnumFacing... enumFacings) { + + } + + public void addToBuffer(long energy) { + if (energy > 0L) { + DreamEnergyCore.receiveEnergy(getCtrl(),1,energy); + ((TileDreamEnergyPort)this.device).markServerEnergyChanged(); + } + } + + public long removeFromBuffer(long energy) { + long a = Math.min(Math.min(energy, this.getBuffer()), Math.max(Long.MAX_VALUE - this.removed,0)); + if (a <= 0L) { + return 0L; + } else { + DreamEnergyCore.extractEnergy(getCtrl(),1,a); + this.removed += a; + ((TileDreamEnergyPort)this.device).markServerEnergyChanged(); + return a; + } + } + + @Override + public long getRequest() { + if (!getCtrlStructureFormed()){ + return 0; + } + return Long.MAX_VALUE; + } + + public TileMultiblockMachineController getCtrl(){ + if (ctrlPos == null || this.world == null){ + return null; + } + if (this.world.getTileEntity(ctrlPos) instanceof TileMultiblockMachineController ctrl) { + if (ctrl.getFoundMachine() != null && ctrl.getFoundMachine().getRegistryName().equals(DreamEnergyCore.REGISTRY_NAME)){ + return ctrl; + } + } + return null; + } + + public boolean getCtrlStructureFormed(){ + var ctrl = getCtrl(); + if (ctrl != null) { + return ctrl.isStructureFormed(); + } + return false; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/handler/EnchantmentHandler.java b/src/main/java/github/kasuminova/novaeng/common/handler/EnchantmentHandler.java new file mode 100644 index 00000000..ad6ee841 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/handler/EnchantmentHandler.java @@ -0,0 +1,52 @@ +package github.kasuminova.novaeng.common.handler; + +import com.google.common.collect.Multimap; +import github.kasuminova.novaeng.common.enchantment.MagicBreaking; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.EntityEquipmentSlot; +import net.minecraft.item.ItemStack; +import net.minecraftforge.event.entity.living.LivingHurtEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.Collection; + +public class EnchantmentHandler { + + public static final EnchantmentHandler INSTANCE = new EnchantmentHandler(); + + @SubscribeEvent + public void onMagicBreaking(LivingHurtEvent event) { + if (event.getEntity().world.isRemote || event.getSource().getTrueSource() == null) { + return; + } + if (event.getSource().getTrueSource() instanceof EntityPlayer player) { + EntityLivingBase entity = event.getEntityLiving(); + ItemStack currentItem = player.getHeldItemMainhand(); + if (entity.getHealth() > 10) { + if (!currentItem.isEmpty() && EnchantmentHelper.getEnchantments(currentItem).containsKey(MagicBreaking.MAGICBREAKING)) { + Multimap mapAttackModifier = currentItem.getAttributeModifiers(EntityEquipmentSlot.MAINHAND); + float attackDamage = 1.0F; + if (!mapAttackModifier.isEmpty()) { + final Collection attackModifiers = mapAttackModifier.get(SharedMonsterAttributes.ATTACK_DAMAGE.getName()); + for (AttributeModifier modifier : attackModifiers) { + attackDamage += (float) modifier.getAmount(); + } + float damage = Math.max(attackDamage, event.getAmount()); + float source = Math.max(entity.getHealth() - damage, 1); + + int i = 0; + while (entity.getHealth() > source && i++ < 1000) { + entity.setHealth(source); + } + + event.setAmount(0); + } + } + } + } + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/handler/OreHandler.java b/src/main/java/github/kasuminova/novaeng/common/handler/OreHandler.java new file mode 100644 index 00000000..e1f25782 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/handler/OreHandler.java @@ -0,0 +1,214 @@ +package github.kasuminova.novaeng.common.handler; + +import crafttweaker.annotations.ZenRegister; +import crafttweaker.api.item.IItemStack; +import crafttweaker.api.minecraft.CraftTweakerMC; +import github.kasuminova.novaeng.NovaEngineeringCore; +import it.unimi.dsi.fastutil.objects.Object2ObjectMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectMaps; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.fml.common.eventhandler.EventPriority; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.oredict.OreDictionary; +import org.jetbrains.annotations.NotNull; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +import java.util.List; +import java.util.Map; +import java.util.Objects; + +@ZenRegister +@ZenClass("novaeng.hypernet.RawOre") +public class OreHandler { + + public static final OreHandler INSTANCE = new OreHandler(); + + private static final String rawOreOD = "rawOre"; + private static final String rawOreGemOD = "rawOreGem"; + private static final String oreOD = "ore"; + private static Map rawOreMap; + private static Map oreMap; + + private OreHandler(){} + + @ZenMethod + public static IItemStack getRawOre(@NotNull IItemStack ore){ + if (rawOreMap.containsKey(OreKey.getKey(CraftTweakerMC.getItemStack(ore)))){ + return CraftTweakerMC.getIItemStack(rawOreMap.get(OreKey.getKey(CraftTweakerMC.getItemStack(ore)))); + } else { + return null; + } + } + + @ZenMethod + public static IItemStack getOre(@NotNull IItemStack ore){ + if (oreMap.containsKey(OreKey.getKey(CraftTweakerMC.getItemStack(ore)))){ + return CraftTweakerMC.getIItemStack(oreMap.get(OreKey.getKey(CraftTweakerMC.getItemStack(ore)))); + } else { + return ore; + } + } + + public static void registry() { + Object2ObjectMap map = new Object2ObjectOpenHashMap<>(); + Object2ObjectMap mapO = new Object2ObjectOpenHashMap<>(); + + for (String odName : OreDictionary.getOreNames()) { + if (odName.startsWith(rawOreOD)) { + if (!OreDictionary.getOres(odName).isEmpty()) { + ItemStack rawOre = OreDictionary.getOres(odName).get(0); + String rawOreName = odName.startsWith(rawOreGemOD) ? + odName.substring(rawOreGemOD.length()) : + odName.substring(rawOreOD.length()); + + final String oreName = oreOD + rawOreName; + if (!OreDictionary.getOres(oreName).isEmpty()) { + var ores = OreDictionary.getOres(oreName); + final ItemStack ODore = OreDictHelper.getPriorityItemFromOreDict(oreName); + for (ItemStack ore : ores) { + var ok = OreKey.getKey(ore); + map.put(ok, rawOre); + mapO.put(ok, ODore); + NovaEngineeringCore.log.info("registered : {}[{}]", ok.toString(), rawOreName); + } + } + } + } + } + + rawOreMap = Object2ObjectMaps.unmodifiable(map); + oreMap = Object2ObjectMaps.unmodifiable(mapO); + } + + @SubscribeEvent(priority = EventPriority.LOW) + public void onHarvestDropsEvent(BlockEvent.HarvestDropsEvent event) { + if (!event.getWorld().isRemote) { + IBlockState blockState = event.getState(); + Block block = blockState.getBlock(); + int meta = block.getMetaFromState(blockState); + final OreKey key = OreKey.getKey(block,meta); + if (rawOreMap.containsKey(key)){ + List drops = event.getDrops(); + drops.clear(); + if (event.isSilkTouching()) { + ItemStack ore = oreMap.get(key).copy(); + ore.setCount(1); + if (drops.isEmpty()) { + drops.add(ore); + } + return; + } + + int fortune = event.getFortuneLevel(); + int random = event.getWorld().rand.nextInt((fortune + 2)); + ItemStack rawOre = rawOreMap.get(key).copy(); + rawOre.setCount(Math.max(random, 1)); + if (drops.isEmpty()){ + drops.add(rawOre); + } + } + } + } + + private final static class OreKey { + private final ItemStack item; + private String toString; + private int hash = -1; + + private OreKey(ItemStack item){ + this.item = item; + } + + public int getMetadata(){ + return item.getMetadata(); + } + + public ResourceLocation getRl(){ + return item.getItem().getRegistryName(); + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof OreKey oreKey)) return false; + return this.getMetadata() == oreKey.getMetadata() && Objects.equals(this.getRl(),oreKey.getRl()); + } + + @Override + public int hashCode() { + if (hash == -1){ + hash = Objects.hash(this.getRl(), this.getMetadata()); + } + return hash; + } + + @Override + public String toString(){ + if (toString == null){ + toString = this.getRl().toString() + ":" + this.getMetadata(); + } + return toString; + } + + public static OreKey getKey(ItemStack itemStack) { + return new OreKey(itemStack); + } + + private static final OreKey redStone = new OreKey(new ItemStack(Blocks.REDSTONE_ORE)); + + public static OreKey getKey(Block block,int meta) { + if (block == Blocks.LIT_REDSTONE_ORE)return redStone; + return new OreKey(new ItemStack(block,1,meta)); + } + + } + + public static class OreDictHelper { + private static final String[] MOD_PRIORITY = { + "minecraft", + "thermalfoundation", + "ic2", + "mekanism", + "immersiveengineering" + }; + + public static ItemStack getPriorityItemFromOreDict(String oreName) { + List oreEntries = OreDictionary.getOres(oreName); + + return switch (oreEntries.size()){ + case 0 -> ItemStack.EMPTY; + case 1 -> oreEntries.get(0).copy(); + default -> { + if ("dimensional_shard_ore".equals(oreName)) { + ItemStack item = oreEntries.get(0).copy(); + item.setItemDamage(0); + yield item; + } + + ItemStack candidates = ItemStack.EMPTY; + + for (String modid : MOD_PRIORITY) { + for (ItemStack stack : oreEntries) { + String itemModID = stack.getItem().getRegistryName().getNamespace(); + if (modid.equals(itemModID)) { + candidates = stack.copy(); + break; + } + } + if (!candidates.isEmpty())break; + } + + var out = candidates.isEmpty() ? oreEntries.get(0).copy() : candidates; + if (out.getItemDamage() == 32767)out.setItemDamage(0); + yield out; + } + }; + } + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/handler/WorldLoadedHandler.java b/src/main/java/github/kasuminova/novaeng/common/handler/WorldLoadedHandler.java new file mode 100644 index 00000000..fa1bafa5 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/handler/WorldLoadedHandler.java @@ -0,0 +1,83 @@ +package github.kasuminova.novaeng.common.handler; + +import com.feed_the_beast.ftblib.lib.data.Universe; +import crafttweaker.annotations.ZenRegister; +import it.unimi.dsi.fastutil.ints.IntLinkedOpenHashSet; +import it.unimi.dsi.fastutil.ints.IntSet; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.math.ChunkPos; +import net.minecraft.world.WorldServer; +import net.minecraftforge.common.DimensionManager; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +import java.util.Map; +import java.util.Random; + +import static github.kasuminova.novaeng.common.config.NovaEngCoreConfig.SERVER; + +@ZenRegister +@ZenClass("novaeng.WorldLoadedHandler") +public class WorldLoadedHandler { + + public static final WorldLoadedHandler INSTANCE = new WorldLoadedHandler(); + static Random random = new Random(); + static final int randomX = random.nextInt(100000) + 150000; + static final int randomY = random.nextInt(100000) + 150000; + public static final ChunkPos chunk = new ChunkPos(randomX, randomY); + int time = 0; + public static final Map map = new Object2ObjectOpenHashMap<>(); + public static final IntSet REGISTERED_DIMENSIONS = new IntLinkedOpenHashSet(); + public static final IntSet ERRORWROLD = new IntLinkedOpenHashSet(); + public static boolean init = true; + + private void request(MinecraftServer server) { + if (init){ + loadWorld(0,1,-1); + init = false; + } else { + REGISTERED_DIMENSIONS.forEach(WorldLoadedHandler::loadWorld); + } + } + + public static void loadWorld(int... id){ + for (int i : id) { + loadWorld(i); + } + } + + @ZenMethod + public static void loadWorld(int id){ + if (ERRORWROLD.contains(id))return; + REGISTERED_DIMENSIONS.add(id); + if (DimensionManager.isDimensionRegistered(id)) { + WorldServer worldServer = DimensionManager.getWorld(id,true); + if (worldServer == null){ + DimensionManager.initDimension(id); + } + if (worldServer != null){ + DimensionManager.keepDimensionLoaded(id,true); + } else { + ERRORWROLD.add(id); + } + } + } + + @SubscribeEvent + public void onServerTick(TickEvent.ServerTickEvent event) { + switch (event.phase){ + case START -> { + if (SERVER.ForceChunkHandler) { + if (time % 100 == 0) { + request(Universe.get().server); + } + ++time; + } + } + } + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/ModularServer.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/ModularServer.java index b4f965ef..a87396a7 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/ModularServer.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/ModularServer.java @@ -1,7 +1,12 @@ package github.kasuminova.novaeng.common.hypernet.computer; import github.kasuminova.novaeng.common.container.slot.AssemblySlotManager; -import github.kasuminova.novaeng.common.hypernet.calculation.*; +import github.kasuminova.novaeng.common.hypernet.calculation.Calculable; +import github.kasuminova.novaeng.common.hypernet.calculation.CalculateReply; +import github.kasuminova.novaeng.common.hypernet.calculation.CalculateRequest; +import github.kasuminova.novaeng.common.hypernet.calculation.CalculateType; +import github.kasuminova.novaeng.common.hypernet.calculation.CalculateTypes; +import github.kasuminova.novaeng.common.hypernet.calculation.modifier.ModifierKeys; import github.kasuminova.novaeng.common.hypernet.computer.assembly.AssemblyInvCPUConst; import github.kasuminova.novaeng.common.hypernet.computer.assembly.AssemblyInvCalculateCardConst; import github.kasuminova.novaeng.common.hypernet.computer.assembly.AssemblyInvExtensionConst; @@ -9,7 +14,6 @@ import github.kasuminova.novaeng.common.hypernet.computer.exception.EnergyDeficitException; import github.kasuminova.novaeng.common.hypernet.computer.exception.EnergyOverloadException; import github.kasuminova.novaeng.common.hypernet.computer.exception.ModularServerException; -import github.kasuminova.novaeng.common.hypernet.calculation.modifier.ModifierKeys; import github.kasuminova.novaeng.common.hypernet.computer.module.ModuleCapacitor; import github.kasuminova.novaeng.common.hypernet.computer.module.ModulePSU; import github.kasuminova.novaeng.common.hypernet.computer.module.ServerModule; @@ -18,11 +22,17 @@ import github.kasuminova.novaeng.common.util.TileItemHandler; import hellfirepvp.modularmachinery.common.tiles.base.TileEntitySynchronized; import hellfirepvp.modularmachinery.common.util.ItemUtils; +import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import javax.annotation.Nonnull; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.PriorityQueue; import java.util.function.Consumer; @SuppressWarnings("unused") @@ -37,10 +47,10 @@ public class ModularServer extends CalculateServer implements ServerInvProvider protected final List extensions = new LinkedList<>(); protected final List calculables = new ArrayList<>(); - protected final Map> calculableTypeSet = new HashMap<>(); + protected final Map> calculableTypeSet = new Object2ObjectLinkedOpenHashMap<>(); - protected final Map, List> typeModulesCache = new HashMap<>(); - protected final Map, List> baseModulesCache = new HashMap<>(); + protected final Map, List> typeModulesCache = new Object2ObjectLinkedOpenHashMap<>(); + protected final Map, List> baseModulesCache = new Object2ObjectLinkedOpenHashMap<>(); protected Consumer onServerInvChangedListener = null; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCPU.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCPU.java index 588f0cf4..d8a18293 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCPU.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCPU.java @@ -1,10 +1,10 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.calculation.CalculateType; import github.kasuminova.novaeng.common.hypernet.calculation.CalculateTypes; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCPUExt.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCPUExt.java index 12bfeb18..3162ab0f 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCPUExt.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCPUExt.java @@ -1,9 +1,9 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.HardwareBandwidthConsumer; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCPUHeatRadiator.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCPUHeatRadiator.java index da3ecfb0..57cdbb44 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCPUHeatRadiator.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCPUHeatRadiator.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculable.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculable.java index 578a43c3..270abd4f 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculable.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculable.java @@ -1,14 +1,14 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.calculation.Calculable; import github.kasuminova.novaeng.common.hypernet.calculation.CalculateRequest; +import github.kasuminova.novaeng.common.hypernet.calculation.modifier.ModifierKeys; +import github.kasuminova.novaeng.common.hypernet.calculation.modifier.ModifierManager; import github.kasuminova.novaeng.common.hypernet.computer.HardwareBandwidthConsumer; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; import github.kasuminova.novaeng.common.hypernet.computer.exception.ModularServerException; -import github.kasuminova.novaeng.common.hypernet.calculation.modifier.ModifierKeys; -import github.kasuminova.novaeng.common.hypernet.calculation.modifier.ModifierManager; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; @ZenRegister diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculateCard.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculateCard.java index fb7e387b..a35a4b41 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculateCard.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculateCard.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; @ZenRegister diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculateCardExt.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculateCardExt.java index f1840dc2..556db577 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculateCardExt.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculateCardExt.java @@ -1,9 +1,9 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.HardwareBandwidthConsumer; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculateCardHeatRadiator.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculateCardHeatRadiator.java index 4cfa88e4..e4c26de1 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculateCardHeatRadiator.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCalculateCardHeatRadiator.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCapacitor.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCapacitor.java index c6c17dee..4c1ff578 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCapacitor.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCapacitor.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCopperPipe.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCopperPipe.java index 37e994ee..3f6cfe1f 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCopperPipe.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleCopperPipe.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleExtensionCard.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleExtensionCard.java index 26e120be..e4cfb085 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleExtensionCard.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleExtensionCard.java @@ -1,10 +1,10 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.Extension; import github.kasuminova.novaeng.common.hypernet.computer.HardwareBandwidthConsumer; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; @ZenRegister diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleExtensionCardExt.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleExtensionCardExt.java index 68714739..bd41d85f 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleExtensionCardExt.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleExtensionCardExt.java @@ -1,9 +1,9 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.HardwareBandwidthConsumer; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleExtensionCardHeatRadiator.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleExtensionCardHeatRadiator.java index e9b6112a..8eaa986a 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleExtensionCardHeatRadiator.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleExtensionCardHeatRadiator.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleGPU.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleGPU.java index 955c42fb..8de6c7e2 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleGPU.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleGPU.java @@ -1,10 +1,10 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.calculation.CalculateType; import github.kasuminova.novaeng.common.hypernet.calculation.CalculateTypes; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleHeatRadiator.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleHeatRadiator.java index abf038a9..ce34bb22 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleHeatRadiator.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleHeatRadiator.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; @ZenRegister diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModulePSU.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModulePSU.java index bd1afc8c..2bc04411 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModulePSU.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModulePSU.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleQuantumCalculateCard.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleQuantumCalculateCard.java index b982690b..ab033ad6 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleQuantumCalculateCard.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleQuantumCalculateCard.java @@ -1,10 +1,10 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.calculation.CalculateType; import github.kasuminova.novaeng.common.hypernet.calculation.CalculateTypes; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleRAM.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleRAM.java index 0f2e5334..ce6ce8f3 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleRAM.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleRAM.java @@ -1,9 +1,9 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.HardwareBandwidthProvider; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleRAMHeatRadiator.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleRAMHeatRadiator.java index 77bd1bc3..91a21b4a 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleRAMHeatRadiator.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleRAMHeatRadiator.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleSoulCalculateCard.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleSoulCalculateCard.java index 7cf58df7..af427e12 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleSoulCalculateCard.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ModuleSoulCalculateCard.java @@ -1,10 +1,10 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.calculation.CalculateType; import github.kasuminova.novaeng.common.hypernet.calculation.CalculateTypes; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ServerModule.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ServerModule.java index e754d28b..3c063abc 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ServerModule.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/ServerModule.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import net.minecraft.nbt.NBTTagCompound; import stanhebben.zenscript.annotations.ZenClass; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleCPUExtBase.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleCPUExtBase.java index c7d38e00..a45a1377 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleCPUExtBase.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleCPUExtBase.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module.base; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.ModuleCPUExt; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.ModuleCPUExt; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleCalculableBase.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleCalculableBase.java index cd22b8e0..4132995f 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleCalculableBase.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleCalculableBase.java @@ -3,10 +3,10 @@ import com.github.bsideup.jabel.Desugar; import crafttweaker.annotations.ZenRegister; import github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils; -import github.kasuminova.novaeng.common.hypernet.computer.module.ServerModule; import github.kasuminova.novaeng.common.hypernet.calculation.Calculable; import github.kasuminova.novaeng.common.hypernet.calculation.CalculateType; import github.kasuminova.novaeng.common.hypernet.calculation.CalculateTypes; +import github.kasuminova.novaeng.common.hypernet.computer.module.ServerModule; import net.minecraft.client.resources.I18n; import stanhebben.zenscript.annotations.ZenClass; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleExtensionCardExtBase.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleExtensionCardExtBase.java index 08993b1d..58a60136 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleExtensionCardExtBase.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleExtensionCardExtBase.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module.base; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.ModuleExtensionCardExt; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.ModuleExtensionCardExt; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleGPUBase.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleGPUBase.java index 8ca9202b..b7defdbc 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleGPUBase.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleGPUBase.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module.base; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.ModuleGPU; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.ModuleGPU; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleQuantumCalculateCardBase.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleQuantumCalculateCardBase.java index 34b0784e..5569f1d4 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleQuantumCalculateCardBase.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleQuantumCalculateCardBase.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module.base; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.ModuleQuantumCalculateCard; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.ModuleQuantumCalculateCard; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleRAMBase.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleRAMBase.java index e09aed3d..29005ccb 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleRAMBase.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/computer/module/base/ModuleRAMBase.java @@ -1,8 +1,8 @@ package github.kasuminova.novaeng.common.hypernet.computer.module.base; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.novaeng.common.hypernet.computer.module.ModuleRAM; import github.kasuminova.novaeng.common.hypernet.computer.ModularServer; +import github.kasuminova.novaeng.common.hypernet.computer.module.ModuleRAM; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/ComputationCenter.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/ComputationCenter.java index 1203e6f4..540ba7de 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/ComputationCenter.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/ComputationCenter.java @@ -21,7 +21,12 @@ import stanhebben.zenscript.annotations.ZenMethod; import stanhebben.zenscript.annotations.ZenSetter; -import java.util.*; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; +import java.util.WeakHashMap; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicReference; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/Database.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/Database.java index a292cd32..a0a732eb 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/Database.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/Database.java @@ -1,5 +1,6 @@ package github.kasuminova.novaeng.common.hypernet.old; +import com.github.bsideup.jabel.Desugar; import crafttweaker.annotations.ZenRegister; import github.kasuminova.mmce.common.event.recipe.FactoryRecipeTickEvent; import github.kasuminova.novaeng.common.hypernet.old.research.ResearchCognitionData; @@ -212,17 +213,8 @@ public Status createStatus() { return new Status(type, storedResearchCognition.size(), researchingCognition.size()); } - @SuppressWarnings("unused") - public static class Status { - private final DatabaseType type; - private final int storedCognition; - private final int researchingCognition; - - public Status(final DatabaseType type, final int storedCognition, final int researchingCognition) { - this.type = type; - this.storedCognition = storedCognition; - this.researchingCognition = researchingCognition; - } + @Desugar + public record Status(DatabaseType type, int storedCognition, int researchingCognition) { public static Status readFromNBT(final NBTTagCompound tag) { if (!tag.hasKey("t") || !tag.hasKey("s") || !tag.hasKey("r")) { @@ -249,17 +241,5 @@ public NBTTagCompound writeToNBT() { public boolean hasDatabaseSpace() { return type.getMaxResearchDataStoreSize() > storedCognition + researchingCognition; } - - public DatabaseType getType() { - return type; - } - - public int getStoredCognition() { - return storedCognition; - } - - public int getResearchingCognition() { - return researchingCognition; - } } } diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/DatabaseType.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/DatabaseType.java index 9fd21770..eaf10077 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/DatabaseType.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/DatabaseType.java @@ -36,7 +36,7 @@ public void registerRecipesAndThreads() { String name = typeName; MachineModifier.addCoreThread(name, FactoryRecipeThread.createCoreThread(DATABASE_WORKING_THREAD_NAME)); - RecipeBuilder.newBuilder(name + "_working", name, 20, 100, false) + RecipeBuilder.newBuilder(name + "_working", name, 20, 100, true) .addEnergyPerTickInput(energyUsage) .addFactoryPreTickHandler(event -> { Database database = NetNodeCache.getCache(event.getController(), Database.class); diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/NetNodeImpl.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/NetNodeImpl.java index 75234bae..05664ca3 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/NetNodeImpl.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/NetNodeImpl.java @@ -1,7 +1,11 @@ package github.kasuminova.novaeng.common.hypernet.old; import crafttweaker.annotations.ZenRegister; -import github.kasuminova.mmce.common.event.recipe.*; +import github.kasuminova.mmce.common.event.recipe.FactoryRecipeStartEvent; +import github.kasuminova.mmce.common.event.recipe.FactoryRecipeTickEvent; +import github.kasuminova.mmce.common.event.recipe.RecipeCheckEvent; +import github.kasuminova.mmce.common.event.recipe.RecipeStartEvent; +import github.kasuminova.mmce.common.event.recipe.RecipeTickEvent; import github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils; import github.kasuminova.novaeng.common.hypernet.old.research.ResearchCognitionData; import hellfirepvp.modularmachinery.common.machine.RecipeThread; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/research/ResearchCognitionData.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/research/ResearchCognitionData.java index 2cd74177..343a50ef 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/research/ResearchCognitionData.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/research/ResearchCognitionData.java @@ -6,6 +6,9 @@ import github.kasuminova.novaeng.common.registry.RegistryHyperNet; import hellfirepvp.modularmachinery.common.util.ItemUtils; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import it.unimi.dsi.fastutil.objects.ObjectList; +import it.unimi.dsi.fastutil.objects.ObjectLists; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.FMLCommonHandler; import stanhebben.zenscript.annotations.ZenClass; @@ -13,7 +16,10 @@ import stanhebben.zenscript.annotations.ZenMethod; import stanhebben.zenscript.annotations.ZenSetter; -import java.util.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; @ZenRegister @@ -33,8 +39,8 @@ public class ResearchCognitionData { private final boolean cycleResearch; private final int maxCycle; - private final List descriptions; - private final List unlockedDescriptions; + private final ObjectList descriptions; + private final ObjectList unlockedDescriptions; private final List dependencies; private final Object2IntOpenHashMap cycleDependencies = new Object2IntOpenHashMap<>(); @@ -45,8 +51,8 @@ public ResearchCognitionData(final String researchName, final float techLevel, final double requiredPoints, final double minComputationPointPerTick, - final List descriptions, - final List unlockedDescriptions, + final ObjectList descriptions, + final ObjectList unlockedDescriptions, final List dependencies) { this.researchName = researchName; @@ -63,8 +69,8 @@ public ResearchCognitionData(final String researchName, this.descriptions = descriptions; this.unlockedDescriptions = unlockedDescriptions; } else { - this.descriptions = new ArrayList<>(); - this.unlockedDescriptions = new ArrayList<>(); + this.descriptions = new ObjectArrayList<>(); + this.unlockedDescriptions = new ObjectArrayList<>(); } } @@ -74,8 +80,8 @@ public ResearchCognitionData(final String researchName, final float techLevel, final double requiredPoints, final double minComputationPointPerTick, - final List descriptions, - final List unlockedDescriptions, + final ObjectList descriptions, + final ObjectList unlockedDescriptions, final List dependencies, final int maxCycle) { @@ -94,8 +100,8 @@ public ResearchCognitionData(final String researchName, this.unlockedDescriptions = unlockedDescriptions; } else { this.translatedName = ""; - this.descriptions = new ArrayList<>(); - this.unlockedDescriptions = new ArrayList<>(); + this.descriptions = new ObjectArrayList<>(); + this.unlockedDescriptions = new ObjectArrayList<>(); } } @@ -122,8 +128,8 @@ public static ResearchCognitionData create(final String researchName, techLevel, requiredPoints, minComputationPointPerTick, - Arrays.asList(descriptions), - Arrays.asList(unlockedDescriptions), + ObjectArrayList.wrap(descriptions), + ObjectArrayList.wrap(unlockedDescriptions), dependencies); } @@ -151,8 +157,8 @@ public static ResearchCognitionData createCycle(final String researchName, techLevel, requiredPoints, minComputationPointPerTick, - Arrays.asList(descriptions), - Arrays.asList(unlockedDescriptions), + ObjectArrayList.wrap(descriptions), + ObjectArrayList.wrap(unlockedDescriptions), dependencies, maxCycle); } @@ -218,7 +224,7 @@ public void setHideByDefault(final boolean hideByDefault) { } public List getDescriptions() { - return Collections.unmodifiableList(descriptions); + return ObjectLists.unmodifiable(descriptions); } @ZenGetter("cycleResearch") diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/research/ResearchStation.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/research/ResearchStation.java index d16a2e80..9b068086 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/research/ResearchStation.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/research/ResearchStation.java @@ -27,6 +27,7 @@ import java.util.Collection; import java.util.Objects; import java.util.UUID; +import java.util.stream.Collectors; /** * TODO: 硬编码喵 @@ -142,6 +143,8 @@ protected void doResearch(final FactoryRecipeTickEvent event, final double consu double baseConsumption = currentResearching.getMinComputationPointPerTick(); consumption = Math.min(baseConsumption, getComputationLeft()); + final short overclockingValue = (short) Math.max(0,event.getController().getCustomDataTag().getShort("overclocking") - 1); + ActiveMachineRecipe activeRecipe = event.getActiveRecipe(); int totalTick = activeRecipe.getTotalTick(); activeRecipe.setTick(Math.max((int) (getProgressPercent() * totalTick) - 1, 0)); @@ -149,15 +152,17 @@ protected void doResearch(final FactoryRecipeTickEvent event, final double consu HyperNetEventHandler.addTickEndAction(() -> doExtraResearch(Math.min( center.getComputationPointGeneration() - center.getComputationPointConsumption(), - Math.min(baseConsumption * 4, getComputationLeft()))) + Math.min(baseConsumption * overclockingValue, getComputationLeft()))) ); } protected void doExtraResearch(final double maxConsumption) { - if (center != null) { - double consumed = center.consumeComputationPoint(maxConsumption); - completedPoints += consumed; - consumption += consumed; + if (maxConsumption > 0) { + if (center != null) { + double consumed = center.consumeComputationPoint(maxConsumption); + completedPoints += consumed; + consumption += consumed; + } } writeResearchProgressToDatabase(); @@ -168,7 +173,9 @@ public void completeRecipe(FactoryRecipeThread thread) { ActiveMachineRecipe recipe = thread.getActiveRecipe(); recipe.setTick(recipe.getTotalTick() + 1); - Collection databases = center.getNode(Database.class); + Collection databases = center.getNode(Database.class).stream() + .filter(Database::isWorking) + .collect(Collectors.toList()); if (databases.isEmpty()) { return; } diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/research/ResearchStationType.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/research/ResearchStationType.java index 896ad78a..4cc24cd7 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/research/ResearchStationType.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/research/ResearchStationType.java @@ -5,7 +5,10 @@ import github.kasuminova.novaeng.common.hypernet.old.base.NetNodeType; import hellfirepvp.modularmachinery.common.integration.crafttweaker.MachineModifier; import hellfirepvp.modularmachinery.common.integration.crafttweaker.RecipeBuilder; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.event.MMEvents; import hellfirepvp.modularmachinery.common.machine.factory.FactoryRecipeThread; +import hellfirepvp.modularmachinery.common.util.SmartInterfaceType; +import net.minecraft.util.text.translation.I18n; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenGetter; import stanhebben.zenscript.annotations.ZenMethod; @@ -57,6 +60,24 @@ public void registerRecipesAndThreads() { ) .setThreadName(RESEARCH_STATION_WORKING_THREAD_NAME) .build(); + MachineModifier.addSmartInterfaceType(name, + SmartInterfaceType.create("overclocking", 1) + .setHeaderInfo("novaeng.hypernet.research_station.overclocking.name") + .setValueInfo(I18n.translateToLocalFormatted("novaeng.hypernet.research_station.overclocking.tooltip.0") + "§a%.0f") + .setFooterInfo("novaeng.hypernet.research_station.overclocking.tooltip.1") + ); + MMEvents.onMachinePostTick(name,event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var nullable = ctrl.getSmartInterfaceData("overclocking"); + short overclocking = nullable == null ? 1 : (short) nullable.getValue(); + if (overclocking < 1) { + nullable.setValue(1); + } else if (overclocking > 5) { + nullable.setValue(5); + } + data.setShort("overclocking",overclocking); + }); } @ZenGetter("maxTechLevel") diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/DataProcessorModule.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/DataProcessorModule.java index 736c8f97..8dc1f437 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/DataProcessorModule.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/DataProcessorModule.java @@ -3,69 +3,43 @@ import crafttweaker.annotations.ZenRegister; import github.kasuminova.mmce.common.upgrade.DynamicMachineUpgrade; import github.kasuminova.mmce.common.upgrade.UpgradeType; -import github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils; import github.kasuminova.novaeng.common.hypernet.old.upgrade.type.ProcessorModuleType; import hellfirepvp.modularmachinery.common.util.MiscUtils; import net.minecraft.client.resources.I18n; import net.minecraft.nbt.NBTTagCompound; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenGetter; -import stanhebben.zenscript.annotations.ZenSetter; import java.util.List; @ZenRegister @ZenClass("novaeng.hypernet.upgrade.ProcessorModuleType") public abstract class DataProcessorModule extends DynamicMachineUpgrade { - protected int durability = 0; - protected int maxDurability = 0; + private static final NBTTagCompound tag = new NBTTagCompound(); public DataProcessorModule(final UpgradeType type) { super(type); } @ZenGetter("energyConsumption") - public abstract int getEnergyConsumption(); + public abstract long getEnergyConsumption(); protected void getEnergyDurabilityTip(final List desc, ProcessorModuleType moduleType) { desc.add(I18n.format("upgrade.data_processor.module.energy.tip", MiscUtils.formatNumber(getEnergyConsumption()) + " RF")); - - if (maxDurability == 0) { - desc.add(I18n.format("upgrade.data_processor.module.durability.unknown.tip", - moduleType.getMinDurability(), moduleType.getMaxDurability())); - } else { - desc.add(I18n.format("upgrade.data_processor.module.durability.tip", - durability, maxDurability, NovaEngUtils.formatPercent(durability, maxDurability))); - } } @Override public void readItemNBT(final NBTTagCompound tag) { - if (tag.hasKey("maxDurability")) { - if (tag.hasKey("durability")) { - durability = tag.getInteger("durability"); - } - maxDurability = tag.getInteger("maxDurability"); - } - } - protected abstract void initDurability(); + } @Override public NBTTagCompound writeItemNBT() { - NBTTagCompound tag = new NBTTagCompound(); - if (maxDurability != 0) { - tag.setInteger("durability", durability); - tag.setInteger("maxDurability", maxDurability); - } return tag; } public void writeNBTToItem() { - if (parentBus != null && isValid()) { - parentBus.markNoUpdateSync(); - } // if (parentStack == null) { // return; // } @@ -91,26 +65,6 @@ public void writeNBTToItem() { // } } - @ZenGetter("durability") - public int getDurability() { - return durability; - } - - @ZenSetter("durability") - public void setDurability(final int durability) { - this.durability = durability; - } - - @ZenGetter("maxDurability") - public int getMaxDurability() { - return maxDurability; - } - - @ZenSetter("maxDurability") - public void setMaxDurability(final int maxDurability) { - this.maxDurability = maxDurability; - } - public boolean upgradeEquals(final Object obj) { if (!(obj instanceof DataProcessorModule)) { return false; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/ProcessorModuleCPU.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/ProcessorModuleCPU.java index d5ef53b9..2ad39c2b 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/ProcessorModuleCPU.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/ProcessorModuleCPU.java @@ -6,7 +6,6 @@ import github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils; import github.kasuminova.novaeng.common.hypernet.old.upgrade.type.ProcessorModuleCPUType; import github.kasuminova.novaeng.common.registry.RegistryHyperNet; -import github.kasuminova.novaeng.common.util.RandomUtils; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; @@ -31,12 +30,7 @@ public static List filter(final Collection upgradeList : upgradeLists) { for (final MachineUpgrade upgrade : upgradeList) { if (upgrade instanceof final ProcessorModuleCPU cpu) { - if (cpu.maxDurability == 0) { - cpu.initDurability(); - } - if (cpu.durability > 0) { - list.add(cpu); - } + list.add(cpu); } } } @@ -44,57 +38,25 @@ public static List filter(final Collection= 0.25F) { - return 1F; - } - - return Math.min(Math.max(durabilityPercent + 0.75F, 0.75F), 1.0F); + return 1.0F; } @Override - public int getEnergyConsumption() { + public long getEnergyConsumption() { return moduleType.getEnergyConsumption(); } - @Override - protected void initDurability() { - int min = moduleType.getMinDurability(); - int max = moduleType.getMaxDurability(); - - maxDurability = min + RandomUtils.nextInt(max - min); - durability = maxDurability; - writeNBTToItem(); - } - @ZenGetter("computationalPointGeneration") public double getComputationPointGeneration() { return moduleType.getComputationPointGeneration(); @@ -104,13 +66,10 @@ public double getComputationPointGeneration() { public List getDescriptions() { List desc = new ArrayList<>(); desc.add(I18n.format("upgrade.data_processor.module.cpu.tip.0")); - desc.add(I18n.format("upgrade.data_processor.module.cpu.tip.1")); - desc.add(I18n.format("upgrade.data_processor.module.cpu.tip.2")); desc.add(I18n.format("upgrade.data_processor.module.cpu.generate", - NovaEngUtils.formatFLOPS(calculate(false, getComputationPointGeneration())), - NovaEngUtils.formatPercent(getEfficiency(), 1.0F)) - ); + NovaEngUtils.formatFLOPS(calculate(false, getComputationPointGeneration())) + )); getEnergyDurabilityTip(desc, moduleType); @@ -122,9 +81,8 @@ public List getBusGUIDescriptions() { List desc = new ArrayList<>(); desc.add(I18n.format("upgrade.data_processor.module.cpu.generate", - NovaEngUtils.formatFLOPS(calculate(false, getComputationPointGeneration())), - NovaEngUtils.formatPercent(getEfficiency(), 1.0F)) - ); + NovaEngUtils.formatFLOPS(calculate(false, getComputationPointGeneration())) + )); getEnergyDurabilityTip(desc, moduleType); @@ -136,8 +94,6 @@ public ProcessorModuleCPU copy(ItemStack parentStack) { ProcessorModuleCPU upgrade = new ProcessorModuleCPU(getType()); upgrade.eventProcessor.putAll(eventProcessor); upgrade.parentStack = parentStack; - upgrade.durability = durability; - upgrade.maxDurability = maxDurability; return upgrade; } diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/ProcessorModuleGPU.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/ProcessorModuleGPU.java index ba0868e4..d76f5c8b 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/ProcessorModuleGPU.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/ProcessorModuleGPU.java @@ -22,34 +22,17 @@ public ProcessorModuleGPU copy(ItemStack parentStack) { ProcessorModuleGPU upgrade = new ProcessorModuleGPU(getType()); upgrade.eventProcessor.putAll(eventProcessor); upgrade.parentStack = parentStack; - upgrade.durability = durability; - upgrade.maxDurability = maxDurability; return upgrade; } - public float getEfficiency() { - if (maxDurability == 0) { - return 1F; - } - float durabilityPercent = (float) durability / maxDurability; - if (durabilityPercent >= 0.5F) { - return 1F; - } - - return Math.min(Math.max(durabilityPercent + 0.5F, 0.5F), 1.0F); - } - @Override public List getDescriptions() { List desc = new ArrayList<>(); desc.add(I18n.format("upgrade.data_processor.module.gpu.tip.0")); - desc.add(I18n.format("upgrade.data_processor.module.gpu.tip.1")); - desc.add(I18n.format("upgrade.data_processor.module.gpu.tip.2")); desc.add(I18n.format("upgrade.data_processor.module.cpu.generate", - NovaEngUtils.formatFLOPS(calculate(false, getComputationPointGeneration())), - NovaEngUtils.formatPercent(getEfficiency(), 1.0F)) - ); + NovaEngUtils.formatFLOPS(calculate(false, getComputationPointGeneration())) + )); getEnergyDurabilityTip(desc, moduleType); diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/ProcessorModuleRAM.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/ProcessorModuleRAM.java index 28e540e3..3705a686 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/ProcessorModuleRAM.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/ProcessorModuleRAM.java @@ -6,7 +6,6 @@ import github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils; import github.kasuminova.novaeng.common.hypernet.old.upgrade.type.ProcessorModuleRAMType; import github.kasuminova.novaeng.common.registry.RegistryHyperNet; -import github.kasuminova.novaeng.common.util.RandomUtils; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; @@ -30,12 +29,7 @@ public static List filter(final Collection upgradeList : upgradeLists) { for (final MachineUpgrade upgrade : upgradeList) { if (upgrade instanceof final ProcessorModuleRAM ram) { - if (ram.maxDurability == 0) { - ram.initDurability(); - } - if (ram.durability > 0) { - list.add(ram); - } + list.add(ram); } } } @@ -43,57 +37,25 @@ public static List filter(final Collection= 0.25F) { - return 1F; - } - - return Math.min(Math.max(durabilityPercent + 0.75F, 0.75F), 1.0F); + return 1.0F; } @Override - public int getEnergyConsumption() { + public long getEnergyConsumption() { return moduleType.getEnergyConsumption(); } - @Override - protected void initDurability() { - int min = moduleType.getMinDurability(); - int max = moduleType.getMaxDurability(); - - maxDurability = min + RandomUtils.nextInt(max - min); - durability = maxDurability; - writeNBTToItem(); - } - @ZenGetter("computationPointGenerationLimit") public double getComputationPointGenerationLimit() { return moduleType.getComputationPointGenerationLimit(); @@ -104,8 +66,6 @@ public ProcessorModuleRAM copy(ItemStack parentStack) { ProcessorModuleRAM upgrade = new ProcessorModuleRAM(getType()); upgrade.eventProcessor.putAll(eventProcessor); upgrade.parentStack = parentStack; - upgrade.durability = durability; - upgrade.maxDurability = maxDurability; return upgrade; } @@ -113,13 +73,10 @@ public ProcessorModuleRAM copy(ItemStack parentStack) { public List getDescriptions() { List desc = new ArrayList<>(); desc.add(I18n.format("upgrade.data_processor.module.ram.tip.0")); - desc.add(I18n.format("upgrade.data_processor.module.ram.tip.1")); - desc.add(I18n.format("upgrade.data_processor.module.ram.tip.2")); desc.add(I18n.format("upgrade.data_processor.module.ram.limit_provision", - NovaEngUtils.formatFLOPS(calculate(false, getComputationPointGenerationLimit())), - NovaEngUtils.formatPercent(getEfficiency(), 1.0F)) - ); + NovaEngUtils.formatFLOPS(calculate(false, getComputationPointGenerationLimit())) + )); getEnergyDurabilityTip(desc, moduleType); @@ -131,9 +88,8 @@ public List getBusGUIDescriptions() { List desc = new ArrayList<>(); desc.add(I18n.format("upgrade.data_processor.module.ram.limit_provision", - NovaEngUtils.formatFLOPS(calculate(false, getComputationPointGenerationLimit())), - NovaEngUtils.formatPercent(getEfficiency(), 1.0F)) - ); + NovaEngUtils.formatFLOPS(calculate(false, getComputationPointGenerationLimit())) + )); getEnergyDurabilityTip(desc, moduleType); return desc; diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleCPUType.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleCPUType.java index ac42f7b9..ed16c5c7 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleCPUType.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleCPUType.java @@ -14,22 +14,31 @@ public class ProcessorModuleCPUType extends ProcessorModuleType { protected final double computationPointGeneration; - public ProcessorModuleCPUType(final int minDurability, - final int maxDurability, - final int energyConsumption, + public ProcessorModuleCPUType(final long energyConsumption, final double computationPointGeneration) { - super(minDurability, maxDurability, energyConsumption); + super(energyConsumption); this.computationPointGeneration = computationPointGeneration; } + /** + * 已经删除耐久相关设定 + */ + @Deprecated @ZenMethod public static ProcessorModuleCPUType create(final int minDurability, final int maxDurability, - final int energyConsumption, + final long energyConsumption, final double computationPointGeneration) { - return new ProcessorModuleCPUType(minDurability, maxDurability, energyConsumption, computationPointGeneration); + return new ProcessorModuleCPUType(energyConsumption, computationPointGeneration); + } + + @ZenMethod + public static ProcessorModuleCPUType create(final long energyConsumption, + final double computationPointGeneration) + { + return new ProcessorModuleCPUType(energyConsumption, computationPointGeneration); } @Override diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleGPUType.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleGPUType.java index bccc0c58..82514449 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleGPUType.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleGPUType.java @@ -11,21 +11,30 @@ @ZenRegister @ZenClass("novaeng.hypernet.upgrade.type.ProcessorModuleGPUType") public class ProcessorModuleGPUType extends ProcessorModuleCPUType { - public ProcessorModuleGPUType(final int minDurability, - final int maxDurability, - final int energyConsumption, + public ProcessorModuleGPUType(final long energyConsumption, final double computationPointGeneration) { - super(minDurability, maxDurability, energyConsumption, computationPointGeneration); - } + super(energyConsumption, computationPointGeneration); + } + /** + * 已经删除耐久相关设定 + */ + @Deprecated @ZenMethod public static ProcessorModuleGPUType createGPUType(final int minDurability, final int maxDurability, - final int energyConsumption, + final long energyConsumption, final double computationPointGeneration) { - return new ProcessorModuleGPUType(minDurability, maxDurability, energyConsumption, computationPointGeneration); + return new ProcessorModuleGPUType(energyConsumption, computationPointGeneration); + } + + @ZenMethod + public static ProcessorModuleGPUType createGPUType(final long energyConsumption, + final double computationPointGeneration) + { + return new ProcessorModuleGPUType(energyConsumption, computationPointGeneration); } @Override diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleRAMType.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleRAMType.java index 2dd3dbee..8a1bed45 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleRAMType.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleRAMType.java @@ -14,22 +14,31 @@ public class ProcessorModuleRAMType extends ProcessorModuleType { private final double computationPointGenerationLimit; - public ProcessorModuleRAMType(final int minDurability, - final int maxDurability, - final int energyConsumption, + public ProcessorModuleRAMType(final long energyConsumption, final double computationPointGenerationLimit) { - super(minDurability, maxDurability, energyConsumption); + super(energyConsumption); this.computationPointGenerationLimit = computationPointGenerationLimit; } + /** + * 已经删除耐久相关设定 + */ + @Deprecated @ZenMethod public static ProcessorModuleRAMType create(final int minDurability, final int maxDurability, - final int energyConsumption, + final long energyConsumption, final double computationPointGenerationLimit) { - return new ProcessorModuleRAMType(minDurability, maxDurability, energyConsumption, computationPointGenerationLimit); + return new ProcessorModuleRAMType(energyConsumption, computationPointGenerationLimit); + } + + @ZenMethod + public static ProcessorModuleRAMType create(final long energyConsumption, + final double computationPointGenerationLimit) + { + return new ProcessorModuleRAMType(energyConsumption, computationPointGenerationLimit); } @Override diff --git a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleType.java b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleType.java index 548654fa..833e8e8c 100644 --- a/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleType.java +++ b/src/main/java/github/kasuminova/novaeng/common/hypernet/old/upgrade/type/ProcessorModuleType.java @@ -8,34 +8,17 @@ @ZenRegister @ZenClass("novaeng.hypernet.upgrade.type.ProcessorModuleType") public abstract class ProcessorModuleType { - protected final int minDurability; - protected final int maxDurability; - protected final int energyConsumption; + protected final long energyConsumption; - public ProcessorModuleType(final int minDurability, - final int maxDurability, - final int energyConsumption) - { - this.minDurability = minDurability; - this.maxDurability = maxDurability; + public ProcessorModuleType(final long energyConsumption) { this.energyConsumption = energyConsumption; } @ZenMethod public abstract ProcessorModuleType register(String typeName, String localizedName, int level); - @ZenGetter("minDurability") - public int getMinDurability() { - return minDurability; - } - - @ZenGetter("maxDurability") - public int getMaxDurability() { - return maxDurability; - } - @ZenGetter("energyConsumption") - public int getEnergyConsumption() { + public long getEnergyConsumption() { return energyConsumption; } } diff --git a/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/ECalculatorInfoProvider.java b/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/ECalculatorInfoProvider.java index e9e863dd..9d3d3452 100644 --- a/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/ECalculatorInfoProvider.java +++ b/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/ECalculatorInfoProvider.java @@ -9,7 +9,12 @@ import github.kasuminova.novaeng.common.tile.ecotech.ecalculator.ECalculatorController; import github.kasuminova.novaeng.common.tile.ecotech.ecalculator.ECalculatorThreadCore; import github.kasuminova.novaeng.common.util.ColorUtils; -import mcjty.theoneprobe.api.*; +import mcjty.theoneprobe.api.ElementAlignment; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.IProbeInfoProvider; +import mcjty.theoneprobe.api.NumberFormat; +import mcjty.theoneprobe.api.ProbeMode; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -17,7 +22,7 @@ import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; -import java.awt.*; +import java.awt.Color; import java.util.List; public class ECalculatorInfoProvider implements IProbeInfoProvider { @@ -77,8 +82,8 @@ private static void processThreadCoreInfo(final IProbeInfo probeInfo, final ECal .progress((int) (percent * 75), 75, probeInfo.defaultProgressStyle() .prefix(progressStr) .filledColor(color) - .alternateFilledColor(darkenColor(color, .8)) - .borderColor(lightenColor(color, .8)) + .alternateFilledColor(darkenColor(color)) + .borderColor(lightenColor(color)) .backgroundColor(0xFF000000) .numberFormat(NumberFormat.NONE) .width(75) @@ -142,8 +147,8 @@ private static void processControllerInfo(final IProbeInfo probeInfo, final ECal .progress((int) (percent * 150), 150, probeInfo.defaultProgressStyle() .prefix(progressStr) .filledColor(color) - .alternateFilledColor(darkenColor(color, .8)) - .borderColor(lightenColor(color, .8)) + .alternateFilledColor(darkenColor(color)) + .borderColor(lightenColor(color)) .backgroundColor(0xFF000000) .numberFormat(NumberFormat.NONE) .width(150) @@ -162,8 +167,8 @@ private static void processControllerInfo(final IProbeInfo probeInfo, final ECal .progress((int) (percent * 100), 100, probeInfo.defaultProgressStyle() .prefix(progressStr) .filledColor(color) - .alternateFilledColor(darkenColor(color, .8)) - .borderColor(lightenColor(color, .8)) + .alternateFilledColor(darkenColor(color)) + .borderColor(lightenColor(color)) .backgroundColor(0xFF000000) .numberFormat(NumberFormat.NONE) .width(100) @@ -211,19 +216,19 @@ private static void processControllerInfo(final IProbeInfo probeInfo, final ECal // Utility methods to darken and lighten colors - private static int darkenColor(int color, double factor) { + private static int darkenColor(int color) { int a = (color >> 24) & 0xFF; - int r = (int) (((color >> 16) & 0xFF) * factor); - int g = (int) (((color >> 8) & 0xFF) * factor); - int b = (int) ((color & 0xFF) * factor); + int r = (int) (((color >> 16) & 0xFF) * 0.8); + int g = (int) (((color >> 8) & 0xFF) * 0.8); + int b = (int) ((color & 0xFF) * 0.8); return (a << 24) | (r << 16) | (g << 8) | b; } - private static int lightenColor(int color, double factor) { + private static int lightenColor(int color) { int a = (color >> 24) & 0xFF; - int r = Math.min(255, (int) (((color >> 16) & 0xFF) / factor)); - int g = Math.min(255, (int) (((color >> 8) & 0xFF) / factor)); - int b = Math.min(255, (int) ((color & 0xFF) / factor)); + int r = Math.min(255, (int) (((color >> 16) & 0xFF) / 0.8)); + int g = Math.min(255, (int) (((color >> 8) & 0xFF) / 0.8)); + int b = Math.min(255, (int) ((color & 0xFF) / 0.8)); return (a << 24) | (r << 16) | (g << 8) | b; } diff --git a/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/EFabricatorInfoProvider.java b/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/EFabricatorInfoProvider.java index 769f744b..c8f46d62 100644 --- a/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/EFabricatorInfoProvider.java +++ b/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/EFabricatorInfoProvider.java @@ -5,13 +5,18 @@ import github.kasuminova.novaeng.common.tile.ecotech.efabricator.EFabricatorController; import github.kasuminova.novaeng.common.tile.ecotech.efabricator.EFabricatorWorker; import github.kasuminova.novaeng.common.util.ColorUtils; -import mcjty.theoneprobe.api.*; +import mcjty.theoneprobe.api.ElementAlignment; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.IProbeInfoProvider; +import mcjty.theoneprobe.api.NumberFormat; +import mcjty.theoneprobe.api.ProbeMode; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -import java.awt.*; +import java.awt.Color; import java.util.Deque; public class EFabricatorInfoProvider implements IProbeInfoProvider { diff --git a/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/EStorageInfoProvider.java b/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/EStorageInfoProvider.java index 6bdaceea..475f5e58 100644 --- a/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/EStorageInfoProvider.java +++ b/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/EStorageInfoProvider.java @@ -8,7 +8,13 @@ import github.kasuminova.novaeng.common.tile.ecotech.estorage.EStorageCellDrive; import github.kasuminova.novaeng.common.tile.ecotech.estorage.EStorageController; import github.kasuminova.novaeng.common.tile.ecotech.estorage.EStorageEnergyCell; -import mcjty.theoneprobe.api.*; +import hellfirepvp.modularmachinery.common.base.Mods; +import mcjty.theoneprobe.api.ElementAlignment; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.IProbeInfoProvider; +import mcjty.theoneprobe.api.NumberFormat; +import mcjty.theoneprobe.api.ProbeMode; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; @@ -70,12 +76,13 @@ private static void processCellDriveInfo(final IProbeInfo probeInfo, final EStor } DriveStorageType type = data.type(); String typeName = "gui.estorage_controller.cell_info." + switch (type) { - case EMPTY -> "unknown"; + case EMPTY -> "empty"; case ITEM -> "item"; case FLUID -> "fluid"; + case GAS -> Mods.MEKENG.isPresent() ? "gas" : "empty"; }; String levelName = switch (level) { - case EMPTY -> "unknown"; + case EMPTY -> "empty"; case A -> "L4"; case B -> "L6"; case C -> "L9"; diff --git a/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/HyperNetInfoProvider.java b/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/HyperNetInfoProvider.java index 1bd591df..0e8429a1 100644 --- a/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/HyperNetInfoProvider.java +++ b/src/main/java/github/kasuminova/novaeng/common/integration/theoneprobe/HyperNetInfoProvider.java @@ -2,14 +2,23 @@ import github.kasuminova.novaeng.NovaEngineeringCore; import github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils; -import github.kasuminova.novaeng.common.hypernet.old.*; +import github.kasuminova.novaeng.common.hypernet.old.ComputationCenter; +import github.kasuminova.novaeng.common.hypernet.old.DataProcessor; +import github.kasuminova.novaeng.common.hypernet.old.Database; +import github.kasuminova.novaeng.common.hypernet.old.NetNode; +import github.kasuminova.novaeng.common.hypernet.old.NetNodeCache; import github.kasuminova.novaeng.common.hypernet.old.research.ResearchCognitionData; import github.kasuminova.novaeng.common.hypernet.old.research.ResearchStation; import github.kasuminova.novaeng.common.registry.RegistryHyperNet; import hellfirepvp.modularmachinery.common.machine.DynamicMachine; import hellfirepvp.modularmachinery.common.tiles.base.TileMultiblockMachineController; import hellfirepvp.modularmachinery.common.util.MiscUtils; -import mcjty.theoneprobe.api.*; +import mcjty.theoneprobe.api.ElementAlignment; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.IProbeInfoProvider; +import mcjty.theoneprobe.api.NumberFormat; +import mcjty.theoneprobe.api.ProbeMode; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; diff --git a/src/main/java/github/kasuminova/novaeng/common/item/ItemBasic.java b/src/main/java/github/kasuminova/novaeng/common/item/ItemBasic.java new file mode 100644 index 00000000..30e129c4 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/item/ItemBasic.java @@ -0,0 +1,59 @@ +package github.kasuminova.novaeng.common.item; + +import github.kasuminova.novaeng.NovaEngineeringCore; +import github.kasuminova.novaeng.common.core.CreativeTabNovaEng; +import github.kasuminova.novaeng.common.enchantment.MagicBreaking; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +public class ItemBasic extends Item { + + protected static Map map = new Object2ObjectOpenHashMap<>(); + + public static List NAMES = Arrays.asList( + MagicBreaking.MAGICBREAKING.getId() + "_stone" + ); + + public ItemBasic(final String name) { + this.setMaxStackSize(1); + this.setCreativeTab(CreativeTabNovaEng.INSTANCE); + this.setRegistryName(new ResourceLocation(NovaEngineeringCore.MOD_ID, name)); + this.setTranslationKey(NovaEngineeringCore.MOD_ID + '.' + name); + } + + public static List getAllItem() { + List ItemBasics = new ObjectArrayList<>(); + for (String name : NAMES){ + final ItemBasic item = new ItemBasic(name); + ItemBasics.add(item); + map.put(name,item); + } + return ItemBasics; + } + + public static ItemBasic getItem(String name) { + return map.get(name); + } + + @SideOnly(Side.CLIENT) + @SuppressWarnings("DataFlowIssue") + protected void addCheckedInformation(ItemStack stack, World world, List lines, ITooltipFlag advancedTooltips){ + int i = 0; + while (I18n.hasKey(this.getTranslationKey() + ".tooltip." + i)){ + lines.add(I18n.format(this.getTranslationKey() + ".tooltip." + i)); + i++; + } + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/item/ItemBlockAngel.java b/src/main/java/github/kasuminova/novaeng/common/item/ItemBlockAngel.java index 1ae2679e..9c57c5df 100644 --- a/src/main/java/github/kasuminova/novaeng/common/item/ItemBlockAngel.java +++ b/src/main/java/github/kasuminova/novaeng/common/item/ItemBlockAngel.java @@ -8,9 +8,14 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; -import net.minecraft.util.*; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -53,14 +58,14 @@ public ActionResult onItemRightClick(@Nonnull final World world, } @Override - public EnumActionResult onItemUse(@Nonnull final EntityPlayer player, - @Nonnull final World worldIn, - @Nonnull final BlockPos _0, - @Nonnull final EnumHand hand, - @Nonnull final EnumFacing facing, - final float hitX, - final float hitY, - final float hitZ) + public @NotNull EnumActionResult onItemUse(@Nonnull final EntityPlayer player, + @Nonnull final World worldIn, + @Nonnull final BlockPos _0, + @Nonnull final EnumHand hand, + @Nonnull final EnumFacing facing, + final float hitX, + final float hitY, + final float hitZ) { EnumFacing playerFacing = player.getAdjustedHorizontalFacing(); BlockPos pos = new BlockPos(player.posX, player.posY + player.eyeHeight, player.posZ); diff --git a/src/main/java/github/kasuminova/novaeng/common/item/ItemHorologiumCompass.java b/src/main/java/github/kasuminova/novaeng/common/item/ItemHorologiumCompass.java new file mode 100644 index 00000000..5eac9749 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/item/ItemHorologiumCompass.java @@ -0,0 +1,63 @@ +package github.kasuminova.novaeng.common.item; + +import hellfirepvp.astralsorcery.common.constellation.distribution.ConstellationSkyHandler; +import hellfirepvp.astralsorcery.common.data.config.Config; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; +import net.minecraft.util.text.TextComponentTranslation; +import net.minecraft.world.World; +import org.jetbrains.annotations.NotNull; + +import java.util.Optional; +import java.util.Random; + +public class ItemHorologiumCompass extends ItemBasic { + + public static ItemHorologiumCompass INSTANCE = new ItemHorologiumCompass(); + + private ItemHorologiumCompass(){ + super("horologium_compass"); + } + + private static final long dayTime = Config.dayLength; + private static final int cycle = 36; + + @Override + @NotNull + public ActionResult onItemRightClick(@NotNull World world, @NotNull EntityPlayer player, @NotNull EnumHand hand) { + if (!world.isRemote) return super.onItemRightClick(world, player, hand); + + Optional testSeed = ConstellationSkyHandler.getInstance().getSeedIfPresent(world); + if (testSeed.isPresent()) { + int actualDay = getActualDay(world, testSeed.get()); + player.sendMessage(new TextComponentTranslation("tile.horologium_compass.success", actualDay)); + player.getCooldownTracker().setCooldown(player.getHeldItem(hand).getItem(), 1200); + } + + return new ActionResult<>(EnumActionResult.SUCCESS, player.getHeldItem(hand)); + } + + private static int getActualDay(@NotNull World world, long seed) { + Random rand = new Random(seed); + for (int i = 0; i < 10 + rand.nextInt(10); i++) rand.nextLong(); // 随机扰动 + + int r = rand.nextInt(cycle); + + if (r >= 18) { + r -= cycle; + } + + long day = world.getWorldTime() / dayTime; + long elapsedDay = day / cycle; + int OffsetDay = (cycle - r) % cycle; + int actualDay = (int) (elapsedDay * cycle + OffsetDay - day); + if (actualDay < 0) { + actualDay += 36; + } + return actualDay; + } + +} diff --git a/src/main/java/github/kasuminova/novaeng/common/item/estorage/EStorageCellGas.java b/src/main/java/github/kasuminova/novaeng/common/item/estorage/EStorageCellGas.java new file mode 100644 index 00000000..4098ccfc --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/item/estorage/EStorageCellGas.java @@ -0,0 +1,41 @@ +package github.kasuminova.novaeng.common.item.estorage; + +import appeng.api.AEApi; +import appeng.api.storage.IStorageChannel; +import com.mekeng.github.common.me.data.IAEGasStack; +import com.mekeng.github.common.me.storage.IGasStorageChannel; +import github.kasuminova.novaeng.NovaEngineeringCore; +import github.kasuminova.novaeng.common.block.ecotech.estorage.prop.DriveStorageLevel; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import org.jetbrains.annotations.NotNull; + +public class EStorageCellGas extends EStorageCell { + + public static final EStorageCellGas LEVEL_A = new EStorageCellGas(DriveStorageLevel.A, 16, 4); + public static final EStorageCellGas LEVEL_B = new EStorageCellGas(DriveStorageLevel.B, 64, 16); + public static final EStorageCellGas LEVEL_C = new EStorageCellGas(DriveStorageLevel.C,256, 64); + + public EStorageCellGas(final DriveStorageLevel level, final int millionBytes, final int byteMultiplier) { + super(level, millionBytes, byteMultiplier); + setRegistryName(new ResourceLocation(NovaEngineeringCore.MOD_ID, "estorage_cell_gas_" + millionBytes + "m")); + setTranslationKey(NovaEngineeringCore.MOD_ID + '.' + "estorage_cell_gas_" + millionBytes + "m"); + } + + @Override + public int getTotalTypes(@NotNull ItemStack itemStack) { + return 25; + } + + @Override + public int getBytesPerType(@NotNull ItemStack itemStack) { + return byteMultiplier * 1024; + } + + + @NotNull + @Override + public IStorageChannel getChannel() { + return AEApi.instance().storage().getStorageChannel(IGasStorageChannel.class); + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/BiogenicSimulationComputer.java b/src/main/java/github/kasuminova/novaeng/common/machine/BiogenicSimulationComputer.java new file mode 100644 index 00000000..f2668f2d --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/machine/BiogenicSimulationComputer.java @@ -0,0 +1,282 @@ +package github.kasuminova.novaeng.common.machine; + +import crafttweaker.CraftTweakerAPI; +import crafttweaker.api.item.IItemStack; +import crafttweaker.api.minecraft.CraftTweakerMC; +import github.kasuminova.mmce.common.event.client.ControllerGUIRenderEvent; +import github.kasuminova.mmce.common.helper.IMachineController; +import github.kasuminova.novaeng.common.crafttweaker.hypernet.HyperNetHelper; +import hellfirepvp.modularmachinery.ModularMachinery; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.MachineModifier; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.RecipeBuilder; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.RecipeModifierBuilder; +import hellfirepvp.modularmachinery.common.machine.DynamicMachine; +import hellfirepvp.modularmachinery.common.machine.factory.FactoryRecipeThread; +import mustapelto.deepmoblearning.common.DMLRegistry; +import mustapelto.deepmoblearning.common.util.DataModelHelper; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; + +import java.util.ArrayList; +import java.util.List; + +import static github.kasuminova.novaeng.common.crafttweaker.expansion.RecipePrimerHyperNet.requireComputationPoint; +import static github.kasuminova.novaeng.common.util.RecipePrimerEx.setLore; + +public class BiogenicSimulationComputer implements MachineSpecial { + private static final String MachineID = "biogenic_simulation_computer"; + public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, MachineID); + public static final BiogenicSimulationComputer INSTANCE = new BiogenicSimulationComputer(); + final IItemStack clay = CraftTweakerMC.getIItemStack(new ItemStack(DMLRegistry.ITEM_POLYMER_CLAY)); + + private static final String[] inscriberModels = { + "数位演算模块-α", + "数位演算模块-β", + "数位演算模块-δ", + "数位演算模块-Ω" + }; + + @Override + public void init(final DynamicMachine machine) { + MachineModifier.setMaxThreads(MachineID, 0); + for (String i : inscriberModels) { + MachineModifier.addCoreThread(MachineID, FactoryRecipeThread.createCoreThread(i)); + } + HyperNetHelper.proxyMachineForHyperNet(MachineID); + + for (int i = 0; i < inscriberModels.length; i++) { + final var ysqname = "ysqname" + i; + final var ysqddcs = "ysqddcs" + i; + final String prepare = "prepare" + i; + + var r = RecipeBuilder.newBuilder("moxll" + i, MachineID, 1, 0) + .addItemInput(CraftTweakerAPI.oreDict.get("dataModel")).setTag("dataModel") + .setNBTChecker((ctrl, iitem) -> { + var item = CraftTweakerMC.getItemStack(iitem); + var data = ctrl.getController().getCustomDataTag(); + + data.setTag(prepare, item.writeToNBT(new NBTTagCompound())); + return true; + }) + .addPreCheckHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + + if (data.hasKey(ysqname)) { + event.setFailed("数据模块注入完成,可以开始演算"); + + for (int ii = 0; ii < inscriberModels.length; ii++) { + data.removeTag("prepare" + ii); + } + } + }) + .addFactoryStartHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + + if (!data.hasKey(ysqname)) { + var itemData = (NBTTagCompound) data.getTag(prepare); + var preItem = new ItemStack(itemData); + int tier = DataModelHelper.getTier(preItem); + int dataCount = DataModelHelper.getCurrentTierDataCount(preItem); + int tierend = (tier <= 1) ? 32 * tier + dataCount : dataCount + (tier - 1) * 10000 + 32; + + data.setTag(ysqname, itemData); + data.setLong(ysqddcs, tierend); + + for (int ii = 0; ii < inscriberModels.length; ii++) { + data.removeTag("prepare" + ii); + } + } + }) + .addOutput(CraftTweakerMC.getIItemStack(new ItemStack(DMLRegistry.ITEM_DATA_MODEL_BLANK))) + .setParallelized(false) + .addRecipeTooltip("将数据模型写入数位演算模块", "请将数据模型放入控制器正上方的微型物品输入仓中") + .setThreadName(inscriberModels[i]); + if (i != 0) { + r.setLoadJEI(false); + } + r.build(); + + var o = RecipeBuilder.newBuilder("moni" + i, MachineID, 60, 0) + .addEnergyPerTickInput(1000000) + .addItemInput(clay) + .addPreCheckHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var parallelism = Math.max(data.getInteger("parallelism"), 1); + + if (!data.hasKey(ysqname)) { + event.setFailed("没有数据模型!"); + return; + } + + event.getActiveRecipe().setMaxParallelism(parallelism); + }) + .addFactoryStartHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var ysqddcss = data.getInteger(ysqddcs); + var bl = event.getFactoryRecipeThread(); + if (ysqddcss < 32) { + bl.addModifier("duration", RecipeModifierBuilder.create("modularmachinery:duration", "input", 60, 1, false).build()); + bl.addModifier("energy", RecipeModifierBuilder.create("modularmachinery:energy", "input", 20, 1, false).build()); + } + }) + .addItemOutput(CraftTweakerAPI.oreDict.get("pristine")).addItemModifier((ctrl, Item) -> outputPristineMatter(ctrl,ysqname,ysqddcs)) + .addItemOutput(CraftTweakerAPI.oreDict.get("livingMatter")).addItemModifier((ctrl, Item) -> outputLivingMatter(ctrl, ysqname)) + .addFactoryFinishHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var bx = event.getFactoryRecipeThread().getActiveRecipe().getParallelism(); + + data.setLong(ysqddcs, data.getLong(ysqddcs) + bx); + }) + .addRecipeTooltip( + "使用数位演算模块进行模拟,并且输出物质", + "概率继承自模拟室,并且每个等级额外提高2%", + "等级为0的模型需要60倍的时间和20倍能量来进行初步推算" + ) + .setThreadName(inscriberModels[i]); + if (i != 0) { + o.setLoadJEI(false); + } + requireComputationPoint(o, 100.0F).build(); + + var d = RecipeBuilder.newBuilder("mxdc" + i, MachineID, 1) + .addItemInput(CraftTweakerMC.getIItemStack(new ItemStack(DMLRegistry.ITEM_DATA_MODEL_BLANK))) + .addPreCheckHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + + if (!data.hasKey(ysqname)) { + event.setFailed("没有可以导出的数据"); + } + }) + .addOutput(CraftTweakerAPI.oreDict.get("dataModel")); + setLore(d, "§6提取出写入的模型") + .addItemModifier((ctrl, Item) -> outputdata(ctrl, ysqname,ysqddcs)) + .setParallelized(false) + .addRecipeTooltip("将数据模型从数位演算模块导出", "会先从哪个数据里导出?谁知道呢,试试不就知道了") + .setThreadName(inscriberModels[i]); + if (i > 0) { + d.setLoadJEI(false); + } + d.build(); + } + + machine.addMachineEventHandler(ControllerGUIRenderEvent.class,event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + List info = new ArrayList<>(); + + for (int i = 0; i < inscriberModels.length; i++) { + var itemData = data.getTag("ysqname" + i); + String ysqname; + if (itemData == null){ + ysqname = "暂无"; + } else { + var item = new ItemStack((NBTTagCompound) itemData); + ysqname = item.getItem().getItemStackDisplayName(item).replaceAll("[(].*",""); + } + var ysqddcs = data.getLong("ysqddcs" + i); + info.add("当前记录模型:" + ysqname); + info.add("当前迭代次数:" + ysqddcs); + } + + event.setExtraInfo(info.toArray(new String[0])); + }); + } + + @Override + public ResourceLocation getRegistryName() { + return REGISTRY_NAME; + } + + private IItemStack outputLivingMatter(IMachineController ctrl, String ysqnamess) { + var data = ctrl.getController().getCustomDataTag(); + var name = data.getTag(ysqnamess); + var item = DataModelHelper.getDataModelMetadata(new ItemStack((NBTTagCompound) name)); + + return item.map(dataModel -> CraftTweakerMC.getIItemStack(dataModel.getLivingMatter())).orElse(null); + } + + private IItemStack outputPristineMatter(IMachineController ctrl, String ysqnamess,String ysqddcss) { + var data = ctrl.getController().getCustomDataTag(); + var name = data.getTag(ysqnamess); + var ysqddcs = data.getLong(ysqddcss); + var world = ctrl.getController().getWorld(); + var Random = world.rand.nextInt(99) + 1; + var item = DataModelHelper.getDataModelMetadata(new ItemStack((NBTTagCompound) name)); + + boolean itemsl; + if (ysqddcs >= 32){ + if (ysqddcs < 10032){ + itemsl = 6 >= Random; + } else if (ysqddcs < 20032){ + itemsl = 12 >= Random; + } else if (ysqddcs < 30032){ + itemsl = 14 >= Random; + } else { + itemsl = 20 >= Random; + } + } else { + itemsl = false; + } + + if (item.isPresent()){ + if (itemsl) { + return CraftTweakerMC.getIItemStack(item.get().getPristineMatter()); + } else { + return null; + } + } else { + return clay.amount(1); + } + } + + private IItemStack outputdata(IMachineController ctrl, String ysqnamess, String ysqddcss) { + var data = ctrl.getController().getCustomDataTag(); + var name = data.getTag(ysqnamess); + var ysqddcs = data.getLong(ysqddcss); + + var tiers = 0; + var dataCounts = 0; + + if (ysqddcs < 32) { + tiers = 0; + dataCounts = (int) ysqddcs; + } else if (ysqddcs < 10032){ + tiers = 1; + dataCounts = (int) (ysqddcs - 32); + } else if (ysqddcs < 20032){ + tiers = 2; + dataCounts = (int) (ysqddcs - 10032); + } else if (ysqddcs < 30032){ + tiers = 3; + dataCounts = (int) (ysqddcs - 20032); + } else { + tiers = 4; + if (ysqddcs > 2000000000){ + dataCounts = 2000000000; + } else { + dataCounts = (int)ysqddcs; + } + } + + data.removeTag(ysqnamess); + data.removeTag(ysqddcss); + + var item = new ItemStack((NBTTagCompound) name); + if (!item.hasTagCompound()){ + item.setTagCompound(new NBTTagCompound()); + } + NBTTagCompound nbt = item.getTagCompound(); + nbt.setLong("totalSimulationCount",ysqddcs); + nbt.setInteger("tier",tiers); + nbt.setInteger("dataCount",dataCounts); + + return CraftTweakerMC.getIItemStack(item); + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/DreamEnergyCore.java b/src/main/java/github/kasuminova/novaeng/common/machine/DreamEnergyCore.java new file mode 100644 index 00000000..01551e48 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/machine/DreamEnergyCore.java @@ -0,0 +1,326 @@ +package github.kasuminova.novaeng.common.machine; + +import crafttweaker.annotations.ZenRegister; +import crafttweaker.api.world.IBlockPos; +import github.kasuminova.mmce.common.event.Phase; +import github.kasuminova.mmce.common.event.client.ControllerGUIRenderEvent; +import github.kasuminova.mmce.common.event.machine.MachineStructureUpdateEvent; +import github.kasuminova.mmce.common.event.machine.MachineTickEvent; +import github.kasuminova.mmce.common.helper.IMachineController; +import github.kasuminova.novaeng.common.tile.TileDreamEnergyPort; +import github.kasuminova.novaeng.common.util.FixedSizeDeque; +import github.kasuminova.novaeng.common.util.IBlockPosEx; +import hellfirepvp.modularmachinery.ModularMachinery; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.RecipeBuilder; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.RecipeModifierBuilder; +import hellfirepvp.modularmachinery.common.machine.DynamicMachine; +import hellfirepvp.modularmachinery.common.machine.factory.FactoryRecipeThread; +import hellfirepvp.modularmachinery.common.tiles.base.TileMultiblockMachineController; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +import java.math.BigInteger; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import static github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils.BigLongMax; +import static github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils.formatNumber; +import static github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils.isClient; + +@ZenRegister +@ZenClass("novaeng.DreamEnergyCore") +public class DreamEnergyCore implements MachineSpecial{ + public static final String MachineID = "dream_energy_core"; + public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, MachineID); + public static final DreamEnergyCore INSTANCE = new DreamEnergyCore(); + private static final Map>> map = new ConcurrentHashMap<>(); + private static final Map ENERGY_STORED_CACHE = new ConcurrentHashMap<>(); + + private static final int MinuteScale = 30; + //最小传输速度,按倍计。 + private static float minSpeed = 0.01f; + //最大传输速度,按倍计。 + private static int maxSpeed = 100000; + //基础输入输出速度。能量输入输出速度计算方法为:defaultTransferAmount * speed,其中 speed 可由玩家控制。 + private static long defaultTransferAmount = 100000000; + + private static IBlockPos facePos; + + @ZenMethod + public static void setFacePos(IBlockPos facePos) { + DreamEnergyCore.facePos = facePos; + } + + @ZenMethod + public static long setDefaultTransferAmount(long varue){ + defaultTransferAmount = varue; + return defaultTransferAmount; + } + + @ZenMethod + public static float setMinSpeed(float varue){ + minSpeed = varue; + return minSpeed; + } + + @ZenMethod + public static int setMaxSpeed(int varue){ + maxSpeed = varue; + return maxSpeed; + } + + @Override + public ResourceLocation getRegistryName() { + return REGISTRY_NAME; + } + + @Override + public void init(DynamicMachine machine) { + SInit(machine); + if (isClient) { + CInit(machine); + } + } + + public void SInit(DynamicMachine machine){ + machine.addMachineEventHandler(MachineTickEvent.class,event -> { + if (event.phase == Phase.START) { + var ctrl = event.getController(); + var world = ctrl.getWorld(); + if (world.getWorldTime() % (1200 / MinuteScale) == 0) { + var data = ctrl.getCustomDataTag(); + var energyStored = data.getString("energyStored").isEmpty() ? "0" : data.getString("energyStored"); + getEnergyInfo(world, ctrl.getPos()).addFirst(energyStored); + data.setString("chance", change(ctrl,energyStored)); + } + } + }); + machine.addMachineEventHandler(MachineStructureUpdateEvent.class, event -> { + TileMultiblockMachineController ctrl = event.getController(); + ctrl.setWorkMode(TileMultiblockMachineController.WorkMode.SEMI_SYNC); + BlockPos facePos = ctrl.getPos().up(); + if (DreamEnergyCore.facePos != null){ + facePos = IBlockPosEx.createPosByFacing(ctrl.getPos(),ctrl.getControllerRotation(), DreamEnergyCore.facePos.getX(), DreamEnergyCore.facePos.getY(), DreamEnergyCore.facePos.getZ()); + } + if (ctrl.getWorld().getTileEntity(facePos) instanceof TileDreamEnergyPort tdep){ + tdep.setCtrlPos(ctrl.getPos()); + ctrl.getCustomDataTag().setBoolean("wireless",true); + } else { + ctrl.getCustomDataTag().setBoolean("wireless",false); + } + }); + + var inputThreadName = "梦之收集者"; + machine.addCoreThread(FactoryRecipeThread.createCoreThread(inputThreadName)); + var outputThreadName = "梦之释放者"; + machine.addCoreThread(FactoryRecipeThread.createCoreThread(outputThreadName)); + + // 输出配方 + RecipeBuilder.newBuilder("extract", MachineID, 1, 1, true) + .addEnergyPerTickOutput(defaultTransferAmount) + .addPreCheckHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + if (data.getBoolean("wireless")){ + event.setFailed("当前处于通量模式"); + return; + } + var speed = Math.max(1.0f,data.getFloat("speed")); + if (!canExtract(data, speed)) { + event.setFailed("内部能量储量不足!"); + return; + } + ctrl.addPermanentModifier("extract", RecipeModifierBuilder.create("modularmachinery:energy", "output", speed, 1, false).build()); + }) + .addFactoryFinishHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var speed = Math.max(1.0f,data.getFloat("speed")); + extractEnergy(data, speed, defaultTransferAmount); + ctrl.markNoUpdateSync(); + }) + .setParallelized(false) + .addRecipeTooltip("由梦之收集者运行。", "在智能数据接口处修改速度。") + .addSmartInterfaceDataInput("speed", minSpeed, maxSpeed) + .setThreadName(outputThreadName) + .build(); + + // 输入配方 + RecipeBuilder.newBuilder("receive", MachineID, 1, 2, true) + .addEnergyPerTickInput(defaultTransferAmount) + .addPreCheckHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + if (data.getBoolean("wireless")){ + event.setFailed("当前处于通量模式"); + } + var speed = Math.max(1.0f,data.getFloat("speed")); + ctrl.addPermanentModifier("receive", RecipeModifierBuilder.create("modularmachinery:energy", "input", speed, 1, false).build()); + }) + .addFactoryPreTickHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var speed = Math.max(1.0f,data.getFloat("speed")); + ctrl.addPermanentModifier("receive", RecipeModifierBuilder.create("modularmachinery:energy", "input", speed, 1, false).build()); + }) + .addFactoryPostTickHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var speed = Math.max(1.0f,data.getFloat("speed")); + receiveEnergy(data, speed,defaultTransferAmount); + ctrl.markNoUpdateSync(); + }) + .setParallelized(false) + .addRecipeTooltip("由梦之释放者运行。", "在智能数据接口处修改速度。") + .addSmartInterfaceDataInput("speed", minSpeed, maxSpeed) + .setThreadName(inputThreadName) + .build(); + } + + @SideOnly(Side.CLIENT) + public void CInit(DynamicMachine machine){ + machine.addMachineEventHandler(ControllerGUIRenderEvent.class, event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var speed = data.hasKey("speed") ? data.getFloat("speed") : 1.0f; + var energyStored = data.getString("energyStored").isEmpty() ? "0":data.getString("energyStored"); + var chance = data.getString("chance"); + + String[] info = { + "§b/////////// 梦之管理者 ///////////", + "§b能量储存:§a" + formatNumber(getBigInt(energyStored)) + " RF", + data.getBoolean("wireless") ? "§b输入输出速度:#FF6347-FFA54F-FFFF00-7FFF00-40E0D0-00BFFFInfinity" : "§b输入输出速度:§a" + formatNumber((long) (defaultTransferAmount * speed),1) + " RF/t", + "§b一分钟内平均交互速度:§a" + (chance.isEmpty() ? "0" : chance) + " RF/t", + "§b///////////////////////////////////" + }; + + event.setExtraInfo(info); + }); + } + + /** + * 能否提取能量。 + */ + private static boolean canExtract(NBTTagCompound nbt,float speed){ + if (nbt.hasKey("energyStored")) { + var energyStored = getEnergyStored(nbt); + var sz = (long) (speed * defaultTransferAmount); + if (energyStored.compareTo(BigLongMax) >= 0) { + if (ENERGY_STORED_CACHE.size() > 3000) { + ENERGY_STORED_CACHE.clear(); + } + return true; + } + return energyStored.longValue() >= sz; + } + return false; + } + + /** + * 将能量存储进控制器内部。 + */ + public static void receiveEnergy(NBTTagCompound nbt,float speed,long defaultTransferAmount) { + synchronized (nbt) { + var energyStored = getEnergyStored(nbt); + var sz = getBigInt((long) (speed * defaultTransferAmount)); + nbt.setString("energyStored", energyStored.add(sz).toString()); + } + + if (ENERGY_STORED_CACHE.size() > 3000) { + ENERGY_STORED_CACHE.clear(); + } + } + + /** + * 提取控制器内部能量至能量输出仓。 + */ + public static void extractEnergy(NBTTagCompound nbt,float speed,long defaultTransferAmount) { + synchronized (nbt) { + var energyStored = getEnergyStored(nbt); + var sz = getBigInt((long) (speed * defaultTransferAmount)); + nbt.setString("energyStored",energyStored.subtract(sz).toString()); + } + + if (ENERGY_STORED_CACHE.size() > 3000) { + ENERGY_STORED_CACHE.clear(); + } + } + + public static BigInteger getEnergyStored(NBTTagCompound nbt){ + return nbt.hasKey("energyStored") ? getBigInt(nbt.getString("energyStored")) : BigInteger.ZERO; + } + + @ZenMethod + public static BigInteger getEnergyStored(IMachineController ctrl){ + return getEnergyStored(ctrl.getController().getCustomDataTag()); + } + + /** + * 额外的crt方法复用方法作为能量输入方法 + * @param ctrl 控制器 + * @param speed 倍率 + * @param amount 每倍率消耗 + */ + @ZenMethod + public static void receiveEnergy(IMachineController ctrl,float speed,long amount){ + receiveEnergy(ctrl.getController().getCustomDataTag(),speed,amount); + ctrl.getController().markNoUpdateSync(); + } + + /** + * 额外的crt方法复用方法作为能量消耗方法 + * @param ctrl 控制器 + * @param speed 倍率 + * @param amount 每倍率消耗 + */ + @ZenMethod + public static void extractEnergy(IMachineController ctrl,float speed,long amount){ + extractEnergy(ctrl.getController().getCustomDataTag(),speed,amount); + ctrl.getController().markNoUpdateSync(); + } + + @ZenMethod + public static BigInteger getBigInt(long num){ + return getBigInt(Long.toString(num)); + } + + @ZenMethod + public static BigInteger getBigInt(String num){ + return ENERGY_STORED_CACHE.computeIfAbsent(num, BigInteger::new); + } + + private static final String longmax = Long.toString(Long.MAX_VALUE); + + private String change(TileMultiblockMachineController ctrl){ + return change(ctrl,getEnergyInfo(ctrl.getWorld(),ctrl.getPos()).getFirst()); + } + + private String change(TileMultiblockMachineController ctrl,String newtime){ + FixedSizeDeque energy = getEnergyInfo(ctrl.getWorld(),ctrl.getPos()); + var oldtime = energy.getLast(); + var newbig = newtime == null ? BigInteger.ZERO : getBigInt(newtime); + var oldbig = oldtime == null ? BigInteger.ZERO : getBigInt(oldtime); + if (newbig.equals(oldbig)) { + return "0"; + } else { + var changel = newbig.subtract(oldbig); + var denominator = 1200L / MinuteScale * energy.size(); + if (changel.compareTo(BigLongMax) > 0) { + return formatNumber(changel.divide(getBigInt(denominator))); + } else { + return formatNumber(changel.longValue() / denominator); + } + } + } + + private static FixedSizeDeque getEnergyInfo(World world,BlockPos pos) { + return map.computeIfAbsent(world, k -> new ConcurrentHashMap<>()) + .computeIfAbsent(pos, m -> new FixedSizeDeque<>(MinuteScale)); + } +} \ No newline at end of file diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/Drills/DifferentWorld.java b/src/main/java/github/kasuminova/novaeng/common/machine/Drills/DifferentWorld.java new file mode 100644 index 00000000..e2194576 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/machine/Drills/DifferentWorld.java @@ -0,0 +1,15 @@ +package github.kasuminova.novaeng.common.machine.Drills; + +import hellfirepvp.modularmachinery.ModularMachinery; +import net.minecraft.util.ResourceLocation; + +public class DifferentWorld extends Drill { + + public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "different_world"); + public static final DifferentWorld INSTANCE = new DifferentWorld(); + + @Override + public ResourceLocation getRegistryName() { + return REGISTRY_NAME; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/Drills/Drill.java b/src/main/java/github/kasuminova/novaeng/common/machine/Drills/Drill.java new file mode 100644 index 00000000..72ff2115 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/machine/Drills/Drill.java @@ -0,0 +1,21 @@ +package github.kasuminova.novaeng.common.machine.Drills; + +import github.kasuminova.mmce.common.event.machine.MachineStructureUpdateEvent; +import github.kasuminova.novaeng.common.machine.MachineSpecial; +import hellfirepvp.modularmachinery.common.machine.DynamicMachine; +import hellfirepvp.modularmachinery.common.tiles.base.TileMultiblockMachineController; +import net.minecraft.util.ResourceLocation; + +public abstract class Drill implements MachineSpecial { + + @Override + public void init(final DynamicMachine machine) { + machine.addMachineEventHandler(MachineStructureUpdateEvent.class, event -> { + TileMultiblockMachineController controller = event.getController(); + controller.setWorkMode(TileMultiblockMachineController.WorkMode.SEMI_SYNC); + }); + } + + @Override + public abstract ResourceLocation getRegistryName(); +} diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/Drills/ManaOreDrill.java b/src/main/java/github/kasuminova/novaeng/common/machine/Drills/ManaOreDrill.java new file mode 100644 index 00000000..30fe3983 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/machine/Drills/ManaOreDrill.java @@ -0,0 +1,15 @@ +package github.kasuminova.novaeng.common.machine.Drills; + +import hellfirepvp.modularmachinery.ModularMachinery; +import net.minecraft.util.ResourceLocation; + +public class ManaOreDrill extends Drill { + + public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "mana_ore_drill"); + public static final ManaOreDrill INSTANCE = new ManaOreDrill(); + + @Override + public ResourceLocation getRegistryName() { + return REGISTRY_NAME; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/Drills/MineralExtractor.java b/src/main/java/github/kasuminova/novaeng/common/machine/Drills/MineralExtractor.java new file mode 100644 index 00000000..cd511213 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/machine/Drills/MineralExtractor.java @@ -0,0 +1,15 @@ +package github.kasuminova.novaeng.common.machine.Drills; + +import hellfirepvp.modularmachinery.ModularMachinery; +import net.minecraft.util.ResourceLocation; + +public class MineralExtractor extends Drill{ + + public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "mineral_extractor"); + public static final MineralExtractor INSTANCE = new MineralExtractor(); + + @Override + public ResourceLocation getRegistryName() { + return REGISTRY_NAME; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/Drills/OrichalcosDrill.java b/src/main/java/github/kasuminova/novaeng/common/machine/Drills/OrichalcosDrill.java new file mode 100644 index 00000000..6202288c --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/machine/Drills/OrichalcosDrill.java @@ -0,0 +1,15 @@ +package github.kasuminova.novaeng.common.machine.Drills; + +import hellfirepvp.modularmachinery.ModularMachinery; +import net.minecraft.util.ResourceLocation; + +public class OrichalcosDrill extends Drill { + + public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "orichalcos_drill"); + public static final OrichalcosDrill INSTANCE = new OrichalcosDrill(); + + @Override + public ResourceLocation getRegistryName() { + return REGISTRY_NAME; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/Drills/VoidMiner.java b/src/main/java/github/kasuminova/novaeng/common/machine/Drills/VoidMiner.java new file mode 100644 index 00000000..bb3e4832 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/machine/Drills/VoidMiner.java @@ -0,0 +1,14 @@ +package github.kasuminova.novaeng.common.machine.Drills; + +import hellfirepvp.modularmachinery.ModularMachinery; +import net.minecraft.util.ResourceLocation; + +public class VoidMiner extends Drill{ + public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "void_miner"); + public static final VoidMiner INSTANCE = new VoidMiner(); + + @Override + public ResourceLocation getRegistryName() { + return REGISTRY_NAME; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/GeocentricDrill.java b/src/main/java/github/kasuminova/novaeng/common/machine/GeocentricDrill.java index 2426e18f..1d94b3d2 100644 --- a/src/main/java/github/kasuminova/novaeng/common/machine/GeocentricDrill.java +++ b/src/main/java/github/kasuminova/novaeng/common/machine/GeocentricDrill.java @@ -22,29 +22,35 @@ import hellfirepvp.modularmachinery.common.modifier.RecipeModifier; import hellfirepvp.modularmachinery.common.util.ItemUtils; import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraftforge.oredict.OreDictionary; -import java.util.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; public class GeocentricDrill implements MachineSpecial { - public static final GeocentricDrill GEOCENTRIC_DRILL = new GeocentricDrill(); + public static final GeocentricDrill INSTANCE = new GeocentricDrill(); public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "earth_drill"); public static final ResourceLocation RECIPE_REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "earth_drill_working"); public static final int ENERGY_PER_TICK = 12_000_000; - public static final int ORE_COUNT = 6; + public static final int ORE_COUNT = 15; public static final int ACCELERATE_MULTIPLIER = 15; public static final int MIN_DEPTH = 1000; public static final int MAX_DEPTH = 20000; - public static final int PARALLELISM_PER_DEPTH = 25; + public static final int PARALLELISM_PER_DEPTH = 20; public static final int COMPUTATION_POINT_PER_PARALLELISM = 4; public static final int MAX_PARALLELISM = MAX_DEPTH / PARALLELISM_PER_DEPTH; @@ -94,15 +100,14 @@ public void preInit(final DynamicMachine machine) { .filter(oreName -> oreName.startsWith("rawOre")) .forEach(oreName -> { NonNullList ores = OreDictionary.getOres(oreName); - if (!ores.isEmpty()) { + if (!ores.isEmpty() && !oreName.equals("rawOreAluminium")) { ItemStack stack = ores.get(0).copy(); stack.setCount(ORE_COUNT); rawOres.put(oreName, stack); } }); - addRFToolsDimShard(rawOres); - addEnvironmentTechOres(rawOres); + addOres(rawOres); addGeocentricQuartzCrystalOre(rawOres); this.rawOres.clear(); @@ -123,13 +128,6 @@ public void preInit(final DynamicMachine machine) { primer.build(); } - private static void addRFToolsDimShard(final Map rawOres) { - List genDimShards = OreDictionary.getOres("gemDimensionalShard", false); - if (!genDimShards.isEmpty()) { - rawOres.put("gemDimensionalShard", ItemUtils.copyStackWithSize(genDimShards.get(0), 4)); - } - } - private static void addGeocentricQuartzCrystalOre(final Map rawOres) { Item geocentricCrystal = Item.REGISTRY.getObject(new ResourceLocation("contenttweaker", "geocentric_crystal")); if (geocentricCrystal != null) { @@ -137,35 +135,44 @@ private static void addGeocentricQuartzCrystalOre(final Map r } } - private static void addEnvironmentTechOres(final Map rawOres) { + private static void addOres(final Map rawOres) { + List dustDraconium = OreDictionary.getOres("dustDraconium", false); + if (!dustDraconium.isEmpty()) { + rawOres.put("dustDraconium", ItemUtils.copyStackWithSize(dustDraconium.get(0), ORE_COUNT)); + } + List blockSkyStone = OreDictionary.getOres("blockSkyStone", false); + if (!blockSkyStone.isEmpty()) { + rawOres.put("blockSkyStone", ItemUtils.copyStackWithSize(blockSkyStone.get(0), 8)); + } List crystalLitherite = OreDictionary.getOres("crystalLitherite", false); if (!crystalLitherite.isEmpty()) { - rawOres.put("crystalLitherite", ItemUtils.copyStackWithSize(crystalLitherite.get(0), 4)); + rawOres.put("crystalLitherite", ItemUtils.copyStackWithSize(crystalLitherite.get(0), 8)); } List crystalErodium = OreDictionary.getOres("crystalErodium", false); if (!crystalErodium.isEmpty()) { - rawOres.put("crystalErodium", ItemUtils.copyStackWithSize(crystalErodium.get(0), 3)); + rawOres.put("crystalErodium", ItemUtils.copyStackWithSize(crystalErodium.get(0), 6)); } List crystalLonsdaleite = OreDictionary.getOres("crystalLonsdaleite", false); if (!crystalLonsdaleite.isEmpty()) { - rawOres.put("crystalLonsdaleite", ItemUtils.copyStackWithSize(crystalLonsdaleite.get(0), 2)); + rawOres.put("crystalLonsdaleite", ItemUtils.copyStackWithSize(crystalLonsdaleite.get(0), 4)); } List crystalKyronite = OreDictionary.getOres("crystalKyronite", false); if (!crystalKyronite.isEmpty()) { - rawOres.put("crystalKyronite", ItemUtils.copyStackWithSize(crystalKyronite.get(0), 2)); + rawOres.put("crystalKyronite", ItemUtils.copyStackWithSize(crystalKyronite.get(0), 4)); } List crystalPladium = OreDictionary.getOres("crystalPladium", false); if (!crystalPladium.isEmpty()) { - rawOres.put("crystalPladium", ItemUtils.copyStackWithSize(crystalPladium.get(0), 2)); + rawOres.put("crystalPladium", ItemUtils.copyStackWithSize(crystalPladium.get(0), 4)); } List crystalIonite = OreDictionary.getOres("crystalIonite", false); if (!crystalIonite.isEmpty()) { - rawOres.put("crystalIonite", ItemUtils.copyStackWithSize(crystalIonite.get(0), 2)); + rawOres.put("crystalIonite", ItemUtils.copyStackWithSize(crystalIonite.get(0), 4)); } List crystalAethium = OreDictionary.getOres("crystalAethium", false); if (!crystalAethium.isEmpty()) { - rawOres.put("crystalAethium", ItemUtils.copyStackWithSize(crystalAethium.get(0), 1)); + rawOres.put("crystalAethium", ItemUtils.copyStackWithSize(crystalAethium.get(0), 2)); } + rawOres.put("glowstone_dust", new ItemStack(Items.GLOWSTONE_DUST,24)); } public Map getRawOres() { @@ -177,7 +184,7 @@ public MachineRecipe rebuildRecipe(final MachineRecipe original, final Set output = new ArrayList<>(); + List output = new ObjectArrayList<>(); rawOres.forEach((oreName, ore) -> output.add(new ChancedIngredientStack( ore.copy(), accelerateOres.contains(oreName) ? chance * GeocentricDrill.ACCELERATE_MULTIPLIER : chance) )); diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/IllumPool.java b/src/main/java/github/kasuminova/novaeng/common/machine/IllumPool.java index bb1d2f99..16b1ec2e 100644 --- a/src/main/java/github/kasuminova/novaeng/common/machine/IllumPool.java +++ b/src/main/java/github/kasuminova/novaeng/common/machine/IllumPool.java @@ -23,7 +23,11 @@ import hellfirepvp.modularmachinery.common.util.IBlockStateDescriptor; import hellfirepvp.modularmachinery.common.util.MiscUtils; import ink.ikx.mmce.common.utils.StackUtils; -import mcjty.theoneprobe.api.*; +import mcjty.theoneprobe.api.ElementAlignment; +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.NumberFormat; +import mcjty.theoneprobe.api.ProbeMode; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -38,7 +42,7 @@ import vazkii.botania.common.Botania; import vazkii.botania.common.block.ModBlocks; -import java.awt.*; +import java.awt.Color; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -47,7 +51,7 @@ public class IllumPool implements MachineSpecial { public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "illum_pool"); - public static final IllumPool ILLUM_POOL = new IllumPool(); + public static final IllumPool INSTANCE = new IllumPool(); public static final int MAX_MANA_STORE = 10_000_000; public static final int MAX_ILLUM_STORE = 10_000; @@ -109,12 +113,6 @@ public void init(final DynamicMachine machine) { Collections.emptyList(), Collections.singletonList("魔力池上方布满彩虹桥方块可使其激活§a普通模式§f,催化剂模式必须基于此模式。"), StackUtils.getStackFromBlockState(blockBifrostPerm.getDefaultState()))); - // 星光模式 - machine.getMultiBlockModifiers().add(new MultiBlockModifierReplacement(STARLIGHT_CATALYST, - buildModifierReplacementBlockArray(blockLiquidStarLight, CATALYST_POS_PRESET.stream().map(pos -> pos.add(0, 1, 0)).collect(Collectors.toList())), - Collections.emptyList(), - Collections.singletonList("魔力池上方倒满星能液可使其激活§b星光模式§f,与催化剂模式冲突。"), - StackUtils.getStackFromBlockState(blockLiquidStarLight.getDefaultState()))); // 炼金模式 machine.getMultiBlockModifiers().add(new MultiBlockModifierReplacement(ALCHEMY_CATALYST, buildModifierReplacementBlockArray(blockAlchemyCatalyst, CATALYST_POS_PRESET), @@ -133,6 +131,12 @@ public void init(final DynamicMachine machine) { Collections.emptyList(), Collections.singletonList("将彩虹桥方块下方的§c所有方块§f替换为§5次元催化器§f方块可使其激活§5次元模式§f。"), StackUtils.getStackFromBlockState(blockDimensionCatalyst.getDefaultState()))); + // 星光模式 + machine.getMultiBlockModifiers().add(new MultiBlockModifierReplacement(STARLIGHT_CATALYST, + buildModifierReplacementBlockArray(blockLiquidStarLight, CATALYST_POS_PRESET.stream().map(pos -> pos.add(0, 1, 0)).collect(Collectors.toList())), + Collections.emptyList(), + Collections.singletonList("魔力池上方倒满星能液可使其激活§b星光模式§f,与催化剂模式冲突。"), + StackUtils.getStackFromBlockState(blockLiquidStarLight.getDefaultState()))); machine.addMachineEventHandler(MachineStructureUpdateEvent.class, event -> { TileMultiblockMachineController controller = event.getController(); @@ -324,7 +328,7 @@ public void onClientTick(final TileMultiblockMachineController controller) { int sparkleFXCount = 3; TileFactoryController factory = (TileFactoryController) controller; FactoryRecipeThread recipeThread = factory.getCoreRecipeThreads().get("辉光转化术式"); - if (recipeThread != null) { + if (recipeThread != null && recipeThread.getActiveRecipe() != null) { sparkleFXCount += Math.min(recipeThread.getActiveRecipe().getParallelism() / 40, 4); } for (int i = 0; i < sparkleFXCount; i++) { diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/MMAltar.java b/src/main/java/github/kasuminova/novaeng/common/machine/MMAltar.java new file mode 100644 index 00000000..c8f0cffc --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/machine/MMAltar.java @@ -0,0 +1,234 @@ +package github.kasuminova.novaeng.common.machine; + +import WayofTime.bloodmagic.api.impl.BloodMagicAPI; +import WayofTime.bloodmagic.api.impl.recipe.RecipeBloodAltar; +import crafttweaker.annotations.ZenRegister; +import crafttweaker.api.item.IIngredient; +import crafttweaker.api.item.IItemStack; +import crafttweaker.api.minecraft.CraftTweakerMC; +import crafttweaker.api.oredict.IOreDictEntry; +import github.kasuminova.mmce.common.event.machine.MachineStructureUpdateEvent; +import hellfirepvp.modularmachinery.ModularMachinery; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.RecipeBuilder; +import hellfirepvp.modularmachinery.common.machine.DynamicMachine; +import hellfirepvp.modularmachinery.common.modifier.MultiBlockModifierReplacement; +import hellfirepvp.modularmachinery.common.tiles.base.TileMultiblockMachineController; +import hellfirepvp.modularmachinery.common.util.BlockArray; +import hellfirepvp.modularmachinery.common.util.IBlockStateDescriptor; +import ink.ikx.mmce.common.utils.StackUtils; +import net.minecraft.block.Block; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.fml.common.registry.GameRegistry; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +@ZenRegister +@ZenClass("novaeng.MMAltar") +public class MMAltar implements MachineSpecial { + public static final String MachineID = "mm_altar"; + public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, MachineID); + public static final MMAltar INSTANCE = new MMAltar(); + + public static final List posSet1 = Arrays.asList( + new BlockPos(-3,-5,-3), new BlockPos(-3,-5,3), + new BlockPos(3,-5,-3), new BlockPos(3,-5,3), + new BlockPos(-3,-4,-3), new BlockPos(-3,-4,3), + new BlockPos(3,-4,-3), new BlockPos(3,-4,3) + ); + + public static final List posSet2 = Arrays.asList( + new BlockPos(-5,-3,-5), new BlockPos(-5,-3,5), + new BlockPos(5,-3,-5), new BlockPos(5,-3,5) + ); + + public static final List posSet3 = Arrays.asList( + new BlockPos(-11,-2,-11), new BlockPos(-11,-2,11), + new BlockPos(11,-2,-11), new BlockPos(11,-2,11) + ); + + public static Block BLOCKSJ1 = getOtherModsBlock("contenttweaker","crystalmatrixforcefieldcontrolblock"); + public static Block BLOCKSJ2 = getOtherModsBlock("contenttweaker","fallenstarforcefieldcontrolblock"); + public static Block BLOCKSJ3 = getOtherModsBlock("contenttweaker","universalforcefieldcontrolblock"); + + protected MMAltar() {} + + protected static Block getOtherModsBlock(String modId, String blockName) { + return GameRegistry.findRegistry(Block.class).getValue(new ResourceLocation(modId, blockName)); + } + + @Override + public void init(final DynamicMachine machine) { + machine.addMachineEventHandler(MachineStructureUpdateEvent.class, event -> { + TileMultiblockMachineController controller = event.getController(); + controller.setWorkMode(TileMultiblockMachineController.WorkMode.SEMI_SYNC); + }); + machine.getMultiBlockModifiers().add(new MultiBlockModifierReplacement("xzjtsj1", + buildModifierReplacementBlockArray(BLOCKSJ1, posSet1), + Collections.emptyList(), + Arrays.asList( + "§7柱子可以是任意完整方块", + "§6将3级祭坛的柱子方块全部替换为" + BLOCKSJ1.getLocalizedName(), + "§6即可激活升级数1" + ), + StackUtils.getStackFromBlockState(BLOCKSJ1.getDefaultState())) + ); + machine.getMultiBlockModifiers().add(new MultiBlockModifierReplacement("xzjtsj2", + buildModifierReplacementBlockArray(BLOCKSJ2, posSet2), + Collections.emptyList(), + Arrays.asList( + "§7柱子可以是任意完整方块", + "§6将4级祭坛的所有的大血石下方的1个柱子方块全部替换为" + BLOCKSJ2.getLocalizedName(), + "§6即可激活升级数1" + ), + StackUtils.getStackFromBlockState(BLOCKSJ2.getDefaultState())) + ); + machine.getMultiBlockModifiers().add(new MultiBlockModifierReplacement("xzjtsj3", + buildModifierReplacementBlockArray(BLOCKSJ3, posSet3), + Collections.emptyList(), + Arrays.asList( + "§7柱子可以是任意完整方块", + "§6将6级祭坛的所有的晶簇下方的1个柱子方块全部替换为" + BLOCKSJ3.getLocalizedName(), + "§6即可激活升级数2", + "§6并且额外提升1级祭坛位阶" + ), + StackUtils.getStackFromBlockState(BLOCKSJ3.getDefaultState())) + ); + var altarRecipe = BloodMagicAPI.INSTANCE.getRecipeRegistrar(); + altarRecipe.removeBloodAltar(new ItemStack(Items.BUCKET)); + for (RecipeBloodAltar recipe : altarRecipe.getAltarRecipes()) { + registerRecipe( + recipe.getConsumeRate(), + recipe.getSyphon(), + recipe.getMinimumTier().toInt(), + CraftTweakerMC.getIIngredient(recipe.getInput()), + CraftTweakerMC.getIItemStack(recipe.getOutput()) + ); + } + } + + @Override + public ResourceLocation getRegistryName() { + return REGISTRY_NAME; + } + + protected static BlockArray buildModifierReplacementBlockArray(final Block block, final List posSet) { + BlockArray blockArray = new BlockArray(); + IBlockStateDescriptor descriptor = new IBlockStateDescriptor(block); + posSet.forEach(pos -> blockArray.addBlock(pos, new BlockArray.BlockInformation(Collections.singletonList(descriptor)))); + return blockArray; + } + + /** + * 合成配方 + * @param need 最低血液需求 + * @param Maxneed 总血液需求 + * @param AltarTier 祭坛等级需求 + * @param input 输入物品 + * @param output 输出物品 + */ + @ZenMethod + public static void registerRecipe(int need, int Maxneed, int AltarTier, IIngredient input,IItemStack output) { + var time = Maxneed / need; + String name; + if (input instanceof IItemStack item){ + name = CraftTweakerMC.getItem(item.getDefinition()).getRegistryName().toString() + item.getMetadata(); + } else if (input instanceof IOreDictEntry od) { + name = od.getName(); + } else { + name = CraftTweakerMC.getItem(output.getDefinition()).getRegistryName().toString() + output.getMetadata(); + } + RecipeBuilder.newBuilder(name, MachineID, time,1000) + .addItemInputs(input) + .addPreCheckHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var xycc = data.getLong("xycc"); + var jtdj = data.getInteger("jtdj"); + var sdfw = data.getInteger("sdfw"); + var cpdj = data.getInteger("cpdj"); + var ccjx = data.getInteger("ccjx"); + var yzfb = Math.pow(0.95, cpdj); + var sjneed = (0.2 * sdfw + 1.00) * (need * 1.00); + var bx = Math.min(Math.pow(4, cpdj), ((double) ccjx / need)); + + if (xycc < need) { + event.setFailed("§4缓存的生命源质无法启动配方!"); + return; + } + if (jtdj < AltarTier) { + event.setFailed("§4祭坛等级不足以运行配方!"); + return; + } + event.getActiveRecipe().setMaxParallelism((int) bx); + }) + .addFactoryStartHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var bx = event.getFactoryRecipeThread().getActiveRecipe().getParallelism(); + + data.setLong("hcjd",0); + data.setLong("hcjdmax", (long) bx * Maxneed); + }) + .addFactoryPreTickHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var xycc = data.getLong("xycc"); + var jtdj = data.getInteger("jtdj"); + var hcjd = data.getInteger("hcjd"); + var hcjdmax = data.getInteger("hcjdmax"); + var sdfwxg = 0.2 * data.getInteger("sdfw"); + var cpdj = data.getInteger("cpdj"); + var yzfb = Math.pow(0.95, cpdj); + var thread = event.getFactoryRecipeThread(); + var bx = thread.getActiveRecipe().getParallelism(); + var tick = thread.getActiveRecipe().getTick(); + var totalTick = thread.getActiveRecipe().getTotalTick(); + var sjneed = need * bx; + + if (xycc > sjneed) { + if (hcjd < hcjdmax) { + thread.getActiveRecipe().setTick((totalTick / 2)); + event.preventProgressing("§6合成中,还差§a" + (hcjdmax - hcjd) + "生命源质§6完成合成"); + } + if (xycc <= (1 + sdfwxg) * sjneed) { + if (hcjd + xycc <= hcjdmax) { + data.setLong("hcjd",hcjd + xycc); + data.setLong("xycc",0); + } else { + data.setLong("hcjd",hcjdmax); + data.setLong("xycc",xycc - (hcjdmax - hcjd)); + thread.getActiveRecipe().setTick(totalTick); + } + } else { + if (hcjd + ((1 + sdfwxg) * sjneed) <= hcjdmax) { + data.setLong("hcjd", (long) (hcjd + ((1 + sdfwxg) * sjneed))); + data.setLong("xycc", (long) (xycc - ((1 + sdfwxg) * sjneed))); + } else { + data.setLong("hcjd",hcjdmax); + data.setLong("xycc",xycc - (hcjdmax - hcjd)); + thread.getActiveRecipe().setTick(totalTick); + } + } + } else { + event.preventProgressing("§6剩余的生命源质不足最低值§a" + (sjneed)); + } + }) + .addOutput(output) + .setThreadName("血之合成") + .addRecipeTooltip( + "§4所需基础生命源质" + need, + "§4所需生命源质总量" + Maxneed, + "§4配方所要求最低层级:" + AltarTier, + "§6实际速度与消耗将取决于速度符文", + "§6并行状态每次需要消耗的血量会乘并行数" + ) + .build(); + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/MaterialSequenceProcessing.java b/src/main/java/github/kasuminova/novaeng/common/machine/MaterialSequenceProcessing.java new file mode 100644 index 00000000..17d61369 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/machine/MaterialSequenceProcessing.java @@ -0,0 +1,61 @@ +package github.kasuminova.novaeng.common.machine; + +import crafttweaker.CraftTweakerAPI; +import crafttweaker.api.minecraft.CraftTweakerMC; +import hellfirepvp.modularmachinery.ModularMachinery; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.RecipeBuilder; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.RecipeModifierBuilder; +import hellfirepvp.modularmachinery.common.machine.DynamicMachine; +import hellfirepvp.modularmachinery.common.modifier.RecipeModifier; +import mustapelto.deepmoblearning.common.metadata.MetadataDataModel; +import mustapelto.deepmoblearning.common.metadata.MetadataManager; +import net.minecraft.util.ResourceLocation; + +import static github.kasuminova.novaeng.common.crafttweaker.expansion.RecipePrimerHyperNet.requireResearch; + +public class MaterialSequenceProcessing implements MachineSpecial { + private static final String MachineID = "material_sequence_processing"; + public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, MachineID); + public static final MaterialSequenceProcessing INSTANCE = new MaterialSequenceProcessing(); + + @Override + public void init(final DynamicMachine machine) { + for (MetadataDataModel model : MetadataManager.getDataModelMetadataList()) { + if (!model.isEnabled()) continue; + var item = model.getPristineMatter(); + var loot = model.getLootItems(); + if (!loot.isEmpty()) { + for (int i = 0; i < loot.size(); i++) { + var item0 = loot.get(i); + var tag = new StringBuilder(); + var tagname = new StringBuilder(); + if (i < 3) { + tag.append("left").append(i + 1); + tagname.append("在左").append(i + 1).append("仓室执行此配方"); + } else if (i < 6) { + tag.append("right").append(i - 2); + tagname.append("在右").append(i - 2).append("仓室执行此配方"); + } else break; + var pecipe = RecipeBuilder.newBuilder(MachineID + item.getItem().getRegistryName() + i, MachineID, 20, 1) + .addEnergyPerTickInput(204800) + .addInputs(CraftTweakerMC.getIItemStack(item)).setTag(tag.toString()) + .addCatalystInput( + CraftTweakerAPI.itemUtils.getItem("contenttweaker:hxs", 0), + new String[]{"输入核心素催化物质重组,产物增加25%,每并行需要一个", "并不能增加单次产出低于4的产物数量.."}, + new RecipeModifier[]{RecipeModifierBuilder.create("modularmachinery:item", "output", 1.25f, 1, false).build()} + ).setChance(0.01f) + .addOutputs(CraftTweakerMC.getIItemStack(item0)); + requireResearch(pecipe, "pristine") + .addRecipeTooltip(tagname.toString(), "核心素可以在任意仓内") + .build(); + } + } + } + } + + @Override + public ResourceLocation getRegistryName() { + return REGISTRY_NAME; + } + +} \ No newline at end of file diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/SingularityCore.java b/src/main/java/github/kasuminova/novaeng/common/machine/SingularityCore.java index 8eabe3dd..799ed6a4 100644 --- a/src/main/java/github/kasuminova/novaeng/common/machine/SingularityCore.java +++ b/src/main/java/github/kasuminova/novaeng/common/machine/SingularityCore.java @@ -8,7 +8,7 @@ public class SingularityCore implements MachineSpecial { public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "singularity_core"); - public static final SingularityCore SINGULARITY_CORE = new SingularityCore(); + public static final SingularityCore INSTANCE = new SingularityCore(); @Override public void init(final DynamicMachine machine) { diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/SpaceGenerator.java b/src/main/java/github/kasuminova/novaeng/common/machine/SpaceGenerator.java new file mode 100644 index 00000000..dfca01bf --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/machine/SpaceGenerator.java @@ -0,0 +1,347 @@ +package github.kasuminova.novaeng.common.machine; + +import crafttweaker.api.item.IItemStack; +import crafttweaker.api.minecraft.CraftTweakerMC; +import crafttweaker.api.oredict.IOreDictEntry; +import github.kasuminova.mmce.common.helper.IMachineController; +import github.kasuminova.novaeng.NovaEngineeringCore; +import github.kasuminova.novaeng.common.handler.OreHandler; +import github.kasuminova.novaeng.common.util.RecipePrimerEx; +import hellfirepvp.modularmachinery.ModularMachinery; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.IngredientArrayBuilder; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.RecipeBuilder; +import hellfirepvp.modularmachinery.common.machine.DynamicMachine; +import hellfirepvp.modularmachinery.common.machine.factory.FactoryRecipeThread; +import morph.avaritia.recipe.AvaritiaRecipeManager; +import net.minecraft.util.ResourceLocation; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static crafttweaker.CraftTweakerAPI.oreDict; + +public class SpaceGenerator implements MachineSpecial { + private static final String MachineID = "space_generator"; + public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, MachineID); + public static final SpaceGenerator INSTANCE = new SpaceGenerator(); + private static final String oreOD = "ore"; + private static final String singularityOD = "singularity"; + + @Override + public void init(final DynamicMachine machine) { + final List orenames = new ArrayList<>(); + final Map singularitys = new HashMap<>(); + + for (IOreDictEntry ench : oreDict.getEntries()) { + var odName = ench.getName(); + if (odName.startsWith(oreOD)) { + if (ench.isEmpty())continue; + var ore = odName.substring(oreOD.length()); + if (ore.equals("Aluminum")) continue; + var ingot = oreDict.get("ingot" + ore); + var gem = oreDict.get("gem" + ore); + var dust = oreDict.get("dust" + ore); + var rawOre = oreDict.get("rawOre" + ore); + var rawOreGem = oreDict.get("rawOreGem" + ore); + var singularity = oreDict.get(singularityOD + ore); + IOreDictEntry ores = null; + if (!ingot.isEmpty()) { + ores = ingot; + } else if (!gem.isEmpty()) { + ores = gem; + } else if (!dust.isEmpty()) { + ores = dust; + } + if (ores != null) { + orenames.add("Ore" + ore); + var rec0 = RecipeBuilder.newBuilder("space_Ore" + ore, "space_generator", 20, 2) + .addInput(ench) + .addPreCheckHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var speed = data.getInteger("speed"); + var hxzt = data.getByte("hxzt"); + if (hxzt != 1) { + event.setFailed("当前模式无法输入矿石"); + } + }) + .addFactoryFinishHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var Ore1 = data.getLong("Ore" + ore); + var thread = event.getFactoryRecipeThread(); + var bx = thread.getActiveRecipe().getParallelism(); + + data.setLong("Ore" + ore, Ore1 + bx); + data.setLong("kwzl",data.getLong("kwzl") + bx); + }) + .setMaxThreads(1) + .setParallelized(true) + .addRecipeTooltip( + "§r输入矿石单位,每并行输入§61", + "§r需要先展开奇点" + ); + if (!singularity.isEmpty()) + RecipePrimerEx.setLore(rec0.addOutput(singularity.getFirstItem()).setChance(0), "§a仅用于标识结算时可能的产出"); + RecipePrimerEx.setLore(rec0.addOutput(CraftTweakerMC.getIItemStack(OreHandler.OreDictHelper.getPriorityItemFromOreDict(ores.getName()))).setChance(0), "§a仅用于标识结算时可能的产出").build(); + if (!rawOre.isEmpty()) { + var rec1 = RecipeBuilder.newBuilder("space_Ore1" + ore, "space_generator", 20, 2) + .addInput(rawOre.amount(3)) + .addPreCheckHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var speed = data.getInteger("speed"); + var hxzt = data.getByte("hxzt"); + if (hxzt != 1) { + event.setFailed("当前模式无法输入矿石"); + } + }) + .addFactoryFinishHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var Ore1 = data.getLong("Ore" + ore); + var thread = event.getFactoryRecipeThread(); + var bx = thread.getActiveRecipe().getParallelism(); + + data.setLong("Ore" + ore, Ore1 + (bx * 2L)); + data.setLong("kwzl",data.getLong("kwzl") +(bx * 2L)); + }) + .setMaxThreads(1) + .setParallelized(true) + .addRecipeTooltip( + "§r输入矿石单位,每并行输入§62", + "§63§r金属粗矿等价于§62§r原矿", + "§r需要先展开奇点" + ); + if (!singularity.isEmpty()) + RecipePrimerEx.setLore(rec1.addOutput(singularity.getFirstItem()).setChance(0), "§a仅用于标识结算时可能的产出"); + RecipePrimerEx.setLore(rec1.addOutput(CraftTweakerMC.getIItemStack(OreHandler.OreDictHelper.getPriorityItemFromOreDict(ores.getName()))).setChance(0), "§a仅用于标识结算时可能的产出").build(); + } + if (!rawOreGem.isEmpty()) { + var rec1 = RecipeBuilder.newBuilder("space_Ore1" + ore, "space_generator", 20, 2) + .addInput(rawOreGem) + .addPreCheckHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var speed = Math.max(1, data.getInteger("speed")); + var hxzt = data.getByte("hxzt"); + if (hxzt != 1) { + event.setFailed("当前模式无法输入矿石"); + } + }) + .addFactoryFinishHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var Ore1 = data.getLong("Ore" + ore); + var thread = event.getFactoryRecipeThread(); + var bx = thread.getActiveRecipe().getParallelism(); + + data.setLong("Ore" + ore, Ore1 + bx); + data.setLong("kwzl",data.getLong("kwzl") + bx); + }) + .setMaxThreads(1) + .setParallelized(true) + .addRecipeTooltip( + "§r输入矿石单位,每并行输入§61", + "§6宝石粗矿与原矿比例为1比1", + "§r需要先展开奇点" + ); + if (!singularity.isEmpty()) + RecipePrimerEx.setLore(rec1.addOutput(singularity.getFirstItem()).setChance(0), "§a仅用于标识结算时可能的产出"); + RecipePrimerEx.setLore(rec1.addOutput(CraftTweakerMC.getIItemStack(OreHandler.OreDictHelper.getPriorityItemFromOreDict(ores.getName()))).setChance(0), "§a仅用于标识结算时可能的产出").build(); + } + } + } + if (odName.startsWith(singularityOD) && !odName.equals(singularityOD)) { + var singularityname = odName.substring(singularityOD.length()); + NovaEngineeringCore.log.info("registry singularity:{}",singularityname); + var s = OreHandler.OreDictHelper.getPriorityItemFromOreDict(odName); + if (s.isEmpty())continue; + var r = AvaritiaRecipeManager.getCompressorRecipeFromResult(s); + if (r == null)continue; + + singularityOperation(CraftTweakerMC.getIItemStack(s),singularityname); + + var count = r.getCost(); + if (!singularityname.equals("Quartz")) { + singularitys.put(singularityname, count * 9L); + } else { + singularitys.put(singularityname, count * 4L); + } + } + } + + oreProcessing(orenames,singularitys); + + machine.addCoreThread(FactoryRecipeThread.createCoreThread("核心展开器").addRecipe("hxzk1").addRecipe("hxzk2").addRecipe("hxzk3").addRecipe("hxzk4")); + machine.addCoreThread(FactoryRecipeThread.createCoreThread("能源操纵器").addRecipe("space_energy1").addRecipe("space_energy2")); + machine.addCoreThread(FactoryRecipeThread.createCoreThread("物质操作端口").addRecipe("space_fluid")); + + machine.setInternalParallelism(2000000000); + machine.setMaxThreads(0); + for(var i = 0;i < 10;i++){ + machine.addCoreThread(FactoryRecipeThread.createCoreThread("物质输入端口#" + i)); + } + } + + @Override + public ResourceLocation getRegistryName() { + return REGISTRY_NAME; + } + + private static void oreProcessing(List orenames,Map singularitys){ + var rec = RecipeBuilder.newBuilder("hxzk3", "space_generator", 1, 99999) + .addPreCheckHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var hxzt = data.getByte("hxzt"); + if (hxzt != 3) { + event.setFailed("非输出状态"); + } + }); + + for (String orename : orenames) { + var singularityname = orename.substring(oreOD.length()); + var singularity = oreDict.get(singularityOD + singularityname); + var rawOre = oreDict.get("rawOre" + singularityname); + if (!singularity.isEmpty()) { + rec.addOutput(singularity.getFirstItem()).addItemModifier((ctrl, item) -> output(orename, ctrl, item, singularitys.get(singularityname))); + } + + var Ore = orename.substring(oreOD.length()); + var ingot = oreDict.get("ingot" + Ore); + var gem = oreDict.get("gem" + Ore); + var dust = oreDict.get("dust" + Ore); + IOreDictEntry ores = null; + if (!ingot.isEmpty()) { + ores = ingot; + } else if (!gem.isEmpty()) { + ores = gem; + } else if (!dust.isEmpty()) { + ores = dust; + } + if (ores != null) { + rec = rec.addOutput(CraftTweakerMC.getIItemStack(OreHandler.OreDictHelper.getPriorityItemFromOreDict(ores.getName()))).addItemModifier((ctrl, oldItem) -> output(orename, ctrl, oldItem,0)); + } + } + rec.setParallelized(false).addFactoryFinishHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + data.setByte("hxzt", (byte) 0); + }) + .setLoadJEI(false) + .setThreadName("核心展开器") + .build(); + } + + private static IItemStack output(String i, IMachineController ctrl, IItemStack oldItem, long qdsl) { + var data = ctrl.getController().getCustomDataTag(); + int power = switch (i) { + case "OreLapis" -> 5; + case "OreRedstone" -> 6; + case "OreCertusQuartz", "OreChargedCertusQuartz" -> 2; + default -> 1; + }; + double oreAmount = data.getDouble(i); + float efficiencyFactor1 = data.getFloat("cq1"); + float efficiencyFactor2 = data.getFloat("cq2"); + + if (efficiencyFactor1 == 0.0f || efficiencyFactor2 == 0.0f) { + data.setLong(i, 0); + return oldItem.amount(0); + } + + long stackSizeChange = 0; + + if (oreAmount != 0) { + double totalFactor = 4.0f * efficiencyFactor1 * efficiencyFactor2 * power; + + if (qdsl != 0) { + double maxProcessableByQdsl = qdsl / totalFactor; + + if (oreAmount > maxProcessableByQdsl) { + double requiredRatio = oreAmount / maxProcessableByQdsl; + long addedCount = (long) Math.floor(requiredRatio); + stackSizeChange += addedCount; + + double remainingOre = oreAmount - (qdsl * addedCount) / totalFactor; + data.setLong(i, (long) remainingOre); + } + } else { + double addedCount = oreAmount * totalFactor; + stackSizeChange += (long) addedCount; + data.setLong(i, 0); + } + } + + return oldItem.amount(stackSizeChange >= Integer.MAX_VALUE ? Integer.MAX_VALUE : (int) stackSizeChange); + } + + private static void singularityOperation(IItemStack singularity,String singularityname) { + var arg0 = AvaritiaRecipeManager.getCompressorRecipeFromResult(CraftTweakerMC.getItemStack(singularity)).getCost(); + int arg1; + final var arg2 = Math.round(0.7 * arg0); + if (singularityname.equals("Quartz")) { + arg1 = 4; + } else { + arg1 = 9; + } + var ingot = oreDict.get("ingot" + singularityname); + var nugget = oreDict.get("nugget" + singularityname); + var block = oreDict.get("block" + singularityname); + var gem = oreDict.get("gem" + singularityname); + var dust = oreDict.get("dust" + singularityname); + final IOreDictEntry ores; + if (!ingot.isEmpty()) { + ores = ingot; + } else if (!gem.isEmpty()) { + ores = gem; + } else { + ores = dust; + } + RecipeBuilder.newBuilder("space_singularity1" + singularityname, "space_generator", 20, 3) + .addEnergyPerTickInput(100000000) + .addIngredientArrayInput(IngredientArrayBuilder.newBuilder().addIngredients( + block.amount(arg0), + ores.amount(arg1 * arg0), + nugget.amount(9 * arg1 * arg0) + )) + .addPreCheckHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var hxzt = data.getInteger("hxzt"); + if (hxzt != 2) { + event.setFailed("当前模式无法操作奇点"); + } + }) + .addOutput(singularity) + .setMaxThreads(1) + .setParallelized(true) + .addRecipeTooltip( + "novaeng.space_generator.tooltip0", + "novaeng.space_generator.tooltip1" + ) + .build(); + RecipeBuilder.newBuilder("space_singularity2" + singularityname, "space_generator", 20, 3) + .addEnergyPerTickInput(100000000) + .addInput(singularity) + .addPreCheckHandler(event -> { + var ctrl = event.getController(); + var data = ctrl.getCustomDataTag(); + var hxzt = data.getInteger("hxzt"); + if (hxzt != 2) { + event.setFailed("当前模式无法操作奇点"); + } + }) + .addOutputs(CraftTweakerMC.getIItemStack(OreHandler.OreDictHelper.getPriorityItemFromOreDict(ores.getName())).amount((int) (arg1 * arg2))) + .setMaxThreads(1) + .setParallelized(true) + .addRecipeTooltip( + "novaeng.space_generator.tooltip0", + "novaeng.space_generator.tooltip1" + ) + .build(); + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/machine/StardustDisintegrator.java b/src/main/java/github/kasuminova/novaeng/common/machine/StardustDisintegrator.java index bc0c49b2..e3845ca8 100644 --- a/src/main/java/github/kasuminova/novaeng/common/machine/StardustDisintegrator.java +++ b/src/main/java/github/kasuminova/novaeng/common/machine/StardustDisintegrator.java @@ -20,7 +20,7 @@ public class StardustDisintegrator implements MachineSpecial { public static final ResourceLocation REGISTRY_NAME = new ResourceLocation(ModularMachinery.MODID, "stardust_disintegrator"); - public static final StardustDisintegrator STARDUST_DISINTEGRATOR = new StardustDisintegrator(); + public static final StardustDisintegrator INSTANCE = new StardustDisintegrator(); public static final List CRYSTALS_POS_PRESET = Arrays.asList( // LEFT - MID - RIGHT @@ -39,12 +39,17 @@ public void init(final DynamicMachine machine) { @Override public void onSyncTick(final TileMultiblockMachineController controller) { - + MachineSpecial.super.onSyncTick(controller); } @Override - public void onTOPInfo(final ProbeMode probeMode, final IProbeInfo probeInfo, final EntityPlayer player, final IProbeHitData data, final TileMultiblockMachineController controller) { - + public void onTOPInfo(final ProbeMode probeMode, + final IProbeInfo probeInfo, + final EntityPlayer player, + final IProbeHitData data, + final TileMultiblockMachineController controller) { + + MachineSpecial.super.onTOPInfo(probeMode, probeInfo, player, data, controller); } protected static void checkStructure(final MachineStructureUpdateEvent event) { diff --git a/src/main/java/github/kasuminova/novaeng/common/network/PktTerminalGuiData.java b/src/main/java/github/kasuminova/novaeng/common/network/PktTerminalGuiData.java index 444c2a64..4ba5b272 100644 --- a/src/main/java/github/kasuminova/novaeng/common/network/PktTerminalGuiData.java +++ b/src/main/java/github/kasuminova/novaeng/common/network/PktTerminalGuiData.java @@ -10,6 +10,7 @@ import github.kasuminova.novaeng.common.tile.TileHyperNetTerminal; import io.netty.buffer.ByteBuf; import it.unimi.dsi.fastutil.objects.Object2DoubleOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.client.Minecraft; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -23,15 +24,18 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import java.util.*; +import java.util.Collection; +import java.util.List; +import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; import java.util.stream.IntStream; public class PktTerminalGuiData implements IMessage, IMessageHandler { // Client Only Cache Data - private static final List UNLOCKED_DATA = new ArrayList<>(); + private static final List UNLOCKED_DATA = new ObjectArrayList<>(); private static final Object2DoubleOpenHashMap RESEARCHING_DATA = new Object2DoubleOpenHashMap<>(); - private static final List DATABASES = new ArrayList<>(); + private static final List DATABASES = new ObjectArrayList<>(); private static ResearchStationType researchStationType = null; private NBTTagCompound tag; @@ -79,7 +83,9 @@ public void toBytes(final ByteBuf buf) { return; } - Collection databases = center.getNode(Database.class); + Collection databases = center.getNode(Database.class).stream() + .filter(Database::isWorking) + .collect(Collectors.toList()); Set researchCognition = databases.stream() .flatMap(database -> database.getStoredResearchCognition().stream()) diff --git a/src/main/java/github/kasuminova/novaeng/common/profiler/CPacketProfilerDataProcessor.java b/src/main/java/github/kasuminova/novaeng/common/profiler/CPacketProfilerDataProcessor.java index d75569a7..d13affdd 100644 --- a/src/main/java/github/kasuminova/novaeng/common/profiler/CPacketProfilerDataProcessor.java +++ b/src/main/java/github/kasuminova/novaeng/common/profiler/CPacketProfilerDataProcessor.java @@ -6,6 +6,9 @@ import github.kasuminova.novaeng.common.handler.HyperNetEventHandler; import github.kasuminova.novaeng.common.network.packetprofiler.PktCProfilerRequest; import hellfirepvp.modularmachinery.common.util.MiscUtils; +import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.text.ITextComponent; @@ -15,7 +18,10 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.*; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Future; @@ -92,12 +98,12 @@ private void finish(ProcessedData result) { mergedPackets = result.mergedPackets().entrySet().stream() .sorted(Map.Entry.comparingByValue()) - .collect(LinkedHashMap::new, (map, entry) -> map.put(entry.getKey(), entry.getValue()), Map::putAll); + .collect(Object2ObjectLinkedOpenHashMap::new, (map, entry) -> map.put(entry.getKey(), entry.getValue()), Map::putAll); mergedTileEntityPackets = result.mergedTileEntityPackets().entrySet().stream() .sorted(Map.Entry.comparingByValue()) - .collect(LinkedHashMap::new, (map, entry) -> map.put(entry.getKey(), entry.getValue()), Map::putAll); + .collect(Object2ObjectLinkedOpenHashMap::new, (map, entry) -> map.put(entry.getKey(), entry.getValue()), Map::putAll); - List messages = new ArrayList<>(); + List messages = new ObjectArrayList<>(); messages.add(new TextComponentString(TextFormatting.GREEN + "收集任务完成,事件 ID: " + TextFormatting.YELLOW + currentEvent)); messages.add(new TextComponentString(TextFormatting.GREEN + "已收集数据: " + TextFormatting.YELLOW + receivedPlayers + "/" + players)); @@ -131,7 +137,7 @@ private void reset() { private ProcessedData getProcessedData() { Map sorted = receivedData.entrySet().stream() .sorted(Map.Entry.comparingByValue()) - .collect(LinkedHashMap::new, (map, entry) -> map.put(entry.getKey(), entry.getValue()), Map::putAll); + .collect(Object2ObjectLinkedOpenHashMap::new, (map, entry) -> map.put(entry.getKey(), entry.getValue()), Map::putAll); double totalBandwidthPerSecond = sorted.values().stream() .mapToDouble(CPacketProfilerData::getNetworkBandwidthPerSecond) @@ -147,8 +153,8 @@ private ProcessedData getProcessedData() { .max() .orElse(0); - Map mergedPackets = new HashMap<>(); - Map mergedTileEntityPackets = new HashMap<>(); + Map mergedPackets = new Object2ObjectOpenHashMap<>(); + Map mergedTileEntityPackets = new Object2ObjectOpenHashMap<>(); for (CPacketProfilerData data : sorted.values()) { final Map finalMergedPackets = mergedPackets; diff --git a/src/main/java/github/kasuminova/novaeng/common/profiler/SPacketProfiler.java b/src/main/java/github/kasuminova/novaeng/common/profiler/SPacketProfiler.java index 653ff818..3cdd0fb5 100644 --- a/src/main/java/github/kasuminova/novaeng/common/profiler/SPacketProfiler.java +++ b/src/main/java/github/kasuminova/novaeng/common/profiler/SPacketProfiler.java @@ -1,12 +1,10 @@ package github.kasuminova.novaeng.common.profiler; import com.mojang.authlib.GameProfile; -import github.kasuminova.novaeng.common.util.ClassUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.INetHandler; import net.minecraft.network.NetHandlerPlayServer; import net.minecraft.network.NetworkManager; -import net.minecraft.network.Packet; import net.minecraft.util.text.TextFormatting; import java.util.ArrayList; diff --git a/src/main/java/github/kasuminova/novaeng/common/registry/GenericRegistryPrimer.java b/src/main/java/github/kasuminova/novaeng/common/registry/GenericRegistryPrimer.java index 11aa1f14..4d7013b0 100644 --- a/src/main/java/github/kasuminova/novaeng/common/registry/GenericRegistryPrimer.java +++ b/src/main/java/github/kasuminova/novaeng/common/registry/GenericRegistryPrimer.java @@ -1,10 +1,10 @@ package github.kasuminova.novaeng.common.registry; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraftforge.registries.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistryEntry; import java.lang.reflect.Type; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -15,7 +15,7 @@ public class GenericRegistryPrimer { private GenericRegistryPrimer() { } - private final Map>> primed = new HashMap<>(); + private final Map>> primed = new Object2ObjectOpenHashMap<>(); public > V register(V entry) { Class type = entry.getRegistryType(); diff --git a/src/main/java/github/kasuminova/novaeng/common/registry/RegistryBlocks.java b/src/main/java/github/kasuminova/novaeng/common/registry/RegistryBlocks.java index ce4ca382..520b88cc 100644 --- a/src/main/java/github/kasuminova/novaeng/common/registry/RegistryBlocks.java +++ b/src/main/java/github/kasuminova/novaeng/common/registry/RegistryBlocks.java @@ -1,19 +1,64 @@ package github.kasuminova.novaeng.common.registry; import github.kasuminova.novaeng.NovaEngineeringCore; -import github.kasuminova.novaeng.common.block.*; -import github.kasuminova.novaeng.common.block.ecotech.ecalculator.*; -import github.kasuminova.novaeng.common.block.ecotech.efabricator.*; -import github.kasuminova.novaeng.common.block.ecotech.estorage.*; +import github.kasuminova.novaeng.common.block.BlockAngel; +import github.kasuminova.novaeng.common.block.BlockDreamEnergyPort; +import github.kasuminova.novaeng.common.block.BlockGeocentricDrillController; +import github.kasuminova.novaeng.common.block.BlockHyperNetTerminal; +import github.kasuminova.novaeng.common.block.BlockModularServerAssembler; +import github.kasuminova.novaeng.common.block.BlockRedstoneLogicalPort; +import github.kasuminova.novaeng.common.block.BlockSingularityCoreController; +import github.kasuminova.novaeng.common.block.ecotech.ecalculator.BlockECalculatorCasing; +import github.kasuminova.novaeng.common.block.ecotech.ecalculator.BlockECalculatorCellDrive; +import github.kasuminova.novaeng.common.block.ecotech.ecalculator.BlockECalculatorController; +import github.kasuminova.novaeng.common.block.ecotech.ecalculator.BlockECalculatorMEChannel; +import github.kasuminova.novaeng.common.block.ecotech.ecalculator.BlockECalculatorParallelProc; +import github.kasuminova.novaeng.common.block.ecotech.ecalculator.BlockECalculatorTail; +import github.kasuminova.novaeng.common.block.ecotech.ecalculator.BlockECalculatorThreadCore; +import github.kasuminova.novaeng.common.block.ecotech.ecalculator.BlockECalculatorThreadCoreHyper; +import github.kasuminova.novaeng.common.block.ecotech.ecalculator.BlockECalculatorTransmitterBus; +import github.kasuminova.novaeng.common.block.ecotech.efabricator.BlockEFabricatorCasing; +import github.kasuminova.novaeng.common.block.ecotech.efabricator.BlockEFabricatorController; +import github.kasuminova.novaeng.common.block.ecotech.efabricator.BlockEFabricatorMEChannel; +import github.kasuminova.novaeng.common.block.ecotech.efabricator.BlockEFabricatorParallelProc; +import github.kasuminova.novaeng.common.block.ecotech.efabricator.BlockEFabricatorPatternBus; +import github.kasuminova.novaeng.common.block.ecotech.efabricator.BlockEFabricatorVent; +import github.kasuminova.novaeng.common.block.ecotech.efabricator.BlockEFabricatorWorker; +import github.kasuminova.novaeng.common.block.ecotech.estorage.BlockEStorageCasing; +import github.kasuminova.novaeng.common.block.ecotech.estorage.BlockEStorageCellDrive; +import github.kasuminova.novaeng.common.block.ecotech.estorage.BlockEStorageController; +import github.kasuminova.novaeng.common.block.ecotech.estorage.BlockEStorageEnergyCell; +import github.kasuminova.novaeng.common.block.ecotech.estorage.BlockEStorageMEChannel; +import github.kasuminova.novaeng.common.block.ecotech.estorage.BlockEStorageVent; import github.kasuminova.novaeng.common.item.ItemBlockAngel; import github.kasuminova.novaeng.common.item.ItemBlockME; -import github.kasuminova.novaeng.common.item.ecalculator.*; -import github.kasuminova.novaeng.common.item.efabriactor.*; +import github.kasuminova.novaeng.common.item.ecalculator.ItemECalculatorCellDrive; +import github.kasuminova.novaeng.common.item.ecalculator.ItemECalculatorController; +import github.kasuminova.novaeng.common.item.ecalculator.ItemECalculatorMEChannel; +import github.kasuminova.novaeng.common.item.ecalculator.ItemECalculatorParallelProc; +import github.kasuminova.novaeng.common.item.ecalculator.ItemECalculatorThreadCore; +import github.kasuminova.novaeng.common.item.efabriactor.ItemEFabricatorController; +import github.kasuminova.novaeng.common.item.efabriactor.ItemEFabricatorMEChannel; +import github.kasuminova.novaeng.common.item.efabriactor.ItemEFabricatorParallelProc; +import github.kasuminova.novaeng.common.item.efabriactor.ItemEFabricatorPatternBus; +import github.kasuminova.novaeng.common.item.efabriactor.ItemEFabricatorWorker; import github.kasuminova.novaeng.common.item.estorage.ItemEStorageController; +import github.kasuminova.novaeng.common.tile.TileDreamEnergyPort; import github.kasuminova.novaeng.common.tile.TileHyperNetTerminal; import github.kasuminova.novaeng.common.tile.TileModularServerAssembler; -import github.kasuminova.novaeng.common.tile.ecotech.ecalculator.*; -import github.kasuminova.novaeng.common.tile.ecotech.efabricator.*; +import github.kasuminova.novaeng.common.tile.ecotech.ecalculator.ECalculatorCellDrive; +import github.kasuminova.novaeng.common.tile.ecotech.ecalculator.ECalculatorController; +import github.kasuminova.novaeng.common.tile.ecotech.ecalculator.ECalculatorMEChannel; +import github.kasuminova.novaeng.common.tile.ecotech.ecalculator.ECalculatorParallelProc; +import github.kasuminova.novaeng.common.tile.ecotech.ecalculator.ECalculatorTail; +import github.kasuminova.novaeng.common.tile.ecotech.ecalculator.ECalculatorThreadCore; +import github.kasuminova.novaeng.common.tile.ecotech.ecalculator.ECalculatorTransmitterBus; +import github.kasuminova.novaeng.common.tile.ecotech.efabricator.EFabricatorController; +import github.kasuminova.novaeng.common.tile.ecotech.efabricator.EFabricatorMEChannel; +import github.kasuminova.novaeng.common.tile.ecotech.efabricator.EFabricatorParallelProc; +import github.kasuminova.novaeng.common.tile.ecotech.efabricator.EFabricatorPatternBus; +import github.kasuminova.novaeng.common.tile.ecotech.efabricator.EFabricatorTail; +import github.kasuminova.novaeng.common.tile.ecotech.efabricator.EFabricatorWorker; import github.kasuminova.novaeng.common.tile.ecotech.estorage.EStorageCellDrive; import github.kasuminova.novaeng.common.tile.ecotech.estorage.EStorageController; import github.kasuminova.novaeng.common.tile.ecotech.estorage.EStorageEnergyCell; @@ -26,6 +71,7 @@ import hellfirepvp.modularmachinery.common.item.ItemBlockCustomName; import hellfirepvp.modularmachinery.common.item.ItemBlockMachineComponent; import hellfirepvp.modularmachinery.common.item.ItemBlockMachineComponentCustomName; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.block.Block; import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelResourceLocation; @@ -38,7 +84,6 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.GameRegistry; -import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -46,7 +91,7 @@ @SuppressWarnings({"MethodMayBeStatic", "UnusedReturnValue"}) public class RegistryBlocks { - public static final List BLOCK_MODEL_TO_REGISTER = new ArrayList<>(); + public static final List BLOCK_MODEL_TO_REGISTER = new ObjectArrayList<>(); @SubscribeEvent public void registerBlocks(RegistryEvent.Register event) { @@ -64,6 +109,8 @@ public static void registerBlocks() { prepareItemBlockRegister(new ItemBlockAngel(registerBlock(BlockAngel.INSTANCE))); prepareItemBlockRegister(registerBlock(BlockSingularityCoreController.INSTANCE)); prepareItemBlockRegister(registerBlock(BlockGeocentricDrillController.INSTANCE)); + prepareItemBlockRegister(registerBlock(BlockRedstoneLogicalPort.INSTANCE)); + prepareItemBlockRegister(registerBlock(BlockDreamEnergyPort.INSTANCE)); // EStorage prepareItemBlockRegister(new ItemEStorageController(registerBlock(BlockEStorageController.L4))); @@ -121,6 +168,7 @@ public static void registerTileEntities() { registerTileEntity(TileModularServerAssembler.class, "modular_server_assembler"); registerTileEntity(SingularityCore.class, "singularity_core"); registerTileEntity(GeocentricDrillController.class, "geocentric_drill_controller"); + registerTileEntity(TileDreamEnergyPort.class,"dream_energy_port"); // EStorage registerTileEntity(EStorageController.class, "estorage_controller"); diff --git a/src/main/java/github/kasuminova/novaeng/common/registry/RegistryHyperNet.java b/src/main/java/github/kasuminova/novaeng/common/registry/RegistryHyperNet.java index 8864b1cd..4b011aca 100644 --- a/src/main/java/github/kasuminova/novaeng/common/registry/RegistryHyperNet.java +++ b/src/main/java/github/kasuminova/novaeng/common/registry/RegistryHyperNet.java @@ -5,7 +5,12 @@ import crafttweaker.api.item.IItemStack; import crafttweaker.api.minecraft.CraftTweakerMC; import github.kasuminova.mmce.common.upgrade.UpgradeType; -import github.kasuminova.novaeng.common.hypernet.old.*; +import github.kasuminova.novaeng.common.hypernet.old.ComputationCenterType; +import github.kasuminova.novaeng.common.hypernet.old.DataProcessor; +import github.kasuminova.novaeng.common.hypernet.old.DataProcessorType; +import github.kasuminova.novaeng.common.hypernet.old.Database; +import github.kasuminova.novaeng.common.hypernet.old.DatabaseType; +import github.kasuminova.novaeng.common.hypernet.old.NetNode; import github.kasuminova.novaeng.common.hypernet.old.research.ResearchCognitionData; import github.kasuminova.novaeng.common.hypernet.old.research.ResearchStation; import github.kasuminova.novaeng.common.hypernet.old.research.ResearchStationType; diff --git a/src/main/java/github/kasuminova/novaeng/common/registry/RegistryItems.java b/src/main/java/github/kasuminova/novaeng/common/registry/RegistryItems.java index 11e60c1e..f6060d42 100644 --- a/src/main/java/github/kasuminova/novaeng/common/registry/RegistryItems.java +++ b/src/main/java/github/kasuminova/novaeng/common/registry/RegistryItems.java @@ -2,11 +2,16 @@ import github.kasuminova.novaeng.NovaEngineeringCore; import github.kasuminova.novaeng.client.renderer.EStorageEnergyCellItemRenderer; +import github.kasuminova.novaeng.common.item.ItemBasic; +import github.kasuminova.novaeng.common.item.ItemHorologiumCompass; import github.kasuminova.novaeng.common.item.ecalculator.ECalculatorCell; import github.kasuminova.novaeng.common.item.estorage.EStorageCellFluid; +import github.kasuminova.novaeng.common.item.estorage.EStorageCellGas; import github.kasuminova.novaeng.common.item.estorage.EStorageCellItem; import github.kasuminova.novaeng.common.item.estorage.ItemBlockEStorageEnergyCell; +import hellfirepvp.modularmachinery.common.base.Mods; import hellfirepvp.modularmachinery.common.item.ItemDynamicColor; +import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -19,7 +24,10 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import java.util.*; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Objects; import static hellfirepvp.modularmachinery.common.registry.RegistryItems.pendingDynamicColorItems; @@ -27,10 +35,11 @@ public class RegistryItems { public static final List ITEMS_TO_REGISTER = new LinkedList<>(); public static final List ITEMS_TO_REGISTER_CT = new LinkedList<>(); - public static final Map CUSTOM_MODEL_ITEMS_TO_REGISTER_CT = new LinkedHashMap<>(); + public static final Map CUSTOM_MODEL_ITEMS_TO_REGISTER_CT = new Object2ObjectLinkedOpenHashMap<>(); public static final List ITEM_MODELS_TO_REGISTER = new LinkedList<>(); - public static final Map ITEM_CUSTOM_MODELS_TO_REGISTER = new LinkedHashMap<>(); + public static final Map ITEM_CUSTOM_MODELS_TO_REGISTER = new Object2ObjectLinkedOpenHashMap<>(); + @SubscribeEvent public void registerItems(RegistryEvent.Register event) { @@ -42,10 +51,19 @@ public void registerItems(RegistryEvent.Register event) { ITEMS_TO_REGISTER.add(EStorageCellFluid.LEVEL_A); ITEMS_TO_REGISTER.add(EStorageCellFluid.LEVEL_B); ITEMS_TO_REGISTER.add(EStorageCellFluid.LEVEL_C); - + if (Mods.MEKENG.isPresent()) { + ITEMS_TO_REGISTER.add(EStorageCellGas.LEVEL_A); + ITEMS_TO_REGISTER.add(EStorageCellGas.LEVEL_B); + ITEMS_TO_REGISTER.add(EStorageCellGas.LEVEL_C); + } ITEMS_TO_REGISTER.add(ECalculatorCell.L4); ITEMS_TO_REGISTER.add(ECalculatorCell.L6); ITEMS_TO_REGISTER.add(ECalculatorCell.L9); + if (Mods.ASTRAL_SORCERY.isPresent()) { + ITEMS_TO_REGISTER.add(ItemHorologiumCompass.INSTANCE); + } + + ITEMS_TO_REGISTER.addAll(ItemBasic.getAllItem()); registerItems(); diff --git a/src/main/java/github/kasuminova/novaeng/common/registry/ServerModuleRegistry.java b/src/main/java/github/kasuminova/novaeng/common/registry/ServerModuleRegistry.java index ac4acfb7..7d0515a0 100644 --- a/src/main/java/github/kasuminova/novaeng/common/registry/ServerModuleRegistry.java +++ b/src/main/java/github/kasuminova/novaeng/common/registry/ServerModuleRegistry.java @@ -6,13 +6,13 @@ import crafttweaker.api.minecraft.CraftTweakerMC; import github.kasuminova.novaeng.common.hypernet.computer.module.base.ServerModuleBase; import github.kasuminova.novaeng.common.item.ItemServerModule; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenMethod; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -20,8 +20,8 @@ @ZenClass("novaeng.hypernet.server.module.ServerModuleRegistry") public class ServerModuleRegistry { - private static final Map> MODULE_BASE_REGISTRY = new HashMap<>(); - private static final Map MODULE_ITEM_REGISTRY = new HashMap<>(); + private static final Map> MODULE_BASE_REGISTRY = new Object2ObjectOpenHashMap<>(); + private static final Map MODULE_ITEM_REGISTRY = new Object2ObjectOpenHashMap<>(); @ZenMethod public static void registryModuleBase(final ServerModuleBase module) { diff --git a/src/main/java/github/kasuminova/novaeng/common/tile/MEPatternProviderNova.java b/src/main/java/github/kasuminova/novaeng/common/tile/MEPatternProviderNova.java new file mode 100644 index 00000000..e154c073 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/tile/MEPatternProviderNova.java @@ -0,0 +1,13 @@ +package github.kasuminova.novaeng.common.tile; + +import github.kasuminova.mmce.common.tile.MEPatternProvider; + +public interface MEPatternProviderNova { + + MEPatternProvider.WorkModeSetting getWorkMode(); + + boolean r$isIgnoreParallel(); + + void r$IgnoreParallel(); + +} diff --git a/src/main/java/github/kasuminova/novaeng/common/tile/TileDreamEnergyPort.java b/src/main/java/github/kasuminova/novaeng/common/tile/TileDreamEnergyPort.java new file mode 100644 index 00000000..7cefaf60 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/tile/TileDreamEnergyPort.java @@ -0,0 +1,92 @@ +package github.kasuminova.novaeng.common.tile; + +import github.kasuminova.novaeng.common.block.BlockDreamEnergyPort; +import github.kasuminova.novaeng.common.handler.DreamEnergyPortHandler; +import github.kasuminova.novaeng.common.machine.DreamEnergyCore; +import hellfirepvp.modularmachinery.common.tiles.base.TileMultiblockMachineController; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.math.BlockPos; +import org.jetbrains.annotations.NotNull; +import sonar.fluxnetworks.FluxConfig; +import sonar.fluxnetworks.api.network.ITransferHandler; +import sonar.fluxnetworks.common.tileentity.TileFluxStorage; + +public class TileDreamEnergyPort extends TileFluxStorage { + + private final DreamEnergyPortHandler handler; + private final ItemStack stack; + private BlockPos ctrlPos; + + public BlockPos getCtrlPos() { + return this.ctrlPos; + } + + public TileDreamEnergyPort() { + this.customName = "Dream Energy Port"; + this.limit = (long) FluxConfig.gargantuanTransfer; + this.stack = new ItemStack(BlockDreamEnergyPort.INSTANCE); + this.handler = new DreamEnergyPortHandler(this); + } + + @Override + public long getMaxTransferLimit() { + if (ctrlPos == null || !getCtrlStructureFormed()) { + return 0; + } + return Long.MAX_VALUE; + } + + @Override + public ItemStack getDisplayStack() { + return this.writeStorageToDisplayStack(stack); + } + + @NotNull + @Override + public NBTTagCompound writeToNBT(NBTTagCompound compound) { + super.writeToNBT(compound); + if (ctrlPos != null){ + compound.setLong("ctrlPos",this.ctrlPos.toLong()); + } + return compound; + } + + @Override + public int getLogicPriority() { + return this.surgeMode ? -100000 : Math.min(this.priority - 1000000, -100000); + } + + @Override + public void readFromNBT(NBTTagCompound compound) { + super.readFromNBT(compound); + if (compound.hasKey("ctrlPos")){ + this.ctrlPos = BlockPos.fromLong(compound.getLong("ctrlPos")); + this.handler.setCtrlPos(this.ctrlPos); + this.handler.setWorld(this.world); + } + } + + @Override + public ITransferHandler getTransferHandler() { + return this.handler; + } + + public boolean getCtrlStructureFormed(){ + if (this.ctrlPos == null){ + return false; + } + if (this.world.getTileEntity(ctrlPos) instanceof TileMultiblockMachineController ctrl) { + if (ctrl.getFoundMachine() != null && ctrl.getFoundMachine().getRegistryName().equals(DreamEnergyCore.REGISTRY_NAME)){ + return ctrl.isStructureFormed(); + } + } + return false; + } + + public void setCtrlPos(BlockPos pos){ + this.ctrlPos = pos; + this.handler.setCtrlPos(pos); + this.handler.setWorld(this.world); + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/tile/TileHyperNetTerminal.java b/src/main/java/github/kasuminova/novaeng/common/tile/TileHyperNetTerminal.java index ee6474d4..1138c060 100644 --- a/src/main/java/github/kasuminova/novaeng/common/tile/TileHyperNetTerminal.java +++ b/src/main/java/github/kasuminova/novaeng/common/tile/TileHyperNetTerminal.java @@ -12,6 +12,7 @@ import hellfirepvp.modularmachinery.common.machine.MachineRegistry; import hellfirepvp.modularmachinery.common.util.IEnergyHandlerAsync; import hellfirepvp.modularmachinery.common.util.IOInventory; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.block.state.IBlockState; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; @@ -21,7 +22,6 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.ArrayList; import java.util.List; public class TileHyperNetTerminal extends TileCustomController { @@ -29,7 +29,7 @@ public class TileHyperNetTerminal extends TileCustomController { public static final int ENERGY_USAGE = 2_000; private final HyperNetTerminal nodeProxy = new HyperNetTerminal(this); - private final List energyHandlers = new ArrayList<>(); + private final List energyHandlers = new ObjectArrayList<>(); private IOInventory cardInventory; diff --git a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/ecalculator/ECalculatorParallelProc.java b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/ecalculator/ECalculatorParallelProc.java index 47ef1b6b..bc5c2168 100644 --- a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/ecalculator/ECalculatorParallelProc.java +++ b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/ecalculator/ECalculatorParallelProc.java @@ -1,34 +1,26 @@ package github.kasuminova.novaeng.common.tile.ecotech.ecalculator; -import net.minecraft.nbt.NBTTagCompound; +import github.kasuminova.novaeng.common.block.ecotech.ecalculator.BlockECalculatorParallelProc; +import net.minecraft.block.Block; public class ECalculatorParallelProc extends ECalculatorPart { - public int parallelism = 0; + private Block block; public ECalculatorParallelProc() { - } - public ECalculatorParallelProc(final int parallelism) { - this.parallelism = parallelism; } public int getParallelism() { - return parallelism; + return ((BlockECalculatorParallelProc)this.getBlock()).getParallelism(); } - @Override - public void readCustomNBT(final NBTTagCompound compound) { - super.readCustomNBT(compound); - this.parallelism = compound.getShort("parallelism"); + public Block getBlock() { + if (this.block == null && this.world != null) { + this.block = this.world.getBlockState(this.pos).getBlock(); + } - updateContainingBlockInfo(); - } - - @Override - public void writeCustomNBT(final NBTTagCompound compound) { - super.writeCustomNBT(compound); - compound.setShort("parallelism", (short) this.parallelism); + return this.block; } @Override diff --git a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/efabricator/EFabricatorController.java b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/efabricator/EFabricatorController.java index 63bd848a..04b44a40 100644 --- a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/efabricator/EFabricatorController.java +++ b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/efabricator/EFabricatorController.java @@ -27,6 +27,7 @@ import hellfirepvp.modularmachinery.client.ClientProxy; import hellfirepvp.modularmachinery.common.machine.MachineRegistry; import hellfirepvp.modularmachinery.common.util.ItemUtils; +import it.unimi.dsi.fastutil.objects.Object2ObjectAVLTreeMap; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -39,12 +40,19 @@ import net.minecraftforge.fluids.capability.IFluidTankProperties; import net.minecraftforge.fml.common.FMLCommonHandler; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Comparator; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; -import static github.kasuminova.novaeng.common.block.ecotech.efabricator.BlockEFabricatorController.*; +import static github.kasuminova.novaeng.common.block.ecotech.efabricator.BlockEFabricatorController.L4; +import static github.kasuminova.novaeng.common.block.ecotech.efabricator.BlockEFabricatorController.L6; +import static github.kasuminova.novaeng.common.block.ecotech.efabricator.BlockEFabricatorController.L9; @SuppressWarnings({"FieldAccessedSynchronizedAndUnsynchronized", "unused"}) public class EFabricatorController extends EPartController { @@ -261,8 +269,8 @@ protected void updateComponents() { @Override protected void onAddPart(final EFabricatorPart part) { - if (part instanceof EFabricatorMEChannel channel) { - this.channel = channel; + if (part instanceof EFabricatorMEChannel channelc) { + this.channel = channelc; } } @@ -281,7 +289,7 @@ protected void updateParallelism() { .filter(modifier -> modifier.isBuff() || !activeCooling) // 主动冷却移除超频的负面效果。 .collect(Collectors.groupingBy( Modifier::getType, - () -> new TreeMap<>(Comparator.comparingInt(EFabricatorParallelProc.Type::getPriority)), + () -> new Object2ObjectAVLTreeMap<>(Comparator.comparingInt(EFabricatorParallelProc.Type::getPriority)), Collectors.toList()) ); @@ -349,11 +357,14 @@ public boolean insertPattern(final ItemStack patternStack) { public boolean offerWork(EFabricatorWorker.CraftWork work) { boolean success = false; - for (EFabricatorWorker fabricatorWorker : getWorkers()) { - if (!fabricatorWorker.isFull()) { - fabricatorWorker.offerWork(work); + for (EFabricatorWorker worker : getWorkers()) { + if (!worker.isFull()) { + var i = worker.getRemainingSpace(); + worker.offerWork(work.split(i)); success = true; - break; + if (work.getSize() < 1) { + break; + } } } if (success && activeCooling && !speedupApplied) { diff --git a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/efabricator/EFabricatorMEChannel.java b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/efabricator/EFabricatorMEChannel.java index 1d3fa626..907c73ee 100644 --- a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/efabricator/EFabricatorMEChannel.java +++ b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/efabricator/EFabricatorMEChannel.java @@ -19,7 +19,8 @@ import appeng.me.helpers.AENetworkProxy; import appeng.me.helpers.IGridProxyable; import appeng.me.helpers.MachineSource; -import appeng.util.Platform; +import com.glodblock.github.common.item.ItemFluidPacket; +import com.glodblock.github.common.item.fake.FakeItemRegister; import com.glodblock.github.util.FluidCraftingPatternDetails; import github.kasuminova.mmce.common.util.PatternItemFilter; import github.kasuminova.novaeng.common.block.ecotech.efabricator.BlockEFabricatorMEChannel; @@ -28,10 +29,10 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fluids.FluidStack; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.Arrays; import java.util.List; public class EFabricatorMEChannel extends EFabricatorPart implements ICraftingProvider, IActionHost, IGridProxyable { @@ -99,8 +100,8 @@ public boolean pushPattern(final ICraftingPatternDetails pattern, final Inventor } if (!pattern.isCraftable()) { - if (pattern instanceof FluidCraftingPatternDetails) { - return pushFluidPattern((FluidCraftingPatternDetails) pattern); + if (pattern instanceof FluidCraftingPatternDetails f) { + return pushFluidPattern(f,table); } return false; } @@ -111,21 +112,72 @@ public boolean pushPattern(final ICraftingPatternDetails pattern, final Inventor } ItemStack[] remaining = new ItemStack[9]; + int size = 0; for (int i = 0; i < Math.min(table.getSizeInventory(), 9); ++i) { - remaining[i] = Platform.getContainerItem(table.getStackInSlot(i)); + var item = table.getStackInSlot(i); + if (item.isEmpty()){ + remaining[i] = ItemStack.EMPTY; + } else { + if (size == 0) { + size = item.getCount(); + } + remaining[i] = getContainerItem(item); + } } - return partController.offerWork(new EFabricatorWorker.CraftWork(remaining, output)); - } + output.setCount(output.getCount() * size); - protected boolean pushFluidPattern(FluidCraftingPatternDetails pattern) { - ItemStack[] remaining = new ItemStack[9]; - Arrays.fill(remaining, ItemStack.EMPTY); + return partController.offerWork(new EFabricatorWorker.CraftWork(remaining, output, size)); + } + protected boolean pushFluidPattern(final FluidCraftingPatternDetails pattern,final InventoryCrafting table) { IAEItemStack[] outputs = pattern.getOutputs(); ItemStack output = outputs[0] != null ? outputs[0].getCachedItemStack(outputs[0].getStackSize()) : ItemStack.EMPTY; - return partController.offerWork(new EFabricatorWorker.CraftWork(remaining, output)); + if (output.isEmpty())return false; + + ItemStack[] remaining = new ItemStack[9]; + int size = 0; + for (int i = 0; i < Math.min(table.getSizeInventory(), 9); ++i) { + var item = table.getStackInSlot(i); + if (item.isEmpty()){ + remaining[i] = ItemStack.EMPTY; + } else { + if (size == 0) { + size = item.getCount(); + if (item.getItem() instanceof ItemFluidPacket) { + var amount = ((FluidStack) FakeItemRegister.getStack(item)).amount; + var pamount = ((FluidStack) FakeItemRegister.getStack(pattern.getInputs()[i])).amount; + size = amount/pamount; + } + } + remaining[i] = getContainerItem(item); + } + } + + output.setCount(output.getCount() * size); + + return partController.offerWork(new EFabricatorWorker.CraftWork(remaining, output, size)); + } + + private static ItemStack getContainerItem(ItemStack stackInSlot) { + if (stackInSlot == null) { + return ItemStack.EMPTY; + } else { + Item i = stackInSlot.getItem(); + if (i != null && i.hasContainerItem(stackInSlot)) { + ItemStack ci = i.getContainerItem(stackInSlot); + if (!ci.isEmpty() && ci.isItemStackDamageable() && ci.getItemDamage() == ci.getMaxDamage()) { + ci = ItemStack.EMPTY; + } + + ci.setCount(stackInSlot.getCount()); + return ci; + } else if (!stackInSlot.isEmpty()) { + stackInSlot.setCount(0); + return stackInSlot; + } else return ItemStack.EMPTY; + } } public boolean insertPattern(final ItemStack patternStack) { @@ -143,7 +195,7 @@ public boolean isBusy() { if (partController != null) { return partController.isQueueFull(); } - return false; + return true; } // Misc diff --git a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/efabricator/EFabricatorWorker.java b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/efabricator/EFabricatorWorker.java index 123f8d54..03e1716b 100644 --- a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/efabricator/EFabricatorWorker.java +++ b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/efabricator/EFabricatorWorker.java @@ -7,6 +7,7 @@ import github.kasuminova.novaeng.common.block.ecotech.efabricator.prop.WorkerStatus; import github.kasuminova.novaeng.common.network.PktEFabricatorWorkerStatusUpdate; import hellfirepvp.modularmachinery.common.util.ItemUtils; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -14,7 +15,10 @@ import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.network.NetworkRegistry; -import java.util.*; +import java.util.ArrayDeque; +import java.util.Arrays; +import java.util.Deque; +import java.util.List; public class EFabricatorWorker extends EFabricatorPart { @@ -35,6 +39,10 @@ public class EFabricatorWorker extends EFabricatorPart { public EFabricatorWorker() { } + public int getRemainingSpace(){ + return this.getQueueDepth() - this.queue.size(); + } + public synchronized int doWork() { EFabricatorController controller = partController; int coolantCache = controller.getCoolantCache(); @@ -60,7 +68,7 @@ public synchronized int doWork() { } } outputBuffer.add(AEItemStack.fromItemStack(craftWork.getOutput())); - completed++; + completed += parallelism; } } @@ -197,10 +205,11 @@ public static class CraftingQueue { private static final String STACK_SET_SIZE_TAG = "SSS"; private static final String REPEAT_TAG = "R"; - private final Deque queue = new ArrayDeque<>(); + private final Deque queue = new ArrayDeque<>(); + private int size = 0; public int size() { - return queue.size(); + return size; } public boolean isEmpty() { @@ -209,10 +218,17 @@ public boolean isEmpty() { public void add(final EFabricatorWorker.CraftWork craftWork) { queue.add(craftWork); + size += craftWork.size; } public EFabricatorWorker.CraftWork poll() { - return queue.poll(); + var i = queue.poll(); + if (i != null) { + size -= i.size; + } else { + size = 0; + } + return i; } public EFabricatorWorker.CraftWork peek() { @@ -228,7 +244,7 @@ public NBTTagCompound writeToNBT(final NBTTagCompound nbt) { return nbt; } - List stackSet = new ArrayList<>(); + List stackSet = new ObjectArrayList<>(); // Queue NBTTagList queueTag = new NBTTagList(); @@ -267,7 +283,7 @@ public NBTTagCompound writeToNBT(final NBTTagCompound nbt) { public void readFromNBT(final NBTTagCompound nbt) { queue.clear(); - List stackSet = new ArrayList<>(); + List stackSet = new ObjectArrayList<>(); // StackSet NBTTagCompound stackSetTag = nbt.getCompoundTag(STACK_SET_TAG); @@ -295,13 +311,20 @@ public static class CraftWork { private static final String REMAIN_TAG_PREFIX = "R#"; private static final String REMAIN_SIZE_TAG = REMAIN_TAG_PREFIX + "S"; private static final String OUTPUT_TAG = "O"; + private static final String SIZE = "Z"; private final ItemStack[] remaining; private final ItemStack output; + private int size; - public CraftWork(final ItemStack[] remaining, final ItemStack output) { + public CraftWork(final ItemStack[] remaining, final ItemStack output,final int size) { this.remaining = remaining; this.output = output; + this.size = Math.max(1,size); + } + + public int getSize() { + return size; } public CraftWork(final NBTTagCompound nbt, final List stackSet) { @@ -311,6 +334,27 @@ public CraftWork(final NBTTagCompound nbt, final List stackSet) { remaining[remainIdx] = setIdx == -1 ? ItemStack.EMPTY : stackSet.get(setIdx); } output = stackSet.get(nbt.getInteger(OUTPUT_TAG)); + size = Math.max(1,nbt.getInteger(SIZE)); + } + + public CraftWork split(int amount){ + final var i = Math.min(amount,this.size); + final var inputs = new ItemStack[this.remaining.length]; + for (int ii = 0; ii < remaining.length; ii++) { + inputs[ii] = remaining[ii].splitStack(i); + } + final var output = this.output.copy(); + if (size > 0) { + final var eachOutput = this.output.getCount() / size; + final var outCount = i * eachOutput; + output.setCount(outCount); + this.output.shrink(outCount); + size -= i; + return new CraftWork(inputs, output, i); + } else { + output.setCount(0); + return new CraftWork(inputs, output, 0); + } } public NBTTagCompound writeToNBT(final List stackSet) { @@ -346,12 +390,13 @@ public NBTTagCompound writeToNBT(final List stackSet) { stackSet.add(output); nbt.setShort(OUTPUT_TAG, (short) (stackSet.size() - 1)); + nbt.setInteger(SIZE,size); return nbt; } public CraftWork copy() { ItemStack[] remaining = Arrays.stream(this.remaining).map(ItemStack::copy).toArray(ItemStack[]::new); - return new CraftWork(remaining, output.copy()); + return new CraftWork(remaining, output.copy(),this.size); } @Override diff --git a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/estorage/EStorageCellDrive.java b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/estorage/EStorageCellDrive.java index c62c967f..2605ac2a 100644 --- a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/estorage/EStorageCellDrive.java +++ b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/estorage/EStorageCellDrive.java @@ -4,7 +4,12 @@ import appeng.api.networking.events.MENetworkCellArrayUpdate; import appeng.api.networking.security.IActionSource; import appeng.api.networking.storage.IStorageGrid; -import appeng.api.storage.*; +import appeng.api.storage.ICellInventory; +import appeng.api.storage.ICellInventoryHandler; +import appeng.api.storage.IMEInventory; +import appeng.api.storage.IMEInventoryHandler; +import appeng.api.storage.ISaveProvider; +import appeng.api.storage.IStorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEStack; import appeng.api.storage.data.IItemList; @@ -25,8 +30,10 @@ import github.kasuminova.novaeng.common.estorage.EStorageCellHandler; import github.kasuminova.novaeng.common.item.estorage.EStorageCell; import github.kasuminova.novaeng.common.item.estorage.EStorageCellFluid; +import github.kasuminova.novaeng.common.item.estorage.EStorageCellGas; import github.kasuminova.novaeng.common.item.estorage.EStorageCellItem; import github.kasuminova.novaeng.common.network.PktCellDriveStatusUpdate; +import hellfirepvp.modularmachinery.common.base.Mods; import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -69,6 +76,7 @@ public static int getMaxTypes(final EStorageCellData data) { case EMPTY -> 0; case ITEM -> 315; case FLUID -> 25; + case GAS -> Mods.MEKENG.isPresent() ? 25 : 0; }; } @@ -89,6 +97,12 @@ public static long getMaxBytes(final EStorageCellData data) { case B -> EStorageCellFluid.LEVEL_B.getBytes(ItemStack.EMPTY); case C -> EStorageCellFluid.LEVEL_C.getBytes(ItemStack.EMPTY); }; + case GAS -> Mods.MEKENG.isPresent() ? switch (level) { + case EMPTY -> 0; + case A -> EStorageCellGas.LEVEL_A.getBytes(ItemStack.EMPTY); + case B -> EStorageCellGas.LEVEL_B.getBytes(ItemStack.EMPTY); + case C -> EStorageCellGas.LEVEL_C.getBytes(ItemStack.EMPTY); + } : 0; }; } @@ -202,6 +216,8 @@ public static DriveStorageType getCellType(final EStorageCell cell) { type = DriveStorageType.ITEM; } else if (cell instanceof EStorageCellFluid) { type = DriveStorageType.FLUID; + } else if (Mods.MEKENG.isPresent() && cell instanceof EStorageCellGas) { + type = DriveStorageType.GAS; } else { return null; } diff --git a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/estorage/EStorageController.java b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/estorage/EStorageController.java index b2a37fa1..1b059dfc 100644 --- a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/estorage/EStorageController.java +++ b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/estorage/EStorageController.java @@ -20,7 +20,12 @@ import net.minecraftforge.fml.common.FMLCommonHandler; import javax.annotation.Nullable; -import java.util.*; +import java.util.Arrays; +import java.util.Comparator; +import java.util.LinkedList; +import java.util.List; +import java.util.PriorityQueue; +import java.util.Queue; public class EStorageController extends EPartController { @@ -76,8 +81,8 @@ protected void onAddPart(final EStoragePart part) { if (part instanceof EStorageEnergyCell energyCell) { energyCellsMax.add(energyCell); energyCellsMin.add(energyCell); - } else if (part instanceof EStorageMEChannel channel) { - this.channel = channel; + } else if (part instanceof EStorageMEChannel c) { + this.channel = c; } } diff --git a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/estorage/EStorageMEChannel.java b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/estorage/EStorageMEChannel.java index c4ef93db..4f97c10e 100644 --- a/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/estorage/EStorageMEChannel.java +++ b/src/main/java/github/kasuminova/novaeng/common/tile/ecotech/estorage/EStorageMEChannel.java @@ -6,7 +6,11 @@ import appeng.api.networking.GridFlags; import appeng.api.networking.IGridNode; import appeng.api.networking.energy.IAEPowerStorage; -import appeng.api.networking.events.*; +import appeng.api.networking.events.MENetworkCellArrayUpdate; +import appeng.api.networking.events.MENetworkChannelsChanged; +import appeng.api.networking.events.MENetworkEventSubscribe; +import appeng.api.networking.events.MENetworkPowerStatusChange; +import appeng.api.networking.events.MENetworkPowerStorage; import appeng.api.networking.security.IActionHost; import appeng.api.networking.security.IActionSource; import appeng.api.storage.ICellContainer; @@ -88,7 +92,7 @@ protected void postCellArrayUpdateEvent() { this.wasActive = currentActive; try { this.proxy.getGrid().postEvent(new MENetworkCellArrayUpdate()); - } catch (final GridAccessException e) { + } catch (final GridAccessException ignored) { } } } diff --git a/src/main/java/github/kasuminova/novaeng/common/tile/machine/GeocentricDrillController.java b/src/main/java/github/kasuminova/novaeng/common/tile/machine/GeocentricDrillController.java index edf2d962..9e3cc406 100644 --- a/src/main/java/github/kasuminova/novaeng/common/tile/machine/GeocentricDrillController.java +++ b/src/main/java/github/kasuminova/novaeng/common/tile/machine/GeocentricDrillController.java @@ -21,7 +21,10 @@ import java.util.Set; -import static github.kasuminova.novaeng.common.machine.GeocentricDrill.*; +import static github.kasuminova.novaeng.common.machine.GeocentricDrill.MAX_DEPTH; +import static github.kasuminova.novaeng.common.machine.GeocentricDrill.MAX_PARALLELISM; +import static github.kasuminova.novaeng.common.machine.GeocentricDrill.MIN_DEPTH; +import static github.kasuminova.novaeng.common.machine.GeocentricDrill.PARALLELISM_PER_DEPTH; public class GeocentricDrillController extends TileMachineController { @@ -75,7 +78,7 @@ public Set getAccelerateOres() { } public synchronized void addAccelerateOre(final String accelerateOre) { - if (GeocentricDrill.GEOCENTRIC_DRILL.getRawOres().containsKey(accelerateOre)) { + if (GeocentricDrill.INSTANCE.getRawOres().containsKey(accelerateOre)) { accelerateOres.add(accelerateOre); accelerateOresChanged = true; markNoUpdateSync(); @@ -91,7 +94,7 @@ public synchronized void removeAccelerateOre(final String accelerateOre) { @Override public synchronized RecipeCraftingContext createContext(final ActiveMachineRecipe activeRecipe) { - MachineRecipe newRecipe = GeocentricDrill.GEOCENTRIC_DRILL.rebuildRecipe(activeRecipe.getRecipe(), accelerateOres); + MachineRecipe newRecipe = GeocentricDrill.INSTANCE.rebuildRecipe(activeRecipe.getRecipe(), accelerateOres); ActiveMachineRecipe modifiedRecipe = new ActiveMachineRecipe(newRecipe, activeRecipe.getMaxParallelism()); modifiedRecipe.setTick(activeRecipe.getTick()); modifiedRecipe.setTotalTick(activeRecipe.getTotalTick()); diff --git a/src/main/java/github/kasuminova/novaeng/common/trait/Register.java b/src/main/java/github/kasuminova/novaeng/common/trait/Register.java new file mode 100644 index 00000000..1310d72f --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/trait/Register.java @@ -0,0 +1,23 @@ +package github.kasuminova.novaeng.common.trait; + +import com.google.common.collect.Lists; +import github.kasuminova.novaeng.common.enchantment.MagicBreaking; +import github.kasuminova.novaeng.common.item.ItemBasic; +import slimeknights.tconstruct.library.modifiers.Modifier; +import slimeknights.tconstruct.tools.AbstractToolPulse; + +import java.util.List; + +public class Register extends AbstractToolPulse { + + public static Register TRAITREGISTER = new Register(); + public List modifierTraitsF = Lists.newLinkedList(); + public List modifierTraitsT = Lists.newLinkedList(); + + public void registerModifiers() { + TraitMagicBreaking traitMagicBreaking = registerModifier(new TraitMagicBreaking()); + traitMagicBreaking.addItem(ItemBasic.getItem(MagicBreaking.MAGICBREAKING.getId() + "_stone"), 1, 1); + + modifierTraitsF.add(traitMagicBreaking); + } +} \ No newline at end of file diff --git a/src/main/java/github/kasuminova/novaeng/common/trait/TraitMagicBreaking.java b/src/main/java/github/kasuminova/novaeng/common/trait/TraitMagicBreaking.java new file mode 100644 index 00000000..f1b2642b --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/trait/TraitMagicBreaking.java @@ -0,0 +1,21 @@ +package github.kasuminova.novaeng.common.trait; + +import github.kasuminova.novaeng.common.enchantment.MagicBreaking; +import net.minecraft.nbt.NBTTagCompound; +import slimeknights.tconstruct.library.modifiers.ModifierAspect; +import slimeknights.tconstruct.library.utils.ToolBuilder; +import slimeknights.tconstruct.tools.modifiers.ToolModifier; + +public class TraitMagicBreaking extends ToolModifier { + + public TraitMagicBreaking() { + super("magic_breaking", 0x8470FF); + addAspects(new ModifierAspect.SingleAspect(this), new ModifierAspect.DataAspect(this), ModifierAspect.freeModifier); + } + + @Override + public void applyEffect(NBTTagCompound rootCompound, NBTTagCompound modifierTag) { + ToolBuilder.addEnchantment(rootCompound, MagicBreaking.MAGICBREAKING); + } + +} diff --git a/src/main/java/github/kasuminova/novaeng/common/util/BlockPos2ValueMap.java b/src/main/java/github/kasuminova/novaeng/common/util/BlockPos2ValueMap.java index 7a55f3d3..6b4fa056 100644 --- a/src/main/java/github/kasuminova/novaeng/common/util/BlockPos2ValueMap.java +++ b/src/main/java/github/kasuminova/novaeng/common/util/BlockPos2ValueMap.java @@ -6,7 +6,11 @@ import net.minecraft.util.math.BlockPos; import javax.annotation.Nonnull; -import java.util.*; +import java.util.AbstractSet; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; public class BlockPos2ValueMap implements Map { diff --git a/src/main/java/github/kasuminova/novaeng/common/util/ColorUtils.java b/src/main/java/github/kasuminova/novaeng/common/util/ColorUtils.java index 4eb8eafa..576dff4e 100644 --- a/src/main/java/github/kasuminova/novaeng/common/util/ColorUtils.java +++ b/src/main/java/github/kasuminova/novaeng/common/util/ColorUtils.java @@ -1,6 +1,6 @@ package github.kasuminova.novaeng.common.util; -import java.awt.*; +import java.awt.Color; public class ColorUtils { diff --git a/src/main/java/github/kasuminova/novaeng/common/util/FixedSizeDeque.java b/src/main/java/github/kasuminova/novaeng/common/util/FixedSizeDeque.java new file mode 100644 index 00000000..151485ac --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/util/FixedSizeDeque.java @@ -0,0 +1,73 @@ +package github.kasuminova.novaeng.common.util; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayDeque; +import java.util.Deque; +import java.util.Iterator; +import java.util.List; +import java.util.Spliterator; +import java.util.function.Consumer; + +public class FixedSizeDeque implements Iterable { + private final Deque deque; + private final int maxSize; + + public FixedSizeDeque(int maxSize) { + this.maxSize = maxSize; + this.deque = new ArrayDeque<>(maxSize); + } + + public void addFirst(E element) { + deque.addFirst(element); + if (deque.size() > maxSize) { + deque.removeLast(); + } + } + + public List getList() { + return new ObjectArrayList<>(deque); + } + + public E get(int index) { + if (index < 0 || index >= deque.size()) { + throw new IndexOutOfBoundsException(); + } + return deque.stream().skip(index).findFirst().orElse(null); + } + + public E getFirst() { + if (deque.isEmpty()){ + return null; + } + return deque.getFirst(); + } + + public E getLast(){ + if (deque.isEmpty()){ + return null; + } + return deque.getLast(); + } + + public int size() { + return deque.size(); + } + + @Override + @NotNull + public Iterator iterator() { + return deque.iterator(); + } + + @Override + public void forEach(Consumer action) { + deque.forEach(action); + } + + @Override + public Spliterator spliterator() { + return deque.spliterator(); + } +} \ No newline at end of file diff --git a/src/main/java/github/kasuminova/novaeng/common/util/IBlockPosEx.java b/src/main/java/github/kasuminova/novaeng/common/util/IBlockPosEx.java new file mode 100644 index 00000000..b7971493 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/util/IBlockPosEx.java @@ -0,0 +1,31 @@ +package github.kasuminova.novaeng.common.util; + +import crafttweaker.annotations.ZenRegister; +import crafttweaker.api.world.IBlockPos; +import crafttweaker.api.world.IFacing; +import crafttweaker.mc1120.world.MCBlockPos; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.BlockPos; +import stanhebben.zenscript.annotations.ZenExpansion; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenRegister +@ZenExpansion("crafttweaker.world.IBlockPos") +public class IBlockPosEx { + + @ZenMethod + public static IBlockPos createPosByFacing(IBlockPos instance,IFacing facing,int NorthX,int NorthY,int NorthZ){ + return new MCBlockPos(createPosByFacing((BlockPos) instance.getInternal(),(EnumFacing) facing.getInternal(),NorthX,NorthY,NorthZ)); + } + + public static BlockPos createPosByFacing(BlockPos instance, EnumFacing facing, int x, int y, int z){ + return switch (facing) { + case NORTH -> instance.add(x,y,z); + case SOUTH -> instance.add(-x,y,-z); + case EAST -> instance.add(-z,y,x); + case WEST -> instance.add(z,y,-x); + case UP -> instance.add(x,-z,y); + case DOWN -> instance.add(x,z,y); + }; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/util/IDataUtils.java b/src/main/java/github/kasuminova/novaeng/common/util/IDataUtils.java new file mode 100644 index 00000000..3e081fc7 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/util/IDataUtils.java @@ -0,0 +1,130 @@ +package github.kasuminova.novaeng.common.util; + +import crafttweaker.annotations.ZenRegister; +import crafttweaker.api.data.IData; +import crafttweaker.api.minecraft.CraftTweakerMC; +import net.minecraft.nbt.NBTTagCompound; +import stanhebben.zenscript.annotations.Optional; +import stanhebben.zenscript.annotations.ZenExpansion; +import stanhebben.zenscript.annotations.ZenMethod; + +import java.util.List; +import java.util.Map; + +@ZenRegister +@ZenExpansion("crafttweaker.data.IData") +public class IDataUtils { + + private static NBTTagCompound get(IData data) { + return get(data,"NULL"); + } + + private static NBTTagCompound get(IData data,String path) { + var datan = CraftTweakerMC.getNBT(data); + if (datan instanceof NBTTagCompound nt){ + return nt; + } + var nbt = new NBTTagCompound(); + nbt.setTag(path,datan); + return nbt; + } + + @ZenMethod + public static IData get(IData data,String path,@Optional IData defaultValue) { + if (check(data,path)){ + return CraftTweakerMC.getIData(get(data,path).getTag(path)); + } + return defaultValue; + } + + @ZenMethod + public static boolean getBool(IData data, String path,@Optional boolean defaultValue){ + if (check(data,path)){ + return get(data,path).getBoolean(path); + } + return defaultValue; + } + + @ZenMethod + public static byte getByte(IData data, String path,@Optional byte defaultValue) { + if (check(data,path)){ + return get(data,path).getByte(path); + } + return defaultValue; + } + + @ZenMethod + public static double getDouble(IData data, String path, @Optional double defaultValue) { + if (check(data, path)) { + return get(data,path).getDouble(path); + } + return defaultValue; + } + + @ZenMethod + public static float getFloat(IData data, String path, @Optional float defaultValue) { + if (check(data, path)) { + return get(data,path).getFloat(path); + } + return defaultValue; + } + + @ZenMethod + public static int getInt(IData data, String path, @Optional int defaultValue) { + if (check(data, path)) { + return get(data,path).getInteger(path); + } + return defaultValue; + } + + @ZenMethod + public static List getList(IData data, String path, @Optional List defaultValue) { + if (check(data, path)) { + return CraftTweakerMC.getIData(get(data,path).getTag(path)).asList(); + } + return defaultValue; + } + + @ZenMethod + public static long getLong(IData data, String path, @Optional long defaultValue) { + if (check(data, path)) { + return get(data,path).getLong(path); + } + return defaultValue; + } + + @ZenMethod + public static Map getMap(IData data, String path, @Optional Map defaultValue) { + if (check(data, path)) { + return CraftTweakerMC.getIData(get(data,path).getTag(path)).asMap(); + } + return defaultValue; + } + + @ZenMethod + public static short getShort(IData data, String path, @Optional short defaultValue) { + if (check(data, path)) { + return get(data,path).getShort(path); + } + return defaultValue; + } + + @ZenMethod + public static String getString(IData data, String path, @Optional String defaultValue) { + if (check(data, path)) { + return get(data,path).getString(path); + } + return defaultValue; + } + + @ZenMethod + public static boolean check(IData data, String... path){ + final var nbt = get(data); + for (String key : path) { + if (!nbt.hasKey(key)){ + return false; + } + } + return true; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/common/util/MediumType.java b/src/main/java/github/kasuminova/novaeng/common/util/MediumType.java new file mode 100644 index 00000000..f3befc15 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/util/MediumType.java @@ -0,0 +1,7 @@ +package github.kasuminova.novaeng.common.util; + +public enum MediumType{ + EF, + MEPatternProvider, + NULL +} \ No newline at end of file diff --git a/src/main/java/github/kasuminova/novaeng/common/util/RecipePrimerEx.java b/src/main/java/github/kasuminova/novaeng/common/util/RecipePrimerEx.java new file mode 100644 index 00000000..b8aa8ff5 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/util/RecipePrimerEx.java @@ -0,0 +1,69 @@ +package github.kasuminova.novaeng.common.util; + +import crafttweaker.annotations.ZenRegister; +import crafttweaker.api.data.IData; +import crafttweaker.api.minecraft.CraftTweakerMC; +import github.kasuminova.novaeng.mixin.util.NovaRAB; +import hellfirepvp.modularmachinery.common.crafting.helper.ComponentRequirement; +import hellfirepvp.modularmachinery.common.crafting.helper.ComponentSelectorTag; +import hellfirepvp.modularmachinery.common.crafting.requirement.RequirementItem; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.RecipePrimer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.nbt.NBTTagString; +import net.minecraft.util.text.translation.I18n; +import stanhebben.zenscript.annotations.ZenExpansion; +import stanhebben.zenscript.annotations.ZenMethod; + +@ZenRegister +@ZenExpansion("mods.modularmachinery.RecipePrimer") +public class RecipePrimerEx { + + @ZenMethod + public static RecipePrimer setItemTags(final RecipePrimer primer, final String tagName ,boolean isInput) { + if (primer instanceof NovaRAB n){ + if (isInput) { + n.n$setInTags(tagName); + } else { + n.n$setOutTags(tagName); + } + } + + for (ComponentRequirement component : primer.getComponents()) { + if (component instanceof RequirementItem) { + switch (component.getActionType()) { + case OUTPUT -> {if (isInput) continue;} + case INPUT -> {if (!isInput) continue;} + } + var tag = new ComponentSelectorTag(tagName); + component.setTag(tag); + } + } + return primer; + } + + @ZenMethod + public static RecipePrimer setMultipleParallelized(final RecipePrimer primer, final int multipe) { + primer.addPreCheckHandler(event -> event.getActiveRecipe().setMaxParallelism((event.getActiveRecipe().getMaxParallelism() * multipe))); + return primer; + } + + @ZenMethod + public static RecipePrimer setLore(final RecipePrimer primer,String... key){ + primer.setPreViewNBT(getData(key)); + return primer; + } + + private static IData getData(String... key){ + var nbt = new NBTTagCompound(); + var nbt1 = new NBTTagCompound(); + var list = new NBTTagList(); + for (String s : key) { + list.appendTag(new NBTTagString(I18n.translateToLocalFormatted(s))); + } + nbt1.setTag("Lore",list); + nbt.setTag("display",nbt1); + return CraftTweakerMC.getIData(nbt); + } + +} diff --git a/src/main/java/github/kasuminova/novaeng/common/util/SimpleItem.java b/src/main/java/github/kasuminova/novaeng/common/util/SimpleItem.java new file mode 100644 index 00000000..2e19376c --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/common/util/SimpleItem.java @@ -0,0 +1,32 @@ +package github.kasuminova.novaeng.common.util; + + +import com.github.bsideup.jabel.Desugar; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +import java.util.Objects; + +@Desugar +public record SimpleItem(Item item, int meta, NBTTagCompound nbt) { + + public static SimpleItem getInstance(ItemStack stack) { + return new SimpleItem(stack.getItem(), stack.getMetadata(), stack.getTagCompound()); + } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) return false; + SimpleItem that = (SimpleItem) o; + return meta == that.meta && Objects.equals(item, that.item) && Objects.equals(nbt, that.nbt); + } + + @Override + public int hashCode() { + int result = item.hashCode(); + result = 31 * result + meta; + result = 31 * result + (nbt != null ? nbt.hashCode() : 0); + return result; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/NovaEngCoreEarlyMixinLoader.java b/src/main/java/github/kasuminova/novaeng/mixin/NovaEngCoreEarlyMixinLoader.java index 11c564b2..120f1b96 100644 --- a/src/main/java/github/kasuminova/novaeng/mixin/NovaEngCoreEarlyMixinLoader.java +++ b/src/main/java/github/kasuminova/novaeng/mixin/NovaEngCoreEarlyMixinLoader.java @@ -1,23 +1,25 @@ package github.kasuminova.novaeng.mixin; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraftforge.fml.relauncher.FMLLaunchHandler; import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin; +import org.apache.commons.lang3.SystemUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import zone.rong.mixinbooter.IEarlyMixinLoader; import javax.annotation.Nullable; -import javax.swing.*; -import java.awt.*; +import javax.swing.JOptionPane; +import java.awt.Desktop; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.SequenceInputStream; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; import java.util.Map; - +import java.util.ResourceBundle; @SuppressWarnings("unused") public class NovaEngCoreEarlyMixinLoader implements IFMLLoadingPlugin, IEarlyMixinLoader { @@ -27,8 +29,8 @@ public class NovaEngCoreEarlyMixinLoader implements IFMLLoadingPlugin, IEarlyMix static { if (isCleanroomLoader()) { LOG.info(LOG_PREFIX + "CleanroomLoader detected."); - if (FMLLaunchHandler.side().isClient()) { - checkLauncher(); + if (FMLLaunchHandler.side().isClient()){ + //checkLauncher(); } } } @@ -39,13 +41,13 @@ public class NovaEngCoreEarlyMixinLoader implements IFMLLoadingPlugin, IEarlyMix * 你说得对,但是不得不写。
* PCL2 Discussion Link
*/ - private static void checkLauncher() { + public static void checkLauncher() { if (!System.getProperty("os.name").toLowerCase().contains("win")) { return; } boolean detected = false; - List lines = new ArrayList<>(); + List lines = new ObjectArrayList<>(); try { String queryCmd = "tasklist.exe" + " /FO csv /FI \"STATUS eq RUNNING\" | findstr /R /C:\"Plain Craft Launcher 2\""; String cmd = "cmd"; @@ -82,6 +84,86 @@ private static void checkLauncher() { } } + private static final String RESOURCE_BUNDLE = "messages"; + static ResourceBundle bundler; + + public static String getString(String key){ + return new String(bundler.getString(key).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + } + + /** + * 愚蠢的一切,为什么要用十年前的java? + */ + public static void checkJavaVersion() { + if (!System.getProperty("os.name").toLowerCase().contains("win")) { + return; + } + + String version = SystemUtils.JAVA_VERSION; + LOG.info(RESOURCE_BUNDLE + ".{}", version); + + try { + bundler = ResourceBundle.getBundle(RESOURCE_BUNDLE); + String[] mainParts = version.split("\\."); + if (mainParts.length < 3) { + logWarning(RESOURCE_BUNDLE + ".java.version.invalid", version); + return; + } + + ResourceBundle bundle = ResourceBundle.getBundle( + "messages", + Locale.getDefault(), + Thread.currentThread().getContextClassLoader() + ); + + int major = Integer.parseInt(mainParts[0]); + int minor = Integer.parseInt(mainParts[1]); + String[] updateParts = mainParts[2].split("_"); + + if (updateParts.length < 1) { + logWarning(RESOURCE_BUNDLE + ".java.version.invalid.format", mainParts[2]); + return; + } + + int update = Integer.parseInt(updateParts[1]); + + if (major == 1 && minor == 8 && update < 271) { + String warningMessage = getString("java.version.warning"); + String detail = String.format(getString("java.version.warning.detail"), version); + String recommendation = getString("java.version.warning.recommend"); + String risk = getString("java.version.warning.risk"); + String confirm = getString("java.version.warning.confirm"); + + showWarningDialog(warningMessage + "\n" + detail + "\n" + recommendation + "\n" + risk + "\n\n" + confirm); + } + } catch (NumberFormatException e) { + logError("messages.java.version.parse.error",version, e); + } + } + + private static void showWarningDialog(String message) { + if (!Desktop.isDesktopSupported()) { + logWarning(RESOURCE_BUNDLE + ".desktop.unsupported"); + return; + } + + int input = JOptionPane.showConfirmDialog(null, message, + getString("java.version.warning.title"), + JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); + + if (input != JOptionPane.YES_OPTION) { + throw new RuntimeException(getString("java.version.blocked")); + } + } + + private static void logWarning(String key, Object... params) { + LOG.warn(getString(key), params); + } + + private static void logError(String key,Object... params) { + LOG.error(getString(key), params); + } + public static boolean isCleanroomLoader() { try { Class.forName("com.cleanroommc.boot.Main"); @@ -94,7 +176,8 @@ public static boolean isCleanroomLoader() { @Override public List getMixinConfigs() { return Arrays.asList( - "mixins.novaeng_core_vanilla.json" + "mixins.novaeng_core_vanilla.json", + "mixins.novaeng_core.json" ); } diff --git a/src/main/java/github/kasuminova/novaeng/mixin/NovaEngCoreLateMixinLoader.java b/src/main/java/github/kasuminova/novaeng/mixin/NovaEngCoreLateMixinLoader.java index f94563df..d223931d 100644 --- a/src/main/java/github/kasuminova/novaeng/mixin/NovaEngCoreLateMixinLoader.java +++ b/src/main/java/github/kasuminova/novaeng/mixin/NovaEngCoreLateMixinLoader.java @@ -1,10 +1,13 @@ package github.kasuminova.novaeng.mixin; -import github.kasuminova.novaeng.common.mod.Mods; +import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraftforge.fml.common.Loader; import zone.rong.mixinbooter.ILateMixinLoader; -import java.util.*; +import java.util.Arrays; +import java.util.List; +import java.util.Map; import java.util.function.BooleanSupplier; import static github.kasuminova.novaeng.mixin.NovaEngCoreEarlyMixinLoader.LOG; @@ -13,10 +16,9 @@ @SuppressWarnings({"unused", "SameParameterValue"}) public class NovaEngCoreLateMixinLoader implements ILateMixinLoader { - private static final Map MIXIN_CONFIGS = new LinkedHashMap<>(); + private static final Map MIXIN_CONFIGS = new Object2ObjectLinkedOpenHashMap<>(); static { - addMixinCFG("mixins.novaeng_core.json"); addModdedMixinCFG("mixins.novaeng_core_ae2.json", "appliedenergistics2"); addModdedMixinCFG("mixins.novaeng_core_astralsorcery.json", "astralsorcery"); addModdedMixinCFG("mixins.novaeng_core_athenaeum.json", "athenaeum"); @@ -26,6 +28,24 @@ public class NovaEngCoreLateMixinLoader implements ILateMixinLoader { addModdedMixinCFG("mixins.novaeng_core_immersiveengineering.json", "immersiveengineering"); addModdedMixinCFG("mixins.novaeng_core_mets.json", "mets"); addModdedMixinCFG("mixins.novaeng_core_nae2.json", "nae2"); + addModdedMixinCFG("mixins.novaeng_core_botania.json", "botania"); + addModdedMixinCFG("mixins.novaeng_core_jetif.json", "jetif"); + addModdedMixinCFG("mixins.novaeng_core_opticheck.json", "opticheck"); + addModdedMixinCFG("mixins.novaeng_core_electroblobs.json", "ebwizardry"); + addModdedMixinCFG("mixins.novaeng_core_psi.json", "psi"); + addModdedMixinCFG("mixins.novaeng_core_libvulpes.json", "libvulpes"); + addModdedMixinCFG("mixins.novaeng_core_techguns.json", "techguns"); + addModdedMixinCFG("mixins.novaeng_core_codechickenlib.json","codechickenlib"); + addModdedMixinCFG("mixins.novaeng_core_legendarytooltips.json","legendarytooltips"); + addModdedMixinCFG("mixins.novaeng_core_avaritia.json","avaritia"); + addModdedMixinCFG("mixins.novaeng_core_betterp2p.json","betterp2p"); + addModdedMixinCFG("mixins.novaeng_core_nco.json","nuclearcraft"); + addModdedMixinCFG("mixins.novaeng_core_lootoverhaul.json","lootoverhaul"); + addModdedMixinCFG("mixins.novaeng_core_fluxnetworks.json","fluxnetworks"); + addModdedMixinCFG("mixins.novaeng_core_extrabotany.json","extrabotany"); + addModdedMixinCFG("mixins.novaeng_core_packagedauto.json","packagedauto"); + addModdedMixinCFG("mixins.novaeng_core_rftools.json","rftools"); + addMixinCFG("mixins.novaeng_core_forge_late.json"); addMixinCFG("mixins.novaeng_core_dme.json", () -> Loader.isModLoaded("deepmoblearning") && Loader.instance().getIndexedModList().get("deepmoblearning").getName().equals("DeepMobEvolution")); @@ -33,7 +53,7 @@ public class NovaEngCoreLateMixinLoader implements ILateMixinLoader { @Override public List getMixinConfigs() { - return new ArrayList<>(MIXIN_CONFIGS.keySet()); + return new ObjectArrayList<>(MIXIN_CONFIGS.keySet()); } @Override diff --git a/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinAppEngClientPacketHandler.java b/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinAppEngClientPacketHandler.java index b7389f1f..6e57c599 100644 --- a/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinAppEngClientPacketHandler.java +++ b/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinAppEngClientPacketHandler.java @@ -1,20 +1,13 @@ package github.kasuminova.novaeng.mixin.ae2; import appeng.core.sync.AppEngPacket; -import appeng.core.sync.AppEngPacketHandlerBase; +import appeng.core.sync.PacketCallState; import appeng.core.sync.network.AppEngClientPacketHandler; -import appeng.core.sync.network.AppEngServerPacketHandler; -import com.llamalad7.mixinextras.sugar.Local; import github.kasuminova.novaeng.common.profiler.CPacketProfiler; -import github.kasuminova.novaeng.common.profiler.SPacketProfiler; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import java.lang.reflect.InvocationTargetException; - @Mixin(AppEngClientPacketHandler.class) public class MixinAppEngClientPacketHandler { @@ -23,20 +16,14 @@ public class MixinAppEngClientPacketHandler { method = "onPacketData", at = @At( value = "INVOKE", - target = "Lappeng/core/sync/AppEngPacketHandlerBase$PacketTypes;parsePacket(Lio/netty/buffer/ByteBuf;)Lappeng/core/sync/AppEngPacket;", + target = "Lappeng/core/sync/AppEngPacket;setCallParam(Lappeng/core/sync/PacketCallState;)V", remap = false ), remap = false ) - private AppEngPacket redirectParsePacket(final AppEngPacketHandlerBase.PacketTypes instance, - final ByteBuf in) throws InvocationTargetException, InstantiationException, IllegalAccessException - { - int prevIndex = in.readerIndex(); - AppEngPacket packet = instance.parsePacket(in); - - CPacketProfiler.onPacketReceived(packet, in.readerIndex() - prevIndex); - - return packet; + private void redirectParsePacket(AppEngPacket instance, PacketCallState call) { + CPacketProfiler.onPacketReceived(instance, instance.getPacketID()); + instance.setCallParam(call); } } diff --git a/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinAppEngServerPacketHandler.java b/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinAppEngServerPacketHandler.java index c82eb601..434b8604 100644 --- a/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinAppEngServerPacketHandler.java +++ b/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinAppEngServerPacketHandler.java @@ -1,19 +1,15 @@ package github.kasuminova.novaeng.mixin.ae2; import appeng.core.sync.AppEngPacket; -import appeng.core.sync.AppEngPacketHandlerBase; +import appeng.core.sync.PacketCallState; import appeng.core.sync.network.AppEngServerPacketHandler; import com.llamalad7.mixinextras.sugar.Local; -import github.kasuminova.novaeng.common.profiler.CPacketProfiler; import github.kasuminova.novaeng.common.profiler.SPacketProfiler; -import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import java.lang.reflect.InvocationTargetException; - @Mixin(AppEngServerPacketHandler.class) public class MixinAppEngServerPacketHandler { @@ -22,20 +18,17 @@ public class MixinAppEngServerPacketHandler { method = "onPacketData", at = @At( value = "INVOKE", - target = "Lappeng/core/sync/AppEngPacketHandlerBase$PacketTypes;parsePacket(Lio/netty/buffer/ByteBuf;)Lappeng/core/sync/AppEngPacket;", + target = "Lappeng/core/sync/AppEngPacket;setCallParam(Lappeng/core/sync/PacketCallState;)V", remap = false ), remap = false ) - private AppEngPacket redirectParsePacket(final AppEngPacketHandlerBase.PacketTypes instance, - final ByteBuf in, - @Local(name = "player") EntityPlayer player) throws InvocationTargetException, InstantiationException, IllegalAccessException - { - AppEngPacket packet = instance.parsePacket(in); + private void redirectParsePacket(AppEngPacket instance, PacketCallState call, + @Local(name = "player") EntityPlayer player) { if (player != null) { - SPacketProfiler.onPacketReceived(player, packet); + SPacketProfiler.onPacketReceived(player, instance); } - return packet; + instance.setCallParam(call); } } diff --git a/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinCraftingCPUClusterTwo.java b/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinCraftingCPUClusterTwo.java new file mode 100644 index 00000000..39c23a5b --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinCraftingCPUClusterTwo.java @@ -0,0 +1,284 @@ +package github.kasuminova.novaeng.mixin.ae2; + +import appeng.api.config.Actionable; +import appeng.api.config.PowerMultiplier; +import appeng.api.networking.crafting.ICraftingMedium; +import appeng.api.networking.crafting.ICraftingPatternDetails; +import appeng.api.networking.energy.IEnergyGrid; +import appeng.api.networking.security.IActionSource; +import appeng.api.storage.data.IAEItemStack; +import appeng.api.storage.data.IAEStack; +import appeng.api.storage.data.IItemList; +import appeng.crafting.MECraftingInventory; +import appeng.me.cache.CraftingGridCache; +import appeng.me.cluster.implementations.CraftingCPUCluster; +import appeng.me.helpers.MachineSource; +import com.glodblock.github.util.FluidCraftingPatternDetails; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.llamalad7.mixinextras.sugar.Local; +import github.kasuminova.mmce.common.tile.MEPatternProvider; +import github.kasuminova.novaeng.common.tile.MEPatternProviderNova; +import github.kasuminova.novaeng.common.tile.ecotech.efabricator.EFabricatorMEChannel; +import github.kasuminova.novaeng.common.tile.ecotech.efabricator.EFabricatorWorker; +import github.kasuminova.novaeng.common.util.MediumType; +import net.minecraft.item.ItemStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Map; + +@Mixin(value = CraftingCPUCluster.class, remap = false) +public abstract class MixinCraftingCPUClusterTwo { + + @Shadow protected abstract void postChange(IAEItemStack diff, IActionSource src); + + @Shadow protected abstract void postCraftingStatusChange(IAEItemStack diff); + + @Shadow + private int remainingOperations; + @Shadow + private MachineSource machineSrc; + @Shadow + private MECraftingInventory inventory; + + @Unique + private MediumType r$MediumType = MediumType.NULL; + + @Unique + private boolean r$IgnoreParallel = false; + @Unique + private ICraftingPatternDetails r$pattern; + + @Unique + private long r$craftingFrequency = 0; + + @WrapOperation(method = "executeCrafting",at = @At(value = "INVOKE", target = "Ljava/util/Map$Entry;getKey()Ljava/lang/Object;")) + private Object getKeyR(Map.Entry instance, Operation original) { + var key = original.call(instance); + + long max = 0; + var list = (key.isCraftable() || key instanceof FluidCraftingPatternDetails) ? key.getCondensedOutputs() : key.getCondensedInputs(); + for (IAEItemStack stack : list) { + long size = stack.getStackSize(); + if (size > max) max = size; + } + + this.r$craftingFrequency = instance.getValue().getValue(); + if (max * this.r$craftingFrequency > Integer.MAX_VALUE){ + this.r$craftingFrequency = Integer.MAX_VALUE / max; + } + + return r$pattern = key; + } + + @Inject(method = "executeCrafting",at = @At(value = "INVOKE", target = "Lappeng/api/networking/crafting/ICraftingMedium;isBusy()Z",shift = At.Shift.AFTER)) + private void executeCraftingI(IEnergyGrid eg, CraftingGridCache cc, CallbackInfo ci, @Local(name = "m") ICraftingMedium instance) { + if (instance instanceof MEPatternProviderNova mep){ + if (mep.getWorkMode() == MEPatternProvider.WorkModeSetting.DEFAULT + || mep.getWorkMode() == MEPatternProvider.WorkModeSetting.ENHANCED_BLOCKING_MODE) { + + for (IAEItemStack input : r$pattern.getCondensedInputs()) { + long size = input.getStackSize() * this.r$craftingFrequency; + var item = this.inventory.extractItems(input.copy().setStackSize(size),Actionable.SIMULATE, this.machineSrc); + if (item == null)continue; + if (item.getStackSize() < size){ + long size0 = item.getStackSize()/input.getStackSize(); + if (size0 < 2){ + this.r$craftingFrequency = 1; + } else { + this.r$craftingFrequency = size0; + } + } + } + + this.r$MediumType = MediumType.MEPatternProvider; + if (mep.r$isIgnoreParallel()) { + this.r$IgnoreParallel = true; + } else { + this.r$IgnoreParallel = false; + this.r$craftingFrequency = Math.min(this.remainingOperations, this.r$craftingFrequency); + } + } else this.r$MediumType = MediumType.NULL; + } else if (instance instanceof EFabricatorMEChannel ef) { + if (!ef.isBusy()){ + var max = 0; + for (EFabricatorWorker worker : ef.getController().getWorkers()) { + max += worker.getRemainingSpace(); + } + for (IAEItemStack input : r$pattern.getInputs()) { + if (input == null)continue; + long size = this.r$craftingFrequency; + var item = this.inventory.extractItems(input.copy().setStackSize(size),Actionable.SIMULATE, this.machineSrc); + if (item == null)continue; + if (item.getStackSize() < size){ + long size0 = item.getStackSize()/input.getStackSize(); + if (size0 < 2){ + this.r$craftingFrequency = 1; + } else { + this.r$craftingFrequency = size0; + } + } + } + this.r$MediumType = MediumType.EF; + this.r$craftingFrequency = Math.min(max, this.r$craftingFrequency); + } else this.r$MediumType = MediumType.NULL; + } else this.r$MediumType = MediumType.NULL; + } + + @Redirect(method = "executeCrafting",at = @At(value = "INVOKE", target = "Lappeng/api/networking/energy/IEnergyGrid;extractAEPower(DLappeng/api/config/Actionable;Lappeng/api/config/PowerMultiplier;)D")) + private double extractAEPowerR(IEnergyGrid eg, double v, Actionable actionable, PowerMultiplier powerMultiplier) { + return switch (this.r$MediumType){ + case MEPatternProvider,EF -> { + var sum = v * this.r$craftingFrequency; + var o = eg.extractAEPower(sum,Actionable.SIMULATE,powerMultiplier); + if (o < sum - 0.01) { + long s = (long) (o / sum * this.r$craftingFrequency); + this.r$craftingFrequency = s; + if (s < 1) { + yield eg.extractAEPower(v,actionable,powerMultiplier); + } else { + yield eg.extractAEPower(v * s,Actionable.SIMULATE,powerMultiplier); + } + } + yield o; + } + default -> eg.extractAEPower(v,actionable,powerMultiplier); + }; + } + + @Redirect(method = "executeCrafting",at = @At(value = "INVOKE", target = "Lappeng/crafting/MECraftingInventory;extractItems(Lappeng/api/storage/data/IAEItemStack;Lappeng/api/config/Actionable;Lappeng/api/networking/security/IActionSource;)Lappeng/api/storage/data/IAEItemStack;")) + private IAEItemStack extractItemsR(MECraftingInventory instance, IAEItemStack request, Actionable mode, IActionSource src) { + return switch (this.r$MediumType) { + case MEPatternProvider,EF -> { + var i = request.copy().setStackSize(request.getStackSize() * this.r$craftingFrequency); + yield instance.extractItems(i, mode, src); + } + default -> instance.extractItems(request, mode, src); + }; + } + + @Unique + private void r$postChange1(CraftingCPUCluster instance, IAEItemStack receiver, IActionSource single){ + switch (this.r$MediumType) { + case MEPatternProvider,EF -> { + var i = receiver.copy().setStackSize(receiver.getStackSize() * this.r$craftingFrequency); + this.postChange(i, single); + } + default -> this.postChange(receiver,single); + } + } + + @Unique + private void r$postChange2(CraftingCPUCluster instance, IAEItemStack receiver, IActionSource single){ + switch (this.r$MediumType) { + case EF -> { + var i = receiver.copy().setStackSize(receiver.getStackSize() * this.r$craftingFrequency); + this.postChange(i, single); + } + default -> this.postChange(receiver,single); + } + } + + @Redirect(method = "executeCrafting", at = @At(value = "INVOKE", target = "Lappeng/me/cluster/implementations/CraftingCPUCluster;postChange(Lappeng/api/storage/data/IAEItemStack;Lappeng/api/networking/security/IActionSource;)V", ordinal = 1)) + private void postChangeR1(CraftingCPUCluster instance, IAEItemStack receiver, IActionSource single) { + r$postChange1(instance, receiver, single); + } + + @Redirect(method = "executeCrafting", at = @At(value = "INVOKE", target = "Lappeng/me/cluster/implementations/CraftingCPUCluster;postChange(Lappeng/api/storage/data/IAEItemStack;Lappeng/api/networking/security/IActionSource;)V", ordinal = 2)) + private void postChangeR2(CraftingCPUCluster instance, IAEItemStack receiver, IActionSource single) { + r$postChange1(instance, receiver, single); + } + + @Redirect(method = "executeCrafting", at = @At(value = "INVOKE", target = "Lappeng/me/cluster/implementations/CraftingCPUCluster;postChange(Lappeng/api/storage/data/IAEItemStack;Lappeng/api/networking/security/IActionSource;)V", ordinal = 0)) + private void postChangeR0(CraftingCPUCluster instance, IAEItemStack receiver, IActionSource single) { + r$postChange2(instance, receiver, single); + } + + @Redirect(method = "executeCrafting", at = @At(value = "INVOKE", target = "Lappeng/me/cluster/implementations/CraftingCPUCluster;postChange(Lappeng/api/storage/data/IAEItemStack;Lappeng/api/networking/security/IActionSource;)V", ordinal = 3)) + private void postChangeR3(CraftingCPUCluster instance, IAEItemStack receiver, IActionSource single) { + r$postChange2(instance, receiver, single); + } + + @Redirect(method = "executeCrafting",at = @At(value = "INVOKE", target = "Lappeng/api/storage/data/IItemList;add(Lappeng/api/storage/data/IAEStack;)V",ordinal = 0)) + private void addR(IItemList instance, IAEStack iaeStack) { + switch (this.r$MediumType) { + case MEPatternProvider,EF -> { + iaeStack.setStackSize(iaeStack.getStackSize() * this.r$craftingFrequency); + instance.add((IAEItemStack) iaeStack); + } + default -> instance.add((IAEItemStack) iaeStack); + } + } + + @Redirect(method = "executeCrafting",at = @At(value = "INVOKE", target = "Lappeng/api/storage/data/IItemList;add(Lappeng/api/storage/data/IAEStack;)V",ordinal = 1)) + private void addR1(IItemList instance, IAEStack iaeStack) { + switch (this.r$MediumType) { + case EF -> { + iaeStack.setStackSize(iaeStack.getStackSize() * this.r$craftingFrequency); + instance.add((IAEItemStack) iaeStack); + } + default -> instance.add((IAEItemStack) iaeStack); + } + } + + @Redirect(method = "executeCrafting",at = @At(value = "INVOKE", target = "Lappeng/me/cluster/implementations/CraftingCPUCluster;postCraftingStatusChange(Lappeng/api/storage/data/IAEItemStack;)V",ordinal = 0)) + private void postCraftingStatusChangeR(CraftingCPUCluster instance, IAEItemStack iaeStack) { + switch (this.r$MediumType) { + case MEPatternProvider,EF -> { + iaeStack.setStackSize(iaeStack.getStackSize() * this.r$craftingFrequency); + this.postCraftingStatusChange(iaeStack); + } + default -> this.postCraftingStatusChange(iaeStack); + } + } + + @Redirect(method = "executeCrafting",at = @At(value = "INVOKE", target = "Lappeng/me/cluster/implementations/CraftingCPUCluster;postCraftingStatusChange(Lappeng/api/storage/data/IAEItemStack;)V",ordinal = 1)) + private void postCraftingStatusChangeR1(CraftingCPUCluster instance, IAEItemStack iaeStack) { + switch (this.r$MediumType) { + case EF -> { + iaeStack.setStackSize(iaeStack.getStackSize() * this.r$craftingFrequency); + this.postCraftingStatusChange(iaeStack); + } + default -> this.postCraftingStatusChange(iaeStack); + } + } + + @Redirect(method = "executeCrafting",at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;getCount()I",remap = true)) + private int getCountR(ItemStack instance) { + final int out = instance.getCount(); + return switch (this.r$MediumType) { + case MEPatternProvider,EF -> out / (int) this.r$craftingFrequency; + default -> out; + }; + } + + @Redirect(method = "executeCrafting",at = @At(value = "INVOKE", target = "Ljava/util/Map$Entry;getValue()Ljava/lang/Object;",ordinal = 2)) + private Object getValueR(Map.Entry instance) { + return switch (this.r$MediumType) { + case MEPatternProvider,EF -> { + if (!this.r$IgnoreParallel) { + this.remainingOperations -= (int) (this.r$craftingFrequency - 1); + } + var value = instance.getValue(); + value.setValue(value.getValue() - (this.r$craftingFrequency - 1)); + yield value; + } + default -> instance.getValue(); + }; + } + + @Mixin(targets = "appeng.me.cluster.implementations.CraftingCPUCluster$TaskProgress",remap = false) + public interface AccessorTaskProgress { + @Accessor + long getValue(); + @Accessor + void setValue(long value); + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinGuiCraftingStatus.java b/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinGuiCraftingStatus.java index d81a8be8..7b0337b7 100644 --- a/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinGuiCraftingStatus.java +++ b/src/main/java/github/kasuminova/novaeng/mixin/ae2/MixinGuiCraftingStatus.java @@ -146,17 +146,17 @@ private Object redirectDrawFG(final List instance, final int GL11.glPushMatrix(); GL11.glTranslatef(x + 3, y + 11, 0); final IAEItemStack craftingStack = cpu.getCrafting(); + GL11.glScalef(0.5f, 0.5f, 1.0f); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + if (ecLevel == Levels.L4) { + novaeng_ec$L4_CELL.render(new RenderPos(2, 0), (AEBaseGui) (Object) this); + } else if (ecLevel == Levels.L6) { + novaeng_ec$L6_CELL.render(new RenderPos(2, 0), (AEBaseGui) (Object) this); + } else if (ecLevel == Levels.L9) { + novaeng_ec$L9_CELL.render(new RenderPos(2, 0), (AEBaseGui) (Object) this); + } + GL11.glTranslatef(18.0f, 3.5f, 0.0f); if (craftingStack != null) { - GL11.glScalef(0.5f, 0.5f, 1.0f); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - if (ecLevel == Levels.L4) { - novaeng_ec$L4_CELL.render(new RenderPos(2, 0), (AEBaseGui) (Object) this); - } else if (ecLevel == Levels.L6) { - novaeng_ec$L6_CELL.render(new RenderPos(2, 0), (AEBaseGui) (Object) this); - } else if (ecLevel == Levels.L9) { - novaeng_ec$L9_CELL.render(new RenderPos(2, 0), (AEBaseGui) (Object) this); - } - GL11.glTranslatef(18.0f, 3.5f, 0.0f); String amount = Long.toString(craftingStack.getStackSize()); if (amount.length() > 9) { amount = amount.substring(0, 9) + ".."; @@ -168,16 +168,6 @@ private Object redirectDrawFG(final List instance, final int GL11.glTranslatef(x + CPU_TABLE_SLOT_WIDTH - (19 + 4), y + 3, 0); this.drawItem(0, 0, craftingStack.createItemStack()); } else { - GL11.glScalef(0.5f, 0.5f, 1.0f); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - if (ecLevel == Levels.L4) { - novaeng_ec$L4_CELL.render(new RenderPos(2, 0), (AEBaseGui) (Object) this); - } else if (ecLevel == Levels.L6) { - novaeng_ec$L6_CELL.render(new RenderPos(2, 0), (AEBaseGui) (Object) this); - } else if (ecLevel == Levels.L9) { - novaeng_ec$L9_CELL.render(new RenderPos(2, 0), (AEBaseGui) (Object) this); - } - GL11.glTranslatef(18.0f, 3.5f, 0.0f); GL11.glScalef(1.5f, 1.5f, 1.0f); font.drawString(cpu.formatStorage(), 0, 0, textColor); } diff --git a/src/main/java/github/kasuminova/novaeng/mixin/astralsorcery/MixinBlockCustomOre.java b/src/main/java/github/kasuminova/novaeng/mixin/astralsorcery/MixinBlockCustomOre.java new file mode 100644 index 00000000..fb5bbfe3 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/astralsorcery/MixinBlockCustomOre.java @@ -0,0 +1,31 @@ +package github.kasuminova.novaeng.mixin.astralsorcery; + +import hellfirepvp.astralsorcery.common.block.BlockCustomOre; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(value = BlockCustomOre.class,remap = false) +public class MixinBlockCustomOre { + + @Inject(method = "canSilkHarvest",at = @At("HEAD"), cancellable = true) + public void canSilkHarvest(World world, BlockPos pos, IBlockState state, EntityPlayer player, CallbackInfoReturnable cir) { + cir.setReturnValue(true); + } + + @Inject(method = "securityCheck",at = @At("HEAD"), cancellable = true) + private void securityCheck(World world, EntityPlayer player, CallbackInfoReturnable cir) { + cir.setReturnValue(!world.isRemote); + } + + @Inject(method = "checkSafety",at = @At("HEAD"), cancellable = true) + private void checkSafety(World world, BlockPos pos, CallbackInfoReturnable cir) { + cir.setReturnValue(true); + } + +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/avaritia/MixinEntityImmortalItem.java b/src/main/java/github/kasuminova/novaeng/mixin/avaritia/MixinEntityImmortalItem.java new file mode 100644 index 00000000..c630b3c0 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/avaritia/MixinEntityImmortalItem.java @@ -0,0 +1,98 @@ +package github.kasuminova.novaeng.mixin.avaritia; + +import morph.avaritia.entity.EntityImmortalItem; +import net.minecraft.block.material.Material; +import net.minecraft.entity.MoverType; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.init.SoundEvents; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.item.ItemExpireEvent; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(EntityImmortalItem.class) +public abstract class MixinEntityImmortalItem extends EntityItem { + + @Shadow(remap = false) + private int pickupDelay; + + @Shadow(remap = false) + private int extraLife; + + @Shadow(remap = false) + private int age; + + public MixinEntityImmortalItem(World worldIn, double x, double y, double z) { + super(worldIn, x, y, z); + } + + /** + * @author circulation + * @reason 离奇的服务端方法里跑客户端类 + */ + @Overwrite + public void onUpdate() { + ItemStack stack = this.getItem(); + if (stack.isEmpty() || !stack.getItem().onEntityItemUpdate(this)) { + if (this.getItem().isEmpty()) { + this.setDead(); + } else { + super.onUpdate(); + if (this.pickupDelay > 0) { + --this.pickupDelay; + } + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + this.motionY -= (double)0.04F; + this.noClip = this.pushOutOfBlocks(this.posX, (this.getEntityBoundingBox().minY + this.getEntityBoundingBox().maxY) / (double)2.0F, this.posZ); + this.move(MoverType.SELF, this.motionX, this.motionY, this.motionZ); + boolean flag = (int)this.prevPosX != (int)this.posX || (int)this.prevPosY != (int)this.posY || (int)this.prevPosZ != (int)this.posZ; + if ((flag || this.ticksExisted % 25 == 0) && this.world.getBlockState(new BlockPos(this.posX, this.posY, this.posZ)).getMaterial() == Material.LAVA) { + this.motionY = (double)0.2F; + this.motionX = (double)((this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F); + this.motionZ = (double)((this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F); + this.playSound(SoundEvents.ENTITY_GENERIC_BURN, 0.4F, 2.0F + this.rand.nextFloat() * 0.4F); + } + + float f = 0.98F; + if (this.onGround) { + f = this.world.getBlockState(new BlockPos(this.posX, this.getEntityBoundingBox().minY - (double)1.0F, this.posZ)).getBlock().slipperiness * 0.98F; + } + + this.motionX *= (double)f; + this.motionY *= (double)0.98F; + this.motionZ *= (double)f; + if (this.onGround) { + this.motionY *= (double)-0.5F; + } + + ++this.age; + ItemStack item = this.getItem(); + if (!this.world.isRemote && this.age >= this.lifespan) { + if (!item.isEmpty()) { + item.getItem(); + ItemExpireEvent event = new ItemExpireEvent(this, item.getItem().getEntityLifespan(item, this.world)); + if (MinecraftForge.EVENT_BUS.post(event)) { + this.lifespan += this.extraLife; + } else { + this.setDead(); + } + } else { + this.setDead(); + } + } + + if (!item.isEmpty() && item.getCount() <= 0) { + this.setDead(); + } + } + + } + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/betterp2p/MixinServerLinkP2PHandler.java b/src/main/java/github/kasuminova/novaeng/mixin/betterp2p/MixinServerLinkP2PHandler.java new file mode 100644 index 00000000..4b0437df --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/betterp2p/MixinServerLinkP2PHandler.java @@ -0,0 +1,40 @@ +package github.kasuminova.novaeng.mixin.betterp2p; + +import com.projecturanus.betterp2p.network.ModNetwork; +import com.projecturanus.betterp2p.network.packet.C2SLinkP2P; +import com.projecturanus.betterp2p.network.packet.ServerLinkP2PHandler; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(value = ServerLinkP2PHandler.class,remap = false) +public class MixinServerLinkP2PHandler { + + /** + * @author circulation + * @reason Fix CME caused by updating ME network in non-server thread. + */ + @Overwrite + @Nullable + public IMessage onMessage(C2SLinkP2P message, MessageContext ctx) { + if (message.getInput() == null || message.getOutput() == null) { + return null; + } + + var player = ctx.getServerHandler().player; + var state = ModNetwork.INSTANCE.getPlayerState().get(player.getUniqueID()); + if (state == null){ + return null; + } + player.getServer().addScheduledTask(() -> { + var result = state.getGridCache().linkP2P(message.getInput(), message.getOutput()); + if (result != null) { + ModNetwork.INSTANCE.requestP2PUpdate(player); + } + }); + + return null; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/betterp2p/MixinServerUnlinkP2PHandler.java b/src/main/java/github/kasuminova/novaeng/mixin/betterp2p/MixinServerUnlinkP2PHandler.java new file mode 100644 index 00000000..1e065ac0 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/betterp2p/MixinServerUnlinkP2PHandler.java @@ -0,0 +1,38 @@ +package github.kasuminova.novaeng.mixin.betterp2p; + +import com.projecturanus.betterp2p.network.ModNetwork; +import com.projecturanus.betterp2p.network.packet.C2SUnlinkP2P; +import com.projecturanus.betterp2p.network.packet.S2COpenGui; +import com.projecturanus.betterp2p.network.packet.ServerUnlinkP2PHandler; +import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(value = ServerUnlinkP2PHandler.class,remap = false) +public class MixinServerUnlinkP2PHandler { + + /** + * @author circulation + * @reason Fix CME caused by updating ME network in non-server thread. + */ + @Overwrite + @Nullable + public S2COpenGui onMessage(C2SUnlinkP2P message, MessageContext ctx) { + if (message.getP2p() == null) { + return null; + } + + var player = ctx.getServerHandler().player; + var cache = ModNetwork.INSTANCE.getPlayerState().get(player.getUniqueID()); + if (cache == null){ + return null; + } + player.getServer().addScheduledTask(() -> { + cache.getGridCache().unlinkP2P(message.getP2p()); + ModNetwork.INSTANCE.requestP2PUpdate(player); + }); + + return null; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/botania/MixinTileRedStringContainer.java b/src/main/java/github/kasuminova/novaeng/mixin/botania/MixinTileRedStringContainer.java new file mode 100644 index 00000000..65045bf2 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/botania/MixinTileRedStringContainer.java @@ -0,0 +1,23 @@ +package github.kasuminova.novaeng.mixin.botania; + +import net.minecraft.util.EnumFacing; +import net.minecraftforge.common.capabilities.Capability; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import vazkii.botania.common.block.tile.string.TileRedString; +import vazkii.botania.common.block.tile.string.TileRedStringContainer; + +import javax.annotation.Nonnull; + +@Mixin(value = TileRedStringContainer.class,remap = false) +public abstract class MixinTileRedStringContainer extends TileRedString { + + /** + * @author circulaiton + * @reason 禁用红线容器 + */ + @Overwrite + public T getCapability(@Nonnull Capability cap, EnumFacing side) { + return null; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/botania/MixinTileRuneAltar.java b/src/main/java/github/kasuminova/novaeng/mixin/botania/MixinTileRuneAltar.java new file mode 100644 index 00000000..f64622fb --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/botania/MixinTileRuneAltar.java @@ -0,0 +1,94 @@ +package github.kasuminova.novaeng.mixin.botania; + +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraftforge.oredict.OreDictionary; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; +import vazkii.botania.api.BotaniaAPI; +import vazkii.botania.api.recipe.RecipeRuneAltar; +import vazkii.botania.common.block.ModBlocks; +import vazkii.botania.common.block.tile.TileRuneAltar; +import vazkii.botania.common.block.tile.TileSimpleInventory; + +import java.util.List; + +@Mixin(value = TileRuneAltar.class, remap = false) +public abstract class MixinTileRuneAltar extends TileSimpleInventory { + + @Shadow + int mana; + @Shadow + RecipeRuneAltar currentRecipe; + @Shadow + public int manaToGet; + @Shadow + public void saveLastRecipe() {} + @Shadow + public void recieveMana(int mana) {} + + /** + * @author Circulation_ + * @reason Makes the Universal Rune not consume in the Rune Altar. + */ + @Overwrite + public void onWanded(EntityPlayer player, ItemStack wand) { + if (!this.world.isRemote) { + RecipeRuneAltar recipe = null; + if (this.currentRecipe != null) { + recipe = this.currentRecipe; + } else { + for(RecipeRuneAltar recipe_ : BotaniaAPI.runeAltarRecipes) { + if (recipe_.matches(this.itemHandler)) { + recipe = recipe_; + break; + } + } + } + + if (this.manaToGet > 0 && this.mana >= this.manaToGet) { + List items = this.world.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(this.pos, this.pos.add(1, 1, 1))); + EntityItem livingrock = null; + + for(EntityItem item : items) { + if (!item.isDead && !item.getItem().isEmpty() && item.getItem().getItem() == Item.getItemFromBlock(ModBlocks.livingrock)) { + livingrock = item; + break; + } + } + + if (livingrock != null) { + int mana = recipe.getManaUsage(); + this.recieveMana(-mana); + ItemStack output = recipe.getOutput().copy(); + EntityItem outputItem = new EntityItem(this.world, (double)this.pos.getX() + (double)0.5F, (double)this.pos.getY() + (double)1.5F, (double)this.pos.getZ() + (double)0.5F, output); + this.world.spawnEntity(outputItem); + this.currentRecipe = null; + this.world.addBlockEvent(this.getPos(), ModBlocks.runeAltar, 1, 60); + this.world.addBlockEvent(this.getPos(), ModBlocks.runeAltar, 2, 0); + this.saveLastRecipe(); + + for(int i = 0; i < this.getSizeInventory(); ++i) { + ItemStack stack = this.itemHandler.getStackInSlot(i); + if (!stack.isEmpty()) { + if ((OreDictionary.getOreIDs(stack).length != 0 && OreDictionary.getOreName(OreDictionary.getOreIDs(stack)[0]).startsWith("rune")) && (player == null || !player.capabilities.isCreativeMode)) { + EntityItem outputRune = new EntityItem(this.world, (double)this.getPos().getX() + (double)0.5F, (double)this.getPos().getY() + (double)1.5F, (double)this.getPos().getZ() + (double)0.5F, stack.copy()); + this.world.spawnEntity(outputRune); + } + + this.itemHandler.setStackInSlot(i, ItemStack.EMPTY); + } + } + + livingrock.getItem().shrink(1); + } + } + + } + } +} + diff --git a/src/main/java/github/kasuminova/novaeng/mixin/codechickenlib/MixinReflectionManager.java b/src/main/java/github/kasuminova/novaeng/mixin/codechickenlib/MixinReflectionManager.java new file mode 100644 index 00000000..b607bf56 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/codechickenlib/MixinReflectionManager.java @@ -0,0 +1,43 @@ +package github.kasuminova.novaeng.mixin.codechickenlib; + +import codechicken.lib.reflect.ReflectionManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +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.reflect.Field; + +@Mixin(value = ReflectionManager.class,remap = false) +public abstract class MixinReflectionManager { + + @Shadow + private static Field modifiersField; + + @Shadow + public static Class findClass(String name) { + return null; + } + + /** + * @author circulation + * @reason 防止无限递归的出现 + */ + @Inject(method = "removeFinal",at = @At("HEAD"), cancellable = true) + private static void removeFinal(Field field, CallbackInfo ci) { + if ((field.getModifiers() & 16) != 0) { + try { + if (modifiersField == null) { + modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + } + + modifiersField.set(field, field.getModifiers() & -17); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + ci.cancel(); + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/cofh/MixinTypeEntry.java b/src/main/java/github/kasuminova/novaeng/mixin/cofh/MixinTypeEntry.java new file mode 100644 index 00000000..e6b67c5a --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/cofh/MixinTypeEntry.java @@ -0,0 +1,27 @@ +package github.kasuminova.novaeng.mixin.cofh; + +import cofh.thermalexpansion.item.ItemSatchel; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(value = ItemSatchel.TypeEntry.class,remap = false) +public class MixinTypeEntry { + + @Mutable + @Shadow + @Final + public String name; + + @Inject(method = "",at = @At("TAIL")) + void TypeEntry(ItemSatchel this$0, String name, int level, CallbackInfo ci) { + if (name == null){ + this.name = "null"; + } + } + +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/electroblobs/AccessorForfeit.java b/src/main/java/github/kasuminova/novaeng/mixin/electroblobs/AccessorForfeit.java new file mode 100644 index 00000000..550ca779 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/electroblobs/AccessorForfeit.java @@ -0,0 +1,13 @@ +package github.kasuminova.novaeng.mixin.electroblobs; + +import electroblob.wizardry.misc.Forfeit; +import net.minecraft.util.ResourceLocation; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(value = Forfeit.class,remap = false) +public interface AccessorForfeit { + + @Accessor("name") + ResourceLocation getName(); +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/electroblobs/MixinForfeit.java b/src/main/java/github/kasuminova/novaeng/mixin/electroblobs/MixinForfeit.java new file mode 100644 index 00000000..44cda182 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/electroblobs/MixinForfeit.java @@ -0,0 +1,29 @@ +package github.kasuminova.novaeng.mixin.electroblobs; + +import electroblob.wizardry.constants.Element; +import electroblob.wizardry.constants.Tier; +import electroblob.wizardry.misc.Forfeit; +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; + +import java.util.Arrays; +import java.util.List; + +@Mixin(value = Forfeit.class,remap = false) +public class MixinForfeit { + + @Unique + private static final List novaEngineering_Core$banList = Arrays.asList( + "bury_self" + ); + + @Inject(method = "add",at = @At("HEAD"), cancellable = true) + private static void addMixin(Tier tier, Element element, Forfeit forfeit, CallbackInfo ci) { + if (novaEngineering_Core$banList.contains(((AccessorForfeit)forfeit).getName().getPath())){ + ci.cancel(); + } + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/extrabotany/MixinTileManaLiquefaction.java b/src/main/java/github/kasuminova/novaeng/mixin/extrabotany/MixinTileManaLiquefaction.java new file mode 100644 index 00000000..70175e15 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/extrabotany/MixinTileManaLiquefaction.java @@ -0,0 +1,101 @@ +package github.kasuminova.novaeng.mixin.extrabotany; + +import com.meteor.extrabotany.common.block.tile.TileManaLiquefaction; +import com.meteor.extrabotany.common.core.config.ConfigHandler; +import net.minecraft.block.Block; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import vazkii.botania.common.block.tile.TileMod; +import vazkii.botania.common.block.tile.mana.TilePool; + +@Mixin(value = TileManaLiquefaction.class,remap = false,priority = 0) +public abstract class MixinTileManaLiquefaction extends TileMod { + + @Shadow + int mana; + + @Shadow + public int energy; + + @Final + @Shadow + private static int MAX_ENERGY; + + @Inject(method = "update", at = @At("HEAD"),remap = true) + public void updateMixin(CallbackInfo ci) { + if (ConfigHandler.DISABLE_MANALIQUEFICATION) { + var world = this.world; + if (world.getWorldTime() % 20 != 0) return; + + var uppos = this.pos.up(); + + if (world.getTileEntity(uppos) instanceof TilePool pool) { + var blockState = world.getBlockState(uppos); + Block upblock = blockState.getBlock(); + + switch (upblock.getMetaFromState(blockState)) { + case 3 -> { + int mana = this.mana; + int energy = this.energy; + int upmana = pool.getCurrentMana(); + int manaCap = pool.manaCap; + + var totalMana = upmana + mana; + + if (world.isBlockPowered(this.pos)) { + if ((mana < manaCap || energy < MAX_ENERGY) && upmana > 1000) { + if ((energy + totalMana / 1000) <= MAX_ENERGY) { + this.mana = totalMana % 1000; + this.energy = energy + totalMana / 1000; + } else { + this.mana = totalMana - ((MAX_ENERGY - energy) * 1000); + this.energy = MAX_ENERGY; + } + pool.recieveMana(-upmana); + } + } else { + var lsmana = mana; + var lsliquid = energy; + if (upmana < manaCap) { + if (totalMana > manaCap) { + pool.recieveMana(manaCap); + lsmana -= manaCap - upmana; + } else { + pool.recieveMana(mana); + lsmana = 0; + } + } + + if (mana < manaCap || lsmana != mana) { + var qk = (manaCap - lsmana) / 1000 + 1; + if (energy <= qk) { + lsmana += energy * 1000; + lsliquid = 0; + } else { + lsmana += qk * 1000; + lsliquid -= qk; + } + this.mana = lsmana; + this.energy = lsliquid; + } + } + } + case 1 -> { + if (world.isBlockPowered(this.pos)) { + this.mana = 1000000; + this.energy = MAX_ENERGY; + } else { + this.mana = 0; + this.energy = 0; + } + } + } + } + } + } + +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/fluxnetworks/MixinBasicTransferHandler.java b/src/main/java/github/kasuminova/novaeng/mixin/fluxnetworks/MixinBasicTransferHandler.java new file mode 100644 index 00000000..4870e345 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/fluxnetworks/MixinBasicTransferHandler.java @@ -0,0 +1,32 @@ +package github.kasuminova.novaeng.mixin.fluxnetworks; + +import github.kasuminova.novaeng.common.handler.DreamEnergyPortHandler; +import github.kasuminova.novaeng.common.machine.DreamEnergyCore; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import sonar.fluxnetworks.common.connection.transfer.BasicTransferHandler; + +import java.math.BigInteger; + +import static github.kasuminova.novaeng.common.crafttweaker.util.NovaEngUtils.BigLongMax; + +@Mixin(value = BasicTransferHandler.class,remap = false) +public class MixinBasicTransferHandler { + + @Inject(method = "getBuffer", at = @At("HEAD"), cancellable = true) + public final void getBufferMixin(CallbackInfoReturnable cir) { + if ((Object)this instanceof DreamEnergyPortHandler handler){ + var ctrl = handler.getCtrl(); + if (ctrl != null){ + BigInteger energy = DreamEnergyCore.getEnergyStored(ctrl); + if (energy.compareTo(BigLongMax) >= 0){ + cir.setReturnValue(Long.MAX_VALUE); + } else { + cir.setReturnValue(energy.longValue()); + } + } + } + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/fluxnetworks/MixinFluxNetworkServer.java b/src/main/java/github/kasuminova/novaeng/mixin/fluxnetworks/MixinFluxNetworkServer.java new file mode 100644 index 00000000..1ef9f594 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/fluxnetworks/MixinFluxNetworkServer.java @@ -0,0 +1,24 @@ +package github.kasuminova.novaeng.mixin.fluxnetworks; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; +import sonar.fluxnetworks.api.network.ITransferHandler; +import sonar.fluxnetworks.common.connection.FluxNetworkBase; +import sonar.fluxnetworks.common.connection.FluxNetworkServer; + +@Mixin(value = FluxNetworkServer.class,remap = false) +public abstract class MixinFluxNetworkServer extends FluxNetworkBase { + + @Shadow + public long bufferLimiter; + + @Redirect(method = "onEndServerTick", at = @At(value = "INVOKE", target = "Lsonar/fluxnetworks/api/network/ITransferHandler;getRequest()J",ordinal = 1)) + public long getRequest(ITransferHandler instance){ + long i = instance.getRequest(); + if (this.bufferLimiter == Long.MAX_VALUE) { + return 0; + } else return Math.min(Long.MAX_VALUE - this.bufferLimiter, i); + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/immersiveengineering/MixinTileEntityExcavator.java b/src/main/java/github/kasuminova/novaeng/mixin/immersiveengineering/MixinTileEntityExcavator.java index f9b3e54b..4f5648f6 100644 --- a/src/main/java/github/kasuminova/novaeng/mixin/immersiveengineering/MixinTileEntityExcavator.java +++ b/src/main/java/github/kasuminova/novaeng/mixin/immersiveengineering/MixinTileEntityExcavator.java @@ -1,11 +1,13 @@ package github.kasuminova.novaeng.mixin.immersiveengineering; +import blusunrize.immersiveengineering.common.blocks.metal.TileEntityBucketWheel; import blusunrize.immersiveengineering.common.blocks.metal.TileEntityExcavator; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -24,5 +26,28 @@ public class MixinTileEntityExcavator { private void redirectDoProcessOutput(final World ei, final BlockPos world, final ItemStack pos, final EnumFacing stack) { // 销毁物品!为什么不做掉落物清理! } - + + @Redirect(method = "update",at = @At(value = "INVOKE", target = "Lblusunrize/immersiveengineering/common/blocks/metal/TileEntityExcavator;digBlocksInTheWay(Lblusunrize/immersiveengineering/common/blocks/metal/TileEntityBucketWheel;)Lnet/minecraft/item/ItemStack;",remap = false)) + public ItemStack preventBlockDestruction(TileEntityExcavator instance, TileEntityBucketWheel wheel){ + // 好吧,我觉得斗轮用来挖生成在斗轮下面的刷石机太荒缪了 + return ItemStack.EMPTY; + } + + /** + * @author circulation + * @reason 彻底清理 + */ + @Overwrite(remap = false) + ItemStack digBlocksInTheWay(TileEntityBucketWheel wheel) { + return ItemStack.EMPTY; + } + + /** + * @author circulation + * @reason 彻底清理 + */ + @Overwrite(remap = false) + ItemStack digBlock(BlockPos pos) { + return ItemStack.EMPTY; + } } diff --git a/src/main/java/github/kasuminova/novaeng/mixin/jetif/MixinCompatFluxNetworks.java b/src/main/java/github/kasuminova/novaeng/mixin/jetif/MixinCompatFluxNetworks.java new file mode 100644 index 00000000..b9104a6a --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/jetif/MixinCompatFluxNetworks.java @@ -0,0 +1,23 @@ +package github.kasuminova.novaeng.mixin.jetif; + +import lykrast.jetif.JETIFCompat; +import lykrast.jetif.JETIFWrapper; +import lykrast.jetif.compat.CompatFluxNetworks; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +import java.util.List; + +@Mixin(value = CompatFluxNetworks.class, remap = false) +public class MixinCompatFluxNetworks extends JETIFCompat { + public MixinCompatFluxNetworks() { + super("fluxnetworks"); + } + + /** + * @author Circulation_ + * @reason 直接注释掉通量网络的错误配方 + */ + @Overwrite + public void addRecipes(List list) {} +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/legendarytooltips/MixinTooltipDecor.java b/src/main/java/github/kasuminova/novaeng/mixin/legendarytooltips/MixinTooltipDecor.java new file mode 100644 index 00000000..d3d8b469 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/legendarytooltips/MixinTooltipDecor.java @@ -0,0 +1,26 @@ +package github.kasuminova.novaeng.mixin.legendarytooltips; + +import com.anthonyhilyard.legendarytooltips.render.TooltipDecor; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import java.util.List; +import java.util.Map; + +@Mixin(value = TooltipDecor.class,remap = false) +public class MixinTooltipDecor { + + @Redirect(method = "drawBorder",at = @At(value = "INVOKE", target = "Ljava/util/Map;containsKey(Ljava/lang/Object;)Z")) + private static boolean containsKeyMixin(Map instance, Object o){ + boolean hasKey = instance.containsKey(o); + if (hasKey){ + if (instance.get(o) instanceof List list){ + if (list.isEmpty()){ + return false; + } + } + } + return hasKey; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/libvulpes/MixinTileFluidHatch.java b/src/main/java/github/kasuminova/novaeng/mixin/libvulpes/MixinTileFluidHatch.java new file mode 100644 index 00000000..c4500f11 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/libvulpes/MixinTileFluidHatch.java @@ -0,0 +1,19 @@ +package github.kasuminova.novaeng.mixin.libvulpes; + +import net.minecraftforge.fluids.FluidStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import zmaster587.libVulpes.tile.multiblock.hatch.TileFluidHatch; + +@Mixin(value = TileFluidHatch.class,remap = false) +public class MixinTileFluidHatch { + + @Inject(method = "drain(Lnet/minecraftforge/fluids/FluidStack;Z)Lnet/minecraftforge/fluids/FluidStack;",at = @At("HEAD"), cancellable = true) + public void drainMixin(FluidStack resource, boolean doDrain, CallbackInfoReturnable cir) { + if (resource == null){ + cir.setReturnValue(null); + } + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/lootoverhaul/MixinConfigIdFileGenerator.java b/src/main/java/github/kasuminova/novaeng/mixin/lootoverhaul/MixinConfigIdFileGenerator.java new file mode 100644 index 00000000..d9a3e65a --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/lootoverhaul/MixinConfigIdFileGenerator.java @@ -0,0 +1,20 @@ +package github.kasuminova.novaeng.mixin.lootoverhaul; + +import com.tmtravlr.lootoverhaul.utilities.ConfigIdFileGenerator; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import java.util.List; + +@Mixin(value = ConfigIdFileGenerator.class,remap = false) +public class MixinConfigIdFileGenerator { + + /** + * 我无法理解为什么会崩溃,我选择直接把它炸掉 + */ + @Redirect(method = "generateIDFiles",at = @At(value = "INVOKE", target = "Ljava/util/Collections;sort(Ljava/util/List;)V")) + private static void sortR(List list){ + + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinFontRenderer.java b/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinFontRenderer.java index 4a76b16e..e43bc3ca 100644 --- a/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinFontRenderer.java +++ b/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinFontRenderer.java @@ -11,7 +11,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.awt.*; +import java.awt.Color; @Mixin(FontRenderer.class) public class MixinFontRenderer { diff --git a/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinLanguageMap.java b/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinLanguageMap.java deleted file mode 100644 index 69d37bd4..00000000 --- a/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinLanguageMap.java +++ /dev/null @@ -1,11 +0,0 @@ -package github.kasuminova.novaeng.mixin.minecraft; - -import net.minecraft.util.text.translation.LanguageMap; -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(LanguageMap.class) -public class MixinLanguageMap { - - - -} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinNetHandlerPlayClient.java b/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinNetHandlerPlayClient.java new file mode 100644 index 00000000..9b5ead1b --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinNetHandlerPlayClient.java @@ -0,0 +1,17 @@ +package github.kasuminova.novaeng.mixin.minecraft; + +import net.minecraft.client.network.NetHandlerPlayClient; +import net.minecraft.network.play.server.SPacketRecipeBook; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(value = NetHandlerPlayClient.class) +public class MixinNetHandlerPlayClient { + + /** + * @author circulation + * @reason 废弃服务端到客户端的配方书同步 + */ + @Overwrite + public void handleRecipeBook(SPacketRecipeBook packetIn) {} +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinNettyPacketDecoder.java b/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinNettyPacketDecoder.java index 69cb5c56..1ce774c0 100644 --- a/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinNettyPacketDecoder.java +++ b/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinNettyPacketDecoder.java @@ -3,7 +3,11 @@ import github.kasuminova.novaeng.common.profiler.CPacketProfiler; import github.kasuminova.novaeng.common.profiler.SPacketProfiler; import io.netty.channel.ChannelHandlerContext; -import net.minecraft.network.*; +import net.minecraft.network.EnumPacketDirection; +import net.minecraft.network.NettyPacketDecoder; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.PacketBuffer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; diff --git a/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinRecipeBookServer.java b/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinRecipeBookServer.java new file mode 100644 index 00000000..9c04ec00 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/minecraft/MixinRecipeBookServer.java @@ -0,0 +1,82 @@ +package github.kasuminova.novaeng.mixin.minecraft; + +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.play.server.SPacketRecipeBook; +import net.minecraft.stats.RecipeBookServer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.Collections; +import java.util.List; + +@Mixin(value = RecipeBookServer.class) +public class MixinRecipeBookServer { + + /** + * @author circulation + * @reason 废弃原版配方书 + */ + @Overwrite + public void add(List recipesIn, EntityPlayerMP player) {} + + /** + * @author circulation + * @reason 废弃原版配方书 + */ + @Overwrite + public void remove(List recipesIn, EntityPlayerMP player) {} + + /** + * @author circulation + * @reason 废弃原版配方书 + */ + @Overwrite + private void sendPacket(SPacketRecipeBook.State state, EntityPlayerMP player, List recipesIn) {} + + /** + * @author circulation + * @reason 废弃原版配方书 + */ + @Overwrite + public NBTTagCompound write() { + return new NBTTagCompound(); + } + + /** + * @author circulation + * @reason 废弃原版配方书 + */ + @Overwrite + public void read(NBTTagCompound tag) {} + + /** + * @author circulation + * @reason 废弃原版配方书 + */ + @Inject(method = "getRecipes",at = @At("HEAD"), cancellable = true) + public void getRecipes(CallbackInfoReturnable> cir) { + cir.setReturnValue(Collections.emptyList()); + } + + /** + * @author circulation + * @reason 废弃原版配方书 + */ + @Overwrite + private List getDisplayedRecipes() { + return Collections.emptyList(); + } + + /** + * @author circulation + * @reason 废弃原版配方书 + */ + @Overwrite + public void init(EntityPlayerMP player) {} + +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/minecraft/forge/MixinFMLServerHandler.java b/src/main/java/github/kasuminova/novaeng/mixin/minecraft/forge/MixinFMLServerHandler.java index 736995d6..405bb47c 100644 --- a/src/main/java/github/kasuminova/novaeng/mixin/minecraft/forge/MixinFMLServerHandler.java +++ b/src/main/java/github/kasuminova/novaeng/mixin/minecraft/forge/MixinFMLServerHandler.java @@ -12,7 +12,11 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.io.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; diff --git a/src/main/java/github/kasuminova/novaeng/mixin/minecraft/forge/MixinForgeHooksClient.java b/src/main/java/github/kasuminova/novaeng/mixin/minecraft/forge/MixinForgeHooksClient.java new file mode 100644 index 00000000..97b73a7c --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/minecraft/forge/MixinForgeHooksClient.java @@ -0,0 +1,40 @@ +package github.kasuminova.novaeng.mixin.minecraft.forge; + +import net.minecraft.client.renderer.BufferBuilder; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.vertex.VertexFormat; +import net.minecraftforge.client.ForgeHooksClient; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(value = ForgeHooksClient.class,remap = false) +public class MixinForgeHooksClient { + + /** + * @author circulation + * @reason 防止出现越界错误 + */ + @Overwrite + public static void putQuadColor(BufferBuilder renderer, BakedQuad quad, int color) { + float cb = color & 0xFF; + float cg = (color >>> 8) & 0xFF; + float cr = (color >>> 16) & 0xFF; + float ca = (color >>> 24) & 0xFF; + VertexFormat format = quad.getFormat(); + int size = format.getIntegerSize(); + int offset = format.getColorOffset() / 4; // assumes that color is aligned + boolean hasColor = format.hasColor(); + for(int i = 0; i < 4; i++) { + int vc = hasColor ? (quad.getVertexData().length > offset + size * i ? quad.getVertexData()[offset + size * i] : 0xFFFFFFFF) : 0xFFFFFFFF; + float vcr = vc & 0xFF; + float vcg = (vc >>> 8) & 0xFF; + float vcb = (vc >>> 16) & 0xFF; + float vca = (vc >>> 24) & 0xFF; + int ncr = Math.min(0xFF, (int)(cr * vcr / 0xFF)); + int ncg = Math.min(0xFF, (int)(cg * vcg / 0xFF)); + int ncb = Math.min(0xFF, (int)(cb * vcb / 0xFF)); + int nca = Math.min(0xFF, (int)(ca * vca / 0xFF)); + renderer.putColorRGBA(renderer.getColorIndex(4 - i), ncr, ncg, ncb, nca); + } + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/mmce/MixinMEPatternProvider.java b/src/main/java/github/kasuminova/novaeng/mixin/mmce/MixinMEPatternProvider.java new file mode 100644 index 00000000..399f1423 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/mmce/MixinMEPatternProvider.java @@ -0,0 +1,25 @@ +package github.kasuminova.novaeng.mixin.mmce; + +import github.kasuminova.mmce.common.tile.MEPatternProvider; +import github.kasuminova.mmce.common.tile.base.MEMachineComponent; +import github.kasuminova.novaeng.common.tile.MEPatternProviderNova; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(value = MEPatternProvider.class,remap = false) +public abstract class MixinMEPatternProvider extends MEMachineComponent implements MEPatternProviderNova { + @Unique + public boolean novaEngineering_Core$ignoreParallel = false; + + @Shadow + public abstract MEPatternProvider.WorkModeSetting getWorkMode(); + + public boolean r$isIgnoreParallel() { + return novaEngineering_Core$ignoreParallel; + } + + public void r$IgnoreParallel() { + novaEngineering_Core$ignoreParallel = true; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/mmce/MixinMachineRecipe.java b/src/main/java/github/kasuminova/novaeng/mixin/mmce/MixinMachineRecipe.java new file mode 100644 index 00000000..2e97ffaf --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/mmce/MixinMachineRecipe.java @@ -0,0 +1,51 @@ +package github.kasuminova.novaeng.mixin.mmce; + +import github.kasuminova.novaeng.mixin.util.NovaRAB; +import hellfirepvp.modularmachinery.common.crafting.MachineRecipe; +import hellfirepvp.modularmachinery.common.crafting.helper.ComponentRequirement; +import hellfirepvp.modularmachinery.common.crafting.helper.ComponentSelectorTag; +import hellfirepvp.modularmachinery.common.crafting.requirement.RequirementItem; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.RecipeAdapterBuilder; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; + +@Mixin(value = MachineRecipe.class,remap = false) +public abstract class MixinMachineRecipe { + + @Shadow + @Final + protected List> recipeRequirements; + + @Inject(method = "mergeAdapter",at = @At("HEAD")) + public void mergeAdapter(RecipeAdapterBuilder adapterBuilder, CallbackInfo ci) { + if (adapterBuilder instanceof NovaRAB n){ + String inTagName = n.n$getInTags(); + String outTagName = n.n$getOutTags(); + if (inTagName.isEmpty() && outTagName.isEmpty())return; + ComponentSelectorTag inTag = inTagName.isEmpty() ? null:new ComponentSelectorTag(n.n$getInTags()); + ComponentSelectorTag outTag = outTagName.isEmpty() ? null:new ComponentSelectorTag(n.n$getOutTags()); + this.recipeRequirements.forEach(component -> { + if (component instanceof RequirementItem) { + switch (component.getActionType()){ + case INPUT -> { + if (!inTagName.isEmpty()){ + component.setTag(inTag); + } + } + case OUTPUT -> { + if (!outTagName.isEmpty()){ + component.setTag(outTag); + } + } + } + } + }); + } + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/mmce/MixinRecipeAdapterBuilder.java b/src/main/java/github/kasuminova/novaeng/mixin/mmce/MixinRecipeAdapterBuilder.java new file mode 100644 index 00000000..1d435fe9 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/mmce/MixinRecipeAdapterBuilder.java @@ -0,0 +1,41 @@ +package github.kasuminova.novaeng.mixin.mmce; + +import github.kasuminova.novaeng.mixin.util.NovaRAB; +import hellfirepvp.modularmachinery.common.integration.crafttweaker.RecipeAdapterBuilder; +import org.jetbrains.annotations.NotNull; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(value = RecipeAdapterBuilder.class,remap = false) +public class MixinRecipeAdapterBuilder implements NovaRAB { + + @Unique + public String novaEngineering_Core$inTags = ""; + @Unique + public String novaEngineering_Core$outTags = ""; + + @Unique + @Override + public void n$setInTags(String tagName) { + this.novaEngineering_Core$inTags = tagName; + } + + @Unique + @Override + public String n$getInTags() { + return novaEngineering_Core$inTags; + } + + @Unique + @Override + public void n$setOutTags(@NotNull String tagName) { + this.novaEngineering_Core$outTags = tagName; + } + + @Unique + @Override + public String n$getOutTags() { + return novaEngineering_Core$outTags; + } + +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/nco/MixinFluidTileWrapper.java b/src/main/java/github/kasuminova/novaeng/mixin/nco/MixinFluidTileWrapper.java new file mode 100644 index 00000000..9744a306 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/nco/MixinFluidTileWrapper.java @@ -0,0 +1,20 @@ +package github.kasuminova.novaeng.mixin.nco; + +import nc.tile.internal.fluid.FluidTileWrapper; +import net.minecraftforge.fluids.FluidStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(value = FluidTileWrapper.class,remap = false) +public class MixinFluidTileWrapper { + + @Inject(method = "drain(Lnet/minecraftforge/fluids/FluidStack;Z)Lnet/minecraftforge/fluids/FluidStack;",at = @At("HEAD"), cancellable = true) + public void drainMixin(FluidStack resource, boolean doDrain, CallbackInfoReturnable cir){ + if (resource == null){ + cir.setReturnValue(null); + } + } + +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/opticheck/MixinOptiCheckScreen.java b/src/main/java/github/kasuminova/novaeng/mixin/opticheck/MixinOptiCheckScreen.java new file mode 100644 index 00000000..830de146 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/opticheck/MixinOptiCheckScreen.java @@ -0,0 +1,56 @@ +package github.kasuminova.novaeng.mixin.opticheck; + +import net.kettlemc.opticheck.OptiCheckConfig; +import net.kettlemc.opticheck.OptiCheckScreen; +import net.kettlemc.opticheck.Utils; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.resources.I18n; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(value = OptiCheckScreen.class) +public class MixinOptiCheckScreen extends GuiScreen { + + /** + * @author circulaiton + * @reason i18n支持 + */ + @Overwrite + public void initGui() { + if (OptiCheckConfig.mode == 0) { + this.buttonList.add(new GuiButton(0, this.width / 2 - 154, this.height / 2 + 96, 144, 20, Utils.color(I18n.format("text.key.continue")))); + } else { + this.buttonList.clear(); + this.buttonList.add(new GuiButton(0, this.width / 2 - 154, this.height / 2 + 96, 144, 20, Utils.color(I18n.format("text.key.quit")))); + } + + this.buttonList.add(new GuiButton(1, this.width / 2 + 10, this.height / 2 + 96, 144, 20, Utils.color(I18n.format("text.key.link")))); + } + + /** + * @author circulaiton + * @reason i18n支持 + */ + @Overwrite + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + GlStateManager.disableTexture2D(); + GlStateManager.enableTexture2D(); + this.drawDefaultBackground(); + this.drawCenteredString(this.fontRenderer, Utils.color(I18n.format("text.tooltip.title")), this.width / 2, this.height / 2 - 100, 16777215); + int i = 0; + for (String text: novaEngineering_Core$getString()){ + Utils.handleGuiText(Utils.color(text), this.fontRenderer, this, this.width, this.height + i*20); + i++; + } + super.drawScreen(mouseX, mouseY, partialTicks); + } + + @Unique + public String[] novaEngineering_Core$getString(){ + return I18n.format("text.tooltip.message").split("#n"); + } + +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/packagedauto/MixinGuiUnpackager.java b/src/main/java/github/kasuminova/novaeng/mixin/packagedauto/MixinGuiUnpackager.java new file mode 100644 index 00000000..c40b6be2 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/packagedauto/MixinGuiUnpackager.java @@ -0,0 +1,25 @@ +package github.kasuminova.novaeng.mixin.packagedauto; + +import net.minecraft.client.gui.GuiButton; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; +import thelm.packagedauto.client.gui.GuiContainerTileBase; +import thelm.packagedauto.client.gui.GuiUnpackager; +import thelm.packagedauto.container.ContainerUnpackager; + +@Mixin(GuiUnpackager.class) +public abstract class MixinGuiUnpackager extends GuiContainerTileBase { + + public MixinGuiUnpackager(ContainerUnpackager containerUnpackager) { + super(containerUnpackager); + } + + @Redirect(method = "initGui",at = @At(value = "INVOKE", target = "Lthelm/packagedauto/client/gui/GuiUnpackager;addButton(Lnet/minecraft/client/gui/GuiButton;)Lnet/minecraft/client/gui/GuiButton;")) + public GuiButton initGui(GuiUnpackager instance, GuiButton guiButton) { + if (guiButton.getClass().getSimpleName().equals("GuiButtonTracker")){ + return null; + } + return this.addButton(guiButton); + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/packagedauto/MixinPacketEjectTracker.java b/src/main/java/github/kasuminova/novaeng/mixin/packagedauto/MixinPacketEjectTracker.java new file mode 100644 index 00000000..b9ed62e2 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/packagedauto/MixinPacketEjectTracker.java @@ -0,0 +1,18 @@ +package github.kasuminova.novaeng.mixin.packagedauto; + +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import thelm.packagedauto.network.packet.PacketEjectTracker; + +@Mixin(value = PacketEjectTracker.class,remap = false) +public class MixinPacketEjectTracker { + + @Inject(method = "onMessage",at = @At("HEAD"), cancellable = true) + public void onMessage(MessageContext ctx, CallbackInfoReturnable cir) { + cir.setReturnValue(null); + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/psi/MixinPieceTrickExplode.java b/src/main/java/github/kasuminova/novaeng/mixin/psi/MixinPieceTrickExplode.java new file mode 100644 index 00000000..63f3da41 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/psi/MixinPieceTrickExplode.java @@ -0,0 +1,66 @@ +package github.kasuminova.novaeng.mixin.psi; + +import github.kasuminova.novaeng.NovaEngineeringCore; +import github.kasuminova.novaeng.common.config.NovaEngCoreConfig; +import net.minecraft.util.text.TextComponentString; +import org.spongepowered.asm.mixin.Mixin; +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.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import vazkii.psi.api.spell.Spell; +import vazkii.psi.api.spell.SpellCompilationException; +import vazkii.psi.api.spell.SpellContext; +import vazkii.psi.api.spell.SpellMetadata; +import vazkii.psi.api.spell.SpellParam; +import vazkii.psi.api.spell.piece.PieceTrick; +import vazkii.psi.common.spell.trick.PieceTrickExplode; + +@Mixin(value = PieceTrickExplode.class,remap = false) +public abstract class MixinPieceTrickExplode extends PieceTrick { + + @Shadow + SpellParam position; + @Shadow + SpellParam power; + + public MixinPieceTrickExplode(Spell spell) { + super(spell); + } + + @Shadow public abstract void addToMetadata(SpellMetadata meta) throws SpellCompilationException; + + @Unique + private static final double novaEngineering_Core$MAXPOWER = 5.0D; + @Unique + SpellContext novaEngineering_Core$context; + + @Redirect(method = "addToMetadata",at = @At(value = "INVOKE", target = "Lvazkii/psi/common/spell/trick/PieceTrickExplode;getParamEvaluation(Lvazkii/psi/api/spell/SpellParam;)Ljava/lang/Object;")) + public Object addToMetadataMixin(PieceTrickExplode instance, SpellParam spellParam) throws SpellCompilationException { + Double powerVal = this.getParamEvaluation(this.power); + if (powerVal != null && powerVal > novaEngineering_Core$MAXPOWER) { + return novaEngineering_Core$MAXPOWER; + } + return powerVal; + } + + @Inject(method = "execute",at = @At(value = "HEAD")) + public void execute(SpellContext context, CallbackInfoReturnable cir){ + novaEngineering_Core$context = context; + } + + @Redirect(method = "execute",at = @At(value = "INVOKE", target = "Lvazkii/psi/common/spell/trick/PieceTrickExplode;getParamValue(Lvazkii/psi/api/spell/SpellContext;Lvazkii/psi/api/spell/SpellParam;)Ljava/lang/Object;",ordinal = 1)) + public Object executeRed(PieceTrickExplode instance, SpellContext spellContext, SpellParam spellParam) { + Double powerVal = this.getParamValue(novaEngineering_Core$context, this.power); + if (novaEngineering_Core$context != null && powerVal != null && powerVal > novaEngineering_Core$MAXPOWER){ + NovaEngineeringCore.log.info(spellContext.caster.getName() + "试图释放超过5的爆炸效果,已经修正"); + if (NovaEngCoreConfig.CLIENT.piece){ + spellContext.caster.world.playerEntities.forEach(player -> player.sendMessage(new TextComponentString(spellContext.caster.getName() + "[" + spellContext.caster.getUniqueID() + "]试图释放超过5的爆炸效果,已经修正"))); + } + return novaEngineering_Core$MAXPOWER; + } + return powerVal; + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/rftools/MixinBuilderTileEntity.java b/src/main/java/github/kasuminova/novaeng/mixin/rftools/MixinBuilderTileEntity.java new file mode 100644 index 00000000..a7b34776 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/rftools/MixinBuilderTileEntity.java @@ -0,0 +1,62 @@ +package github.kasuminova.novaeng.mixin.rftools; + +import github.kasuminova.novaeng.common.command.CommandBuilder; +import mcjty.lib.tileentity.GenericEnergyReceiverTileEntity; +import mcjty.rftools.blocks.builder.BuilderTileEntity; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextComponentString; +import net.minecraft.world.WorldServer; +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; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(value = BuilderTileEntity.class,remap = false) +public abstract class MixinBuilderTileEntity extends GenericEnergyReceiverTileEntity { + + public MixinBuilderTileEntity(long maxEnergy, long maxReceive) { + super(maxEnergy, maxReceive); + } + + @Inject(method = "update",at = @At("HEAD")) + private void commonQuarryBlockI(CallbackInfo ci) { + if (CommandBuilder.INSTANCE.isTickWork){ + if (this.getWorld() instanceof WorldServer w){ + if (w.getWorldTime() % 200 != 0)return; + if (w.getMinecraftServer() != null){ + var server = w.getMinecraftServer(); + var playerList = server.getPlayerList(); + var players = playerList.getPlayers(); + for (EntityPlayerMP player : players) { + player.sendMessage(new TextComponentString("位于world:" + w.provider.getDimension() + n$getPosName(this.pos) + "的属于玩家" + this.getOwnerName() + "[" + this.getOwnerUUID() + "]的建造机正常工作")); + } + } + } + } + } + + @Inject(method = "commonQuarryBlock",at = @At("HEAD")) + private void commonQuarryBlockI(boolean silk, int rfNeeded, BlockPos srcPos, IBlockState srcState, CallbackInfoReturnable cir) { + if (CommandBuilder.INSTANCE.isQuarryWork){ + if (this.getWorld() instanceof WorldServer w){ + if (w.getMinecraftServer() != null){ + var server = w.getMinecraftServer(); + var playerList = server.getPlayerList(); + var players = playerList.getPlayers(); + for (EntityPlayerMP player : players) { + player.sendMessage(new TextComponentString("位于world:" + w.provider.getDimension() + n$getPosName(this.pos) + "的属于玩家" + this.getOwnerName() + "[" + this.getOwnerUUID() + "]的建造机挖掘了位于" + n$getPosName(srcPos) + "的方块")); + } + } + } + } + } + + @Unique + private String n$getPosName(BlockPos pos){ + return "x:" + pos.getX() + ",y:" + pos.getY() + ",z:" + pos.getZ(); + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/techguns/MixinItemRenderHack.java b/src/main/java/github/kasuminova/novaeng/mixin/techguns/MixinItemRenderHack.java new file mode 100644 index 00000000..3863f250 --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/techguns/MixinItemRenderHack.java @@ -0,0 +1,51 @@ +package github.kasuminova.novaeng.mixin.techguns; + +import net.minecraft.client.renderer.block.model.ItemCameraTransforms; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumHandSide; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Unique; +import techguns.api.guns.GunManager; +import techguns.client.render.ItemRenderHack; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +@Mixin(value = ItemRenderHack.class,remap = false) +public class MixinItemRenderHack { + + @Unique + private static final Set novaEngineering_Core$set = new HashSet<>( + Arrays.asList( + ItemCameraTransforms.TransformType.FIRST_PERSON_LEFT_HAND, + ItemCameraTransforms.TransformType.THIRD_PERSON_LEFT_HAND, + ItemCameraTransforms.TransformType.FIRST_PERSON_RIGHT_HAND, + ItemCameraTransforms.TransformType.THIRD_PERSON_RIGHT_HAND + ) + ); + + /** + * @author circulation + * @reason 重写方法防止植物魔法的活木化身崩溃 + */ + @Overwrite + protected static boolean shouldRenderItem(ItemStack stack, EntityLivingBase elb, ItemCameraTransforms.TransformType transform, boolean leftHanded) { + if (novaEngineering_Core$set.contains(transform)) { + boolean mainhand = transform == ItemCameraTransforms.TransformType.FIRST_PERSON_RIGHT_HAND || transform == ItemCameraTransforms.TransformType.THIRD_PERSON_RIGHT_HAND; + try { + if (elb.getPrimaryHand() == EnumHandSide.LEFT) { + mainhand = !mainhand; + } + return mainhand || GunManager.canUseOffhand(elb.getHeldItemMainhand(), stack, elb); + } catch (NullPointerException e) { + return true; + } + + } else { + return true; + } + } +} diff --git a/src/main/java/github/kasuminova/novaeng/mixin/util/NovaRAB.java b/src/main/java/github/kasuminova/novaeng/mixin/util/NovaRAB.java new file mode 100644 index 00000000..2e0af0ef --- /dev/null +++ b/src/main/java/github/kasuminova/novaeng/mixin/util/NovaRAB.java @@ -0,0 +1,8 @@ +package github.kasuminova.novaeng.mixin.util; + +public interface NovaRAB { + void n$setOutTags(String tagName); + String n$getOutTags(); + void n$setInTags(String tagName); + String n$getInTags(); +} diff --git a/src/main/resources/assets/bibliocraft/textures/custompaintings/1da616af7ed297d6.png b/src/main/resources/assets/bibliocraft/textures/custompaintings/1da616af7ed297d6.png new file mode 100644 index 00000000..c83a049c Binary files /dev/null and b/src/main/resources/assets/bibliocraft/textures/custompaintings/1da616af7ed297d6.png differ diff --git a/src/main/resources/assets/bibliocraft/textures/custompaintings/1f0d554cdfcf014f7ed297d6.png b/src/main/resources/assets/bibliocraft/textures/custompaintings/1f0d554cdfcf014f7ed297d6.png new file mode 100644 index 00000000..7c4a4e1a Binary files /dev/null and b/src/main/resources/assets/bibliocraft/textures/custompaintings/1f0d554cdfcf014f7ed297d6.png differ diff --git a/src/main/resources/assets/modularmachinery/textures/singularity_core.png b/src/main/resources/assets/modularmachinery/textures/singularity_core.png index 0d88df52..b6f6efc4 100644 Binary files a/src/main/resources/assets/modularmachinery/textures/singularity_core.png and b/src/main/resources/assets/modularmachinery/textures/singularity_core.png differ diff --git a/src/main/resources/assets/novaeng_core/blockstates/dreamenergyport.json b/src/main/resources/assets/novaeng_core/blockstates/dreamenergyport.json new file mode 100644 index 00000000..c0306c3b --- /dev/null +++ b/src/main/resources/assets/novaeng_core/blockstates/dreamenergyport.json @@ -0,0 +1,19 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "novaeng_core:dreamenergyport" + }, + "variants": { + "connected=false": { + "model": "novaeng_core:dreamenergyport" + }, + "connected=true": { + "model": "novaeng_core:dreamenergyport" + }, + "inventory": [ + { + "transform": "forge:default-block" + } + ] + } +} diff --git a/src/main/resources/assets/novaeng_core/blockstates/estorage_cell_drive.json b/src/main/resources/assets/novaeng_core/blockstates/estorage_cell_drive.json index 184a1fc0..bb2ff537 100644 --- a/src/main/resources/assets/novaeng_core/blockstates/estorage_cell_drive.json +++ b/src/main/resources/assets/novaeng_core/blockstates/estorage_cell_drive.json @@ -98,6 +98,16 @@ "model": "novaeng_core:storage_array_drives_a/storage_array_drives_a0_fl" } }, + { + "when": { + "facing": "north", + "storage_level": "a", + "storage_type": "gas" + }, + "apply": { + "model": "novaeng_core:storage_array_drives_a/storage_array_drives_a0_gas" + } + }, { "when": { "facing": "north", @@ -118,6 +128,16 @@ "model": "novaeng_core:storage_array_drives_b/storage_array_drives_b0_fl" } }, + { + "when": { + "facing": "north", + "storage_level": "b", + "storage_type": "gas" + }, + "apply": { + "model": "novaeng_core:storage_array_drives_b/storage_array_drives_b0_gas" + } + }, { "when": { "facing": "north", @@ -138,6 +158,16 @@ "model": "novaeng_core:storage_array_drives_c/storage_array_drives_c0_fl" } }, + { + "when": { + "facing": "north", + "storage_level": "c", + "storage_type": "gas" + }, + "apply": { + "model": "novaeng_core:storage_array_drives_c/storage_array_drives_c0_gas" + } + }, { "when": { "facing": "south", @@ -160,6 +190,17 @@ "y": 180 } }, + { + "when": { + "facing": "south", + "storage_level": "a", + "storage_type": "gas" + }, + "apply": { + "model": "novaeng_core:storage_array_drives_a/storage_array_drives_a0_gas", + "y": 180 + } + }, { "when": { "facing": "south", @@ -182,6 +223,17 @@ "y": 180 } }, + { + "when": { + "facing": "south", + "storage_level": "b", + "storage_type": "gas" + }, + "apply": { + "model": "novaeng_core:storage_array_drives_b/storage_array_drives_b0_gas", + "y": 180 + } + }, { "when": { "facing": "south", @@ -204,6 +256,17 @@ "y": 180 } }, + { + "when": { + "facing": "south", + "storage_level": "c", + "storage_type": "gas" + }, + "apply": { + "model": "novaeng_core:storage_array_drives_c/storage_array_drives_c0_gas", + "y": 180 + } + }, { "when": { "facing": "west", @@ -226,6 +289,17 @@ "y": 270 } }, + { + "when": { + "facing": "west", + "storage_level": "a", + "storage_type": "gas" + }, + "apply": { + "model": "novaeng_core:storage_array_drives_a/storage_array_drives_a0_gas", + "y": 270 + } + }, { "when": { "facing": "west", @@ -248,6 +322,17 @@ "y": 270 } }, + { + "when": { + "facing": "west", + "storage_level": "b", + "storage_type": "gas" + }, + "apply": { + "model": "novaeng_core:storage_array_drives_b/storage_array_drives_b0_gas", + "y": 270 + } + }, { "when": { "facing": "west", @@ -270,6 +355,17 @@ "y": 270 } }, + { + "when": { + "facing": "west", + "storage_level": "c", + "storage_type": "gas" + }, + "apply": { + "model": "novaeng_core:storage_array_drives_c/storage_array_drives_c0_gas", + "y": 270 + } + }, { "when": { "facing": "east", @@ -292,6 +388,17 @@ "y": 90 } }, + { + "when": { + "facing": "east", + "storage_level": "a", + "storage_type": "gas" + }, + "apply": { + "model": "novaeng_core:storage_array_drives_a/storage_array_drives_a0_gas", + "y": 90 + } + }, { "when": { "facing": "east", @@ -314,6 +421,17 @@ "y": 90 } }, + { + "when": { + "facing": "east", + "storage_level": "b", + "storage_type": "gas" + }, + "apply": { + "model": "novaeng_core:storage_array_drives_b/storage_array_drives_b0_gas", + "y": 90 + } + }, { "when": { "facing": "east", @@ -336,6 +454,17 @@ "y": 90 } }, + { + "when": { + "facing": "east", + "storage_level": "c", + "storage_type": "gas" + }, + "apply": { + "model": "novaeng_core:storage_array_drives_c/storage_array_drives_c0_gas", + "y": 90 + } + }, { "when": { "facing": "north", diff --git a/src/main/resources/assets/novaeng_core/blockstates/redstone_logical_port.json b/src/main/resources/assets/novaeng_core/blockstates/redstone_logical_port.json new file mode 100644 index 00000000..b9a50b59 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/blockstates/redstone_logical_port.json @@ -0,0 +1,61 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "novaeng_core:redstone_logical_port" + }, + "variants": { + "power=0": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=1": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=2": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=3": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=4": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=5": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=6": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=7": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=8": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=9": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=10": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=11": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=12": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=13": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=14": { + "model": "novaeng_core:redstone_logical_port" + }, + "power=15": { + "model": "novaeng_core:redstone_logical_port" + }, + "inventory": [ + { + "transform": "forge:default-block" + } + ] + } +} diff --git a/src/main/resources/assets/novaeng_core/lang/en_US.lang b/src/main/resources/assets/novaeng_core/lang/en_US.lang index a9601d17..2c88dd0f 100644 --- a/src/main/resources/assets/novaeng_core/lang/en_US.lang +++ b/src/main/resources/assets/novaeng_core/lang/en_US.lang @@ -1,72 +1,82 @@ item.hypernet_connect_card.tooltip.1=§9这张存储卡可以储存一个 HyperNet 网络的频段和坐标信息,存储的密钥经过重重加密。 item.hypernet_connect_card.tooltip.2=§9右击支持 HyperNet 的机械控制器,即可自动解析存储卡并连接至 HyperNet 计算网络。 item.hypernet_connect_card.tooltip.3=§a存储卡可以重复使用。 -item.hypernet_connect_card.tooltip.4=§c警告:使用时请保持 HyperNet 计算网络中心在线。HyperNet 通讯距离无限,但是无法跨越维度。 -item.hypernet_connect_card.tooltip.no_pos.tip.0=§b存储卡中保存的坐标:§e空 +item.hypernet_connect_card.tooltip.4=§c警告:使用时请保持 HyperNet 计算网络中心在线。HyperNet 通讯距离无限,但是无法跨越维度。 +item.hypernet_connect_card.tooltip.no_pos.tip.0=§b存储卡中保存的坐标:§e空 item.hypernet_connect_card.tooltip.no_pos.tip.1=§2右击任意等级的计算网络中心控制器来写入数据。 -item.hypernet_connect_card.tooltip.pos.tip.0=§b存储卡中保存的坐标:§a(X: %s, Y: %s, Z: %s) +item.hypernet_connect_card.tooltip.pos.tip.0=§b存储卡中保存的坐标:§a(X: %s, Y: %s, Z: %s) item.hypernet_connect_card.tooltip.pos.tip.1=§2右击任意等级的计算网络中心控制器来覆写数据。 -item.novaeng_core.estorage_cell_item_16m.name=§9ECO - §bLE4 §9存储矩阵§a(物品) -item.novaeng_core.estorage_cell_item_64m.name=§9ECO - §6LE6 §9存储矩阵§a(物品) -item.novaeng_core.estorage_cell_item_256m.name=§9ECO - §5LE9 §9存储矩阵§a(物品) +item.novaeng_core.estorage_cell_item_16m.name=§9ECO - §bSE4 §9存储矩阵§a(物品) +item.novaeng_core.estorage_cell_item_64m.name=§9ECO - §6SE6 §9存储矩阵§a(物品) +item.novaeng_core.estorage_cell_item_256m.name=§9ECO - §5SE9 §9存储矩阵§a(物品) -item.novaeng_core.estorage_cell_fluid_16m.name=§9ECO - §bLE4 §9存储矩阵§b(流体) -item.novaeng_core.estorage_cell_fluid_64m.name=§9ECO - §6LE6 §9存储矩阵§b(流体) -item.novaeng_core.estorage_cell_fluid_256m.name=§9ECO - §5LE9 §9存储矩阵§b(流体) +item.novaeng_core.estorage_cell_fluid_16m.name=§9ECO - §bSE4 §9存储矩阵§b(流体) +item.novaeng_core.estorage_cell_fluid_64m.name=§9ECO - §6SE6 §9存储矩阵§b(流体) +item.novaeng_core.estorage_cell_fluid_256m.name=§9ECO - §5SE9 §9存储矩阵§b(流体) + +item.novaeng_core.estorage_cell_gas_16m.name=§9ECO - §bSE4 §9存储矩阵§b(气体) +item.novaeng_core.estorage_cell_gas_64m.name=§9ECO - §6SE6 §9存储矩阵§b(气体) +item.novaeng_core.estorage_cell_gas_256m.name=§9ECO - §5SE9 §9存储矩阵§b(气体) item.novaeng_core.ecalculator_cell_64m.name=§9ECO - §bCE4 §b闪存晶阵 item.novaeng_core.ecalculator_cell_1024m.name=§9ECO - §6CE6 §b闪存晶阵 item.novaeng_core.ecalculator_cell_16384m.name=§9ECO - §5CE9 §b闪存晶阵 +item.novaeng_core.magic_breaking_stone.name=破魔之石 + +item.novaeng_core.horologium_compass.name=Horologium Compass +item.novaeng_core.horologium_compass.tooltip.0=§9Searching for the traces of time +tile.horologium_compass.success=§6Compass Revelation:§9The veil of time frays in %s days. + novaeng.ecalculator_cell.insert.tip=蹲下时手持矩阵并右击驱动器以插入晶阵。 novaeng.ecalculator_cell.extract.tip=蹲下时空手并右击驱动器以取出晶阵。 novaeng.ecalculator_cell.tip.0=§b闪存晶阵§7为§9计算子系统§7提供§a内存存储§7。 novaeng.ecalculator_cell.tip.1=§b闪存晶阵§7是存储矩阵的高速存取特化版本。 novaeng.ecalculator_cell.tip.2=相比§9存储矩阵§7,其内部规模要§a更加宏大§7,但作为代价,其存储容量也远§c不如§9存储矩阵§7。 -novaeng.ecalculator_cell.tip.3=§b字节数提供:§a%sB +novaeng.ecalculator_cell.tip.3=§b字节数提供:§a%sB novaeng.ecalculator_cell.l6.tip=§c只有 §6C6§c 等级及以上的主机可以驱动此晶阵。 novaeng.ecalculator_cell.l9.tip=§c只有 §6C9§c 等级的主机可以驱动此晶阵。 novaeng.estorage_cell.insert.tip=蹲下时§a手持矩阵并右击§7驱动器以插入矩阵。 novaeng.estorage_cell.extract.tip=蹲下时§a空手并右击§7驱动器以取出矩阵。 -novaeng.estorage_cell.l6.tip=§c只有 §6L6§c 等级及以上的主机可以驱动此矩阵。 -novaeng.estorage_cell.l9.tip=§c只有 §6L9§c 等级的主机可以驱动此矩阵。 +novaeng.estorage_cell.l6.tip=§c只有 §6S6§c 等级及以上的主机可以驱动此矩阵。 +novaeng.estorage_cell.l9.tip=§c只有 §6S9§c 等级的主机可以驱动此矩阵。 novaeng.estorage_cell_drive.player.inserted=§a已插入存储矩阵。 novaeng.estorage_cell_drive.player.removed=§a已取出存储矩阵。 -novaeng.estorage_cell_drive.player.no_permission=§c访问被拒绝(原因:无 ME 网络权限)。 +novaeng.estorage_cell_drive.player.no_permission=§c访问被拒绝(原因:无 ME 网络权限)。 novaeng.ecalculator_thread_core.info.0=§b线程核心§7是计算子系统的主要部分,为主机提供§5线程数§7。 novaeng.ecalculator_thread_core.info.1=§b线程核心§7提供的§9线程§7为子系统提供最大§b虚拟合成处理器(vCPU)§7数量。 novaeng.ecalculator_thread_core.info.2=拆除时会直接§a保存压缩后的 CPU 数据至掉落物§7。 -novaeng.ecalculator_thread_core.modifiers=§b线程数§7修正: -novaeng.ecalculator_thread_core.modifier.add= 最大线程数:§a+%s +novaeng.ecalculator_thread_core.modifiers=§b线程数§7修正: +novaeng.ecalculator_thread_core.modifier.add= 最大线程数:§a+%s novaeng.ecalculator_thread_core_hyper.info.0=§9超线程核心§7相比§b线程核心§7,能为主机提供§a更多§7的§5线程数§7。 novaeng.ecalculator_thread_core_hyper.info.1=作为代价,每个§a合成任务§7需要的字节数会§c更多§7(§c+10%%§7)。 novaeng.ecalculator_thread_core_hyper.info.2=主机会优先使用§b普通线程§7而不是§9超线程§7。 -novaeng.ecalculator_thread_core_hyper.modifier.add= 最大超线程数:§a+%s +novaeng.ecalculator_thread_core_hyper.modifier.add= 最大超线程数:§a+%s novaeng.ecalculator_parallel_proc.info.0=§5并行核心§7为计算子系统提供§5并行数§7。 novaeng.ecalculator_parallel_proc.info.1=§5并行数§7可提高§a所有§b线程核心§7每次处理合成任务的§a处理数量§7。 -novaeng.ecalculator_parallel_proc.modifiers=§5并行数§7修正: -novaeng.ecalculator_parallel_proc.modifier.add= 最大并行数:§a+%s +novaeng.ecalculator_parallel_proc.modifiers=§5并行数§7修正: +novaeng.ecalculator_parallel_proc.modifier.add= 最大并行数:§a+%s novaeng.ecalculator_cell_drive.info.0=§b晶阵驱动器§7为计算子系统提供§b闪存晶阵§7的存储空间。 novaeng.ecalculator_cell_drive.info.1=§b晶阵驱动器§7能够驱动的晶阵等级取决于主机的§5等级§7。 novaeng.ecalculator_cell_drive.player.inserted=§a已插入闪存晶阵。 novaeng.ecalculator_cell_drive.player.removed=§a已取出闪存晶阵。 -novaeng.ecalculator_cell_drive.player.no_permission=§c访问被拒绝(原因:无 ME 网络权限)。 +novaeng.ecalculator_cell_drive.player.no_permission=§c访问被拒绝(原因:无 ME 网络权限)。 novaeng.extendable_storage_subsystem.info.0=整个§9存储子系统§7的§a核心§7。 -novaeng.extendable_storage_subsystem.info.1=最大长度:§a12 +novaeng.extendable_storage_subsystem.info.1=最大长度:§a12 novaeng.extendable_fabricator_subsystem.info.0=整个§e合成子系统§7的§a核心§7。 -novaeng.extendable_fabricator_subsystem.info.1=最大长度:§a12 +novaeng.extendable_fabricator_subsystem.info.1=最大长度:§a12 novaeng.extendable_calculate_subsystem.info.0=整个§b计算子系统§7的§a核心§7。 -novaeng.extendable_calculate_subsystem.info.1=最大长度:§a12 +novaeng.extendable_calculate_subsystem.info.1=最大长度:§a12 novaeng.extendable_calculate_subsystem.info.2=计算子系统引入了§b虚拟合成处理器§7的设定(简称 §bvCPU§7),通过 ME 通讯接口来访问。 -novaeng.extendable_calculate_subsystem.info.3=§b虚拟合成处理器(vCPU)§7: +novaeng.extendable_calculate_subsystem.info.3=§b虚拟合成处理器(vCPU)§7: novaeng.extendable_calculate_subsystem.info.4= 主机每次只向 ME 网络提供一个 §bvCPU§7,其容量为子系统当前所有可用的字节数。 novaeng.extendable_calculate_subsystem.info.5= 每当用户发配合成任务给 §bvCPU§7 时,主机会自动调节 §bvCPU§7 的字节数至任务所需的字节数,然后将其分配给§b线程核心§7。 novaeng.extendable_calculate_subsystem.info.6= 分配完成后,如果系统当前可用字节数大于 §e10%%§7,则会自动分配新的 §bvCPU§7,否则§c停止分配§7,直到可用字节数大于 §e10%%§7。 @@ -75,13 +85,13 @@ novaeng.extendable_calculate_subsystem.info.8= §bvCPU§7 会在合成任务完 novaeng.efabricator_parallel_proc.info.0=§5并行核心§7为合成子系统提供§5并行数§7。 novaeng.efabricator_parallel_proc.info.1=§5并行数§7可提高§b工作核心§7每次处理合成任务的§a处理数量§7(最大不超过队列深度)。 -novaeng.efabricator_parallel_proc.modifiers=§5并行数§7修正: -novaeng.efabricator_parallel_proc.overclock_modifiers=启用§c超频§7时: -novaeng.efabricator_parallel_proc.modifier.add=最大并行数:§a+%s -novaeng.efabricator_parallel_proc.modifier.sub=最大并行数修正:§c-%s -novaeng.efabricator_parallel_proc.modifier.mul=最大并行数修正:§a+%s%% -novaeng.efabricator_parallel_proc.modifier.mul.debuff=最大并行数修正:§c-%s%% -novaeng.efabricator_parallel_proc.info.2=启用§9主动冷却§7时: +novaeng.efabricator_parallel_proc.modifiers=§5并行数§7修正: +novaeng.efabricator_parallel_proc.overclock_modifiers=启用§c超频§7时: +novaeng.efabricator_parallel_proc.modifier.add=最大并行数:§a+%s +novaeng.efabricator_parallel_proc.modifier.sub=最大并行数修正:§c-%s +novaeng.efabricator_parallel_proc.modifier.mul=最大并行数修正:§a+%s%% +novaeng.efabricator_parallel_proc.modifier.mul.debuff=最大并行数修正:§c-%s%% +novaeng.efabricator_parallel_proc.info.2=启用§9主动冷却§7时: novaeng.efabricator_parallel_proc.info.3= §a消除§7超频的§c负面§7修正。 novaeng.efabricator_parallel_proc.info.4= 工作后溢出的并行数转换为工作间隔§a减成§7并消耗§9冷却液§7,最低不低于 §b1§7 Tick(§b0.05s§7)。 novaeng.efabricator_parallel_proc.info.5= 每溢出 §e5%%§7 最大并行数,为子系统降低 §b1§7 Tick(§b0.05s§7)的工作间隔。 @@ -89,15 +99,15 @@ novaeng.efabricator_parallel_proc.info.6= 每降低 §b1§7 Tick(§b0.05s§ novaeng.efabricator_worker.info.0=§b工作核心§7是合成子系统的§e主要部分§7。 novaeng.efabricator_worker.info.1=每个核心带有 §a32§7 队列深度,每次工作处理 §a1§7 个合成任务。 -novaeng.efabricator_worker.info.2=每次合成能量消耗:§b100 AE -novaeng.efabricator_worker.info.3=启用§c超频§7时: +novaeng.efabricator_worker.info.2=每次合成能量消耗:§b100 AE +novaeng.efabricator_worker.info.3=启用§c超频§7时: novaeng.efabricator_worker.info.4= 队列深度 §ax2 §b(F4) novaeng.efabricator_worker.info.5= 队列深度 §ax4 §6(F6) novaeng.efabricator_worker.info.6= 队列深度 §ax8 §5(F9) novaeng.efabricator_worker.info.7= 能量消耗 §cx4 §b(F4) novaeng.efabricator_worker.info.8= 能量消耗 §cx8 §6(F6) novaeng.efabricator_worker.info.9= 能量消耗 §cx16 §5(F9) -novaeng.efabricator_worker.info.10=启用§9主动冷却§7时: +novaeng.efabricator_worker.info.10=启用§9主动冷却§7时: novaeng.efabricator_worker.info.11= §a消除§7超频的§c负面§7修正。 novaeng.efabricator_worker.info.12= 每次合成额外消耗 §c5§7 冷却单位。 novaeng.efabricator_worker.info.13= 每个工作核心为子系统降低 §b1§7 Tick(§b0.05s§7)的工作间隔,最低不低于 §b10§7 Tick(§b0.5s§7)。 @@ -119,89 +129,92 @@ novaeng.ecalculator_me_channel.info.1= §9通讯接口§7向 ME 网络提供§b novaeng.ecalculator_me_channel.info.2= 此子系统§a不消耗§7额外能源。 novaeng.ecalculator_me_channel.info.3=通过连接 ME 线缆至§9通讯接口§7以和子系统建立连接。 -novaeng.hypernet.connect.result.success=§a连接成功§b(状态:%s 已连接 / %s 最大连接数)。 -novaeng.hypernet.connect.result.no_permission=§c连接失败,HyperNet 网络授权密钥不匹配(原因:非网络所有者)。 -novaeng.hypernet.connect.result.unknown_center=§c连接失败(原因:未知的计算网络中心,区块可能被卸载或控制器不存在)。 -novaeng.hypernet.connect.result.center_not_working=§c连接失败(原因:计算网络中心处于离线状态)。 -novaeng.hypernet.connect.result.center_reached_connection_limit=§c连接失败(原因:已达到计算网络中心的最大连接数:%s)。 -novaeng.hypernet.connect.result.unsupported_node=§c连接失败(原因:未知的网络节点)。 -novaeng.hypernet.connect.result.node_type_reached_max_presences=§c连接失败(原因:已达到当前网络节点类型的连接上限:%s)。 +novaeng.hypernet.connect.result.success=§a连接成功§b(状态:%s 已连接 / %s 最大连接数)。 +novaeng.hypernet.connect.result.no_permission=§c连接失败,HyperNet 网络授权密钥不匹配(原因:非网络所有者)。 +novaeng.hypernet.connect.result.unknown_center=§c连接失败(原因:未知的计算网络中心,区块可能被卸载或控制器不存在)。 +novaeng.hypernet.connect.result.center_not_working=§c连接失败(原因:计算网络中心处于离线状态)。 +novaeng.hypernet.connect.result.center_reached_connection_limit=§c连接失败(原因:已达到计算网络中心的最大连接数:%s)。 +novaeng.hypernet.connect.result.unsupported_node=§c连接失败(原因:未知的网络节点)。 +novaeng.hypernet.connect.result.node_type_reached_max_presences=§c连接失败(原因:已达到当前网络节点类型的连接上限:%s)。 -novaeng.hypernet.connect_card.write_failed.no_permission=§cHyperNet 网络授权访问被拒绝(原因:非网络所有者)。 +novaeng.hypernet.connect_card.write_failed.no_permission=§cHyperNet 网络授权访问被拒绝(原因:非网络所有者)。 novaeng.hypernet.connect_card.write_success=§a写入成功。 novaeng.hypernet.connect_card.write_success.new_owner=§a写入成功,并且现在您是此网络中心的所有者。 upgrade.data_processor.module.cpu.tip.0=§9CPU 模块为数据处理计算机提供算力。 -upgrade.data_processor.module.cpu.tip.1=§9耐久低于 §e25%%§9 时,算力产出逐渐开始§c降低§9,最多 §c25%%。 -upgrade.data_processor.module.cpu.tip.2=§9工作时每秒有 §a10%% §9的概率降低 §e1 §9点耐久。 +#upgrade.data_processor.module.cpu.tip.1=§9耐久低于 §e25%%§9 时,算力产出逐渐开始§c降低§9,最多 §c25%%。 +#upgrade.data_processor.module.cpu.tip.2=§9工作时每秒有 §a10%% §9的概率降低 §e1 §9点耐久。 upgrade.data_processor.module.gpu.tip.0=§9GPU 模块为数据处理计算机提供§2大量§9算力。 -upgrade.data_processor.module.gpu.tip.1=§9耐久低于 §e50%%§9 时,算力产出逐渐开始§c降低§9,最多 §c50%%。 -upgrade.data_processor.module.gpu.tip.2=§9工作时每秒有 §a10%% §9的概率降低 §e1 §9点耐久。 +#upgrade.data_processor.module.gpu.tip.1=§9耐久低于 §e50%%§9 时,算力产出逐渐开始§c降低§9,最多 §c50%%。 +#upgrade.data_processor.module.gpu.tip.2=§9工作时每秒有 §a10%% §9的概率降低 §e1 §9点耐久。 -upgrade.data_processor.module.cpu.generate=§9算力: §b%s§9 (效率: %s) +upgrade.data_processor.module.cpu.generate=§9算力: §b%s§9 upgrade.data_processor.module.ram.tip.0=§9内存模块将决定数据处理计算机产出的算力§e上限§9。 -upgrade.data_processor.module.ram.tip.1=§9耐久低于 §e25%%§9 时,算力产出逐渐开始§c降低§9,最多 §c25%%。 -upgrade.data_processor.module.ram.tip.2=§9工作时每秒有 §a10%% §9的概率降低 §e1 §9点耐久。 +#upgrade.data_processor.module.ram.tip.1=§9耐久低于 §e25%%§9 时,算力产出逐渐开始§c降低§9,最多 §c25%%。 +#upgrade.data_processor.module.ram.tip.2=§9工作时每秒有 §a10%% §9的概率降低 §e1 §9点耐久。 -upgrade.data_processor.module.ram.limit_provision=§9上限提供: §e%s§9 (效率: %s) +upgrade.data_processor.module.ram.limit_provision=§9上限提供: §e%s§9 -upgrade.data_processor.module.energy.tip=§9最大功耗:§c%s -upgrade.data_processor.module.durability.tip=§9耐久:§e%s / %s§a(%s) -upgrade.data_processor.module.durability.unknown.tip=§9最大耐久(等待计算机初始化):§e%s ~ %s +upgrade.data_processor.module.energy.tip=§9最大功耗:§c%s +#upgrade.data_processor.module.durability.tip=§9耐久:§e%s / %s§a(%s) +#upgrade.data_processor.module.durability.unknown.tip=§9最大耐久(等待计算机初始化):§e%s ~ %s -top.hypernet.online=§9HyperNet 网络状态:§a已连接 -top.hypernet.offline=§9HyperNet 网络状态:§c断开连接 +top.hypernet.online=§9HyperNet 网络状态:§a已连接 +top.hypernet.offline=§9HyperNet 网络状态:§c断开连接 -top.hypernet.connected=§9网络当前在线设备数量: +top.hypernet.connected=§9网络当前在线设备数量: -top.hypernet.computation_point_consumption=§9算力消耗: -top.hypernet.computation_point_generation=§9算力产出: +top.hypernet.computation_point_consumption=§9算力消耗: +top.hypernet.computation_point_generation=§9算力产出: -top.hypernet.research_station.current=§9当前研究: -top.hypernet.research_station.current.empty=§9当前研究:§c无 +top.hypernet.research_station.current=§9当前研究: +top.hypernet.research_station.current.empty=§9当前研究:§c无 top.hypernet.research_station.progress=§9研究进度 -top.hypernet.database.stored.research=§9已存储研究认知数量: -top.hypernet.database.stored.research.max=§9最大研究认知存储数量: +top.hypernet.database.stored.research=§9已存储研究认知数量: +top.hypernet.database.stored.research.max=§9最大研究认知存储数量: -top.hypernet.computation_point.total=§9网络总算力消耗 / 产出: +top.hypernet.computation_point.total=§9网络总算力消耗 / 产出: -top.hypernet.processor.generation=§9当前算力 / 最大算力: -top.hypernet.processor.efficiency=§9工作效率: -top.hypernet.processor.load=§9平均负载: -top.hypernet.processor.circuit_durability=§9电路板耐久剩余: -top.hypernet.processor.heat=§9内部热量: +top.hypernet.processor.generation=§9当前算力 / 最大算力: +top.hypernet.processor.efficiency=§9工作效率: +top.hypernet.processor.load=§9平均负载: +top.hypernet.processor.circuit_durability=§9电路板耐久剩余: +top.hypernet.processor.heat=§9内部热量: -top.estorage.drive.status=§9驱动器状态: +top.estorage.drive.status=§9驱动器状态: top.estorage.drive.status.offline=§c离线 top.estorage.drive.status.online=§a在线 -top.estorage.drive.cell=§9驱动器矩阵: -top.estorage.drive.cell.unsupported=§c警告:驱动器不支持此矩阵等级,需要升级主机。 -top.estorage.drive.cell.bytes=§9字节使用: -top.estorage.drive.cell.types=§9类型使用: +top.estorage.drive.cell=§9驱动器矩阵: +top.estorage.drive.cell.unsupported=§c警告:驱动器不支持此矩阵等级,需要升级主机。 +top.estorage.drive.cell.bytes=§9字节使用: +top.estorage.drive.cell.types=§9类型使用: -top.efabricator.worker.status=§9工作核心状态: +top.efabricator.worker.status=§9工作核心状态: top.efabricator.worker.status.offline=§c离线 top.efabricator.worker.status.online=§a在线 -top.efabricator.worker.queue_status=§9队列状态: -top.efabricator.worker.current_crafting=§9正在合成: -top.efabricator.worker.enqueued_crafting=§9排队中: - -top.ecalculator.controller.storage=§9字节使用: -top.ecalculator.controller.threads=§9线程状态: -top.ecalculator.controller.parallelism=§9共享并行数: -top.ecalculator.controller.avg_parallelism=§9当前使用并行数: -top.ecalculator.controller.avg_time_usage=§b总性能使用: -top.ecalculator.thread_core.status=§9核心状态: +top.efabricator.worker.queue_status=§9队列状态: +top.efabricator.worker.current_crafting=§9正在合成: +top.efabricator.worker.enqueued_crafting=§9排队中: + +top.ecalculator.controller.storage=§9字节使用: +top.ecalculator.controller.threads=§9线程状态: +top.ecalculator.controller.parallelism=§9共享并行数: +top.ecalculator.controller.avg_parallelism=§9当前使用并行数: +top.ecalculator.controller.avg_time_usage=§b总性能使用: +top.ecalculator.thread_core.status=§9核心状态: top.ecalculator.thread_core.status.offline=§c离线 top.ecalculator.thread_core.status.online=§a在线 -top.ecalculator.thread_core.threads=§9线程状态: -top.ecalculator.thread_core.crafting=§9正在合成: -top.ecalculator.thread_core.avg_parallelism=§9平均并行数: -top.ecalculator.thread_core.avg_time_usage=§b平均性能使用: +top.ecalculator.thread_core.threads=§9线程状态: +top.ecalculator.thread_core.crafting=§9正在合成: +top.ecalculator.thread_core.avg_parallelism=§9平均并行数: +top.ecalculator.thread_core.avg_time_usage=§b平均性能使用: + +tile.novaeng_core.redstone_logical_port.name=红石逻辑端口 +tile.novaeng_core.dream_energy_port.name=梦之能量端口 tile.novaeng_core.hypernet_terminal_controller.name=HyperNet 网络终端 tile.novaeng_core.modular_server_assembler.name=模块服务器组装台(未实装) @@ -210,14 +223,14 @@ tile.novaeng_core.angel_block.tip.0=天使方块,但是更加智能! tile.novaeng_core.angel_block.tip.1=允许你在没有任何方块的情况下虚空放置方块。 tile.novaeng_core.angel_block.tip.2=手持此物品时可在世界预览即将放置的位置。 tile.novaeng_core.angel_block.tip.3=按住 Shift 时,则固定在脚下放置此方块。 -tile.novaeng_core.extendable_digital_storage_subsystem_l4.name=§9ECO - §bL4 §9可扩展存储子系统主机 -tile.novaeng_core.extendable_digital_storage_subsystem_l6.name=§9ECO - §6L6 §9可扩展存储子系统主机 -tile.novaeng_core.extendable_digital_storage_subsystem_l9.name=§9ECO - §5L9 §9可扩展存储子系统主机 -tile.novaeng_core.estorage_energy_cell_l4.name=§9ECO - §bLT4 §9高密度能量元件 -tile.novaeng_core.estorage_energy_cell_l6.name=§9ECO - §6LT6 §9高密度能量元件 -tile.novaeng_core.estorage_energy_cell_l9.name=§9ECO - §5LT9 §9高密度能量元件 -tile.novaeng_core.estorage_cell_drive.name=§9ECO - §bLD §9存储矩阵驱动器 -tile.novaeng_core.estorage_me_channel.name=§9ECO - §bLR §9ME 矩阵通讯接口 +tile.novaeng_core.extendable_digital_storage_subsystem_l4.name=§9ECO - §bS4 §9可扩展存储子系统主机 +tile.novaeng_core.extendable_digital_storage_subsystem_l6.name=§9ECO - §6S6 §9可扩展存储子系统主机 +tile.novaeng_core.extendable_digital_storage_subsystem_l9.name=§9ECO - §5S9 §9可扩展存储子系统主机 +tile.novaeng_core.estorage_energy_cell_l4.name=§9ECO - §bST4 §9高密度能量元件 +tile.novaeng_core.estorage_energy_cell_l6.name=§9ECO - §6ST6 §9高密度能量元件 +tile.novaeng_core.estorage_energy_cell_l9.name=§9ECO - §5ST9 §9高密度能量元件 +tile.novaeng_core.estorage_cell_drive.name=§9ECO - §bSD §9存储矩阵驱动器 +tile.novaeng_core.estorage_me_channel.name=§9ECO - §bSR §9ME 矩阵通讯接口 tile.novaeng_core.estorage_vent.name=§9存储系统结构散热器 tile.novaeng_core.estorage_casing.name=§9存储系统结构外壳 @@ -260,17 +273,17 @@ tile.novaeng_core.geocentric_drill_controller.name=§6地心钻探机控制器 craftcheck.failure.geocentric_drill_depth=无法钻探,最低钻探深度为 1000m! -novaeng.hypernet.computation_point_required.tip=§9算力:§b%s -novaeng.hypernet.computation_point_required.tip.parallelized=§9算力 (受并行影响):§b%s +novaeng.hypernet.computation_point_required.tip=§9算力:§b%s +novaeng.hypernet.computation_point_required.tip.parallelized=§9算力 (受并行影响):§b%s -novaeng.hypernet.calculable.tip.base_ratio=§b基础效率系数:§a%s -novaeng.hypernet.calculable.tip.energy_consume_ratio=§b设计最大能耗:§c%s RF/t +novaeng.hypernet.calculable.tip.base_ratio=§b基础效率系数:§a%s +novaeng.hypernet.calculable.tip.energy_consume_ratio=§b设计最大能耗:§c%s RF/t novaeng.hypernet.calculable.supported=此模块可提供计算功能。 -novaeng.hypernet.hardware_bandwidth.consume=§b硬件带宽占用:§e%s -novaeng.hypernet.hardware_bandwidth.provide=§b硬件带宽提供:§a%s +novaeng.hypernet.hardware_bandwidth.consume=§b硬件带宽占用:§e%s +novaeng.hypernet.hardware_bandwidth.provide=§b硬件带宽提供:§a%s -novaeng.hypernet.calculate.tip.efficiency=%s:%s(效率:%s%%) +novaeng.hypernet.calculate.tip.efficiency=%s:%s(效率:%s%%) novaeng.hypernet.calculate.type_name.intricate=§b复杂运算§f novaeng.hypernet.calculate.type_name.logic=§9密集运算§f @@ -282,13 +295,13 @@ novaeng.hypernet.calculate.type.logic=§a%s §9次密集运算/t§f novaeng.hypernet.calculate.type.neuron=§a%s §c神经网络规模§f novaeng.hypernet.calculate.type.qbit=§a%s §e量子位§f -novaeng.hypernet.research_required.tip=§6需要研究认知:§f%s +novaeng.hypernet.research_required.tip=§6需要研究认知:§f%s gui.hypernet.controller.title=§9///////// HyperNet 代理网络 ///////// -gui.hypernet.controller.computation_point_consumption=§9算力消耗:§b -gui.hypernet.controller.computation_point_consumption.total=§9总算力消耗 / 产出:§b%s / %s -gui.hypernet.controller.connected=§9网络状态:§a已连接 -gui.hypernet.controller.disconnected=§9网络状态:§c断开连接 +gui.hypernet.controller.computation_point_consumption=§9算力消耗:§b +gui.hypernet.controller.computation_point_consumption.total=§9总算力消耗 / 产出:§b%s / %s +gui.hypernet.controller.connected=§9网络状态:§a已连接 +gui.hypernet.controller.disconnected=§9网络状态:§c断开连接 gui.hypernet.controller.version=§7HyperNet Proxy Monitor v1.0 gui.hypernet.controller.footer=§9///////////////////////////////////////// @@ -312,10 +325,16 @@ novaeng.hypernet.database.working.tooltip.1=每存储 §a1 §f个研究认知, novaeng.hypernet.research_station.hypercol=HyperCol AI novaeng.hypernet.research_station.working.tooltip.0=仅在工作状态下消耗能量。 novaeng.hypernet.research_station.working.tooltip.1=工作状态下根据当前研究,消耗指定数量的算力。 +novaeng.hypernet.research_station.overclocking.name=§9自动超频极限值 +novaeng.hypernet.research_station.overclocking.tooltip.0=§9当前极限: +novaeng.hypernet.research_station.overclocking.tooltip.1=§9最大极限:§a5 novaeng.hypernet.repair.tooltip=完成时,修复 §a%s §f点耐久值。 novaeng.hypernet.radiator.tooltip=工作时,每秒可以吸收 §c%sHU§f 内部热量。 +novaeng.space_generator.tooltip0=§r需要先展开能源核心 +novaeng.space_generator.tooltip1=§r允许近乎无穷的并行数量 + novaeng.hypernet.tech_level.1=§a1§a. novaeng.hypernet.tech_level.2=§a2§a. novaeng.hypernet.tech_level.3=§a3§a. @@ -337,14 +356,14 @@ gui.toast.research.complete=HyperNet 研究已完成! gui.terminal_controller.title.nxc=nxc 的虚空终端 gui.terminal_controller.search=§7§o搜索研究... -gui.terminal_controller.status=§b状态: +gui.terminal_controller.status=§b状态: gui.terminal_controller.status.missing_structure=§c结构不完整 gui.terminal_controller.status.online=§a终端在线 gui.terminal_controller.status.offline=§c终端离线 -gui.terminal_controller.status.network.computation_point_consumption=§9总算力消耗: -gui.terminal_controller.status.network.computation_point_generation=§9总算力产出: +gui.terminal_controller.status.network.computation_point_consumption=§9总算力消耗: +gui.terminal_controller.status.network.computation_point_generation=§9总算力产出: gui.terminal_controller.status.network.computation_point.info=§b%s -gui.terminal_controller.status.network.total_connected=§9在线设备数量:§b +gui.terminal_controller.status.network.total_connected=§9在线设备数量:§b gui.terminal_controller.connect_card.empty=请插入密钥卡 gui.terminal_controller.connect_card.validate=§a密钥卡已识别 @@ -353,15 +372,15 @@ gui.terminal_controller.connect_card.invalidate=§c无效的密钥卡 gui.terminal_controller.data.unlocked=研究已解锁 gui.terminal_controller.data.locked=研究可用 gui.terminal_controller.data.unavailable=研究不可用 -gui.terminal_controller.data.progress=研究进度:%s +gui.terminal_controller.data.progress=研究进度:%s gui.terminal_controller.screen.none=点击左侧的研究认知卡以预览。 -gui.terminal_controller.screen.info.dependencies=前置研究: +gui.terminal_controller.screen.info.dependencies=前置研究: gui.terminal_controller.screen.info.dependencies.none=§2无 -gui.terminal_controller.screen.info.tech_level=科技等级: -gui.terminal_controller.screen.info.required_points=需要研究点:§9 -gui.terminal_controller.screen.info.min_computation_point_per_tick=最低算力要求:§b +gui.terminal_controller.screen.info.tech_level=科技等级: +gui.terminal_controller.screen.info.required_points=需要研究点:§9 +gui.terminal_controller.screen.info.min_computation_point_per_tick=最低算力要求:§b gui.terminal_controller.screen.info.unavailable.0=§c研究描述不可用。 gui.terminal_controller.screen.info.unavailable.1=§c解锁该研究所有的前置研究以继续。 @@ -371,13 +390,13 @@ gui.terminal_controller.screen.info.toggle=§a点击切换未解锁和解锁状 gui.terminal_controller.screen.info.start=§a左击向研究站发送当前研究任务。 gui.terminal_controller.screen.info.start.instant=§9中键点击向研究站强制发送当前研究任务,并立即完成研究(需要创造模式,网络中数据库已满时可能无法发送)。 gui.terminal_controller.screen.info.reset=§e右击取消研究站当前正在进行的任务。 -gui.terminal_controller.screen.info.start.time=§9预计耗时:%s 小时 %s 分钟 %s 秒(%s Ticks)。 -gui.terminal_controller.screen.info.start.warn.computation=§e警告:当前算力可能不足以完成研究。 +gui.terminal_controller.screen.info.start.time=§9预计耗时:%s 小时 %s 分钟 %s 秒(%s Ticks)。 +gui.terminal_controller.screen.info.start.warn.computation=§e警告:当前算力可能不足以完成研究。 gui.terminal_controller.screen.info.start.error=§c无法开始研究。 gui.terminal_controller.screen.info.start.error.tech_level=§c未找到研究站或研究站等级过低。 gui.terminal_controller.screen.info.start.error.computation=§c算力不足。 gui.terminal_controller.screen.info.start.error.database_space=§c未找到网络数据库或网络数据库空间已满。 -gui.terminal_controller.screen.info.start.error.dependencies=§c缺失前置研究:%s +gui.terminal_controller.screen.info.start.error.dependencies=§c缺失前置研究:%s gui.modular_server_assembler.assembly.cpu.name=CPU 槽位 §a#%s gui.modular_server_assembler.assembly.cpu_heat_radiator.name=CPU 散热器槽位 §a#%s @@ -397,44 +416,44 @@ gui.modular_server_assembler.assembly.psu.name=PSU 电源槽位 §a#%s gui.modular_server_assembler.assembly.capacitor.name=电容槽位 §a#%s gui.modular_server_assembler.assembly.invalid=§4插槽内物品无效,请移除。 -gui.modular_server_assembler.assembly.dependencies=以下插槽必须安装后才可解锁本插槽: +gui.modular_server_assembler.assembly.dependencies=以下插槽必须安装后才可解锁本插槽: gui.modular_server_assembler.assembly.dependencies.installed=§a(已安装)§f gui.modular_server_assembler.assembly.dependencies.uninstalled=§c(缺失)§f -gui.modular_server_assembler.assembly.dependents=此插槽安装后解锁以下插槽: +gui.modular_server_assembler.assembly.dependents=此插槽安装后解锁以下插槽: -gui.modular_server_assembler.assembly.soft_dependencies=此插槽安装后还需要以下插槽安装后才可完全工作: -gui.modular_server_assembler.assembly.soft_dependents=此插槽安装后以下插槽才可完全工作: +gui.modular_server_assembler.assembly.soft_dependencies=此插槽安装后还需要以下插槽安装后才可完全工作: +gui.modular_server_assembler.assembly.soft_dependents=此插槽安装后以下插槽才可完全工作: gui.modular_server_assembler.assembly.inv.change.main=点击切换至组件插槽窗口。 gui.modular_server_assembler.assembly.inv.change.heat=点击切换至散热器插槽窗口。 gui.modular_server_assembler.info.missing_server=在组装台中放入服务器以显示服务器状态。 -gui.modular_server_assembler.info.total_modules=§2已安装的所有模块数量:§a%s -gui.modular_server_assembler.info.total_cpus=§2已安装的 CPU 数量:§a%s -gui.modular_server_assembler.info.total_rams=§2已安装的 RAM 数量:§a%s -gui.modular_server_assembler.info.total_calculate_cards=§2已安装的计算卡数量:§a%s -gui.modular_server_assembler.info.total_extensions=§2已安装的扩展卡数量:§a%s -gui.modular_server_assembler.info.total_psus=§2已安装的 PSU 电源数量:§a%s -gui.modular_server_assembler.info.total_capacitors=§2已安装的电容器数量:§a%s - -gui.modular_server_assembler.info.max_energy_cap=§6最大储能:§c%sRF -gui.modular_server_assembler.info.max_energy_consumption=§6最大能量消耗(Tick):§c%sRF -gui.modular_server_assembler.info.max_energy_provision=§6最大能量输入(Tick):§c%sRF -gui.modular_server_assembler.info.total_hardware_bandwidth=§9硬件带宽(总计):§a%s -gui.modular_server_assembler.info.used_hardware_bandwidth=§9硬件带宽(已使用):§e%s§f(§6%s§f) - -gui.modular_server_assembler.calculate.expected=§b预期计算能力: -gui.modular_server_assembler.calculate.name=%s: -gui.modular_server_assembler.calculate.value=%s(效率:%s%%) - -gui.modular_server_assembler.info.can_start=§b是否可启动:%s +gui.modular_server_assembler.info.total_modules=§2已安装的所有模块数量:§a%s +gui.modular_server_assembler.info.total_cpus=§2已安装的 CPU 数量:§a%s +gui.modular_server_assembler.info.total_rams=§2已安装的 RAM 数量:§a%s +gui.modular_server_assembler.info.total_calculate_cards=§2已安装的计算卡数量:§a%s +gui.modular_server_assembler.info.total_extensions=§2已安装的扩展卡数量:§a%s +gui.modular_server_assembler.info.total_psus=§2已安装的 PSU 电源数量:§a%s +gui.modular_server_assembler.info.total_capacitors=§2已安装的电容器数量:§a%s + +gui.modular_server_assembler.info.max_energy_cap=§6最大储能:§c%sRF +gui.modular_server_assembler.info.max_energy_consumption=§6最大能量消耗(Tick):§c%sRF +gui.modular_server_assembler.info.max_energy_provision=§6最大能量输入(Tick):§c%sRF +gui.modular_server_assembler.info.total_hardware_bandwidth=§9硬件带宽(总计):§a%s +gui.modular_server_assembler.info.used_hardware_bandwidth=§9硬件带宽(已使用):§e%s§f(§6%s§f) + +gui.modular_server_assembler.calculate.expected=§b预期计算能力: +gui.modular_server_assembler.calculate.name=%s: +gui.modular_server_assembler.calculate.value=%s(效率:%s%%) + +gui.modular_server_assembler.info.can_start=§b是否可启动:%s gui.modular_server_assembler.info.can_start.true=§a可用 gui.modular_server_assembler.info.can_start.false=§c不可用 -gui.modular_server_assembler.error=§e以下原因阻止了计算机启动: +gui.modular_server_assembler.error=§e以下原因阻止了计算机启动: gui.modular_server_assembler.error.dependencies.0=§c有插槽缺失前置。 -gui.modular_server_assembler.error.dependencies.1=§c以下插槽被其他插槽所依赖,必须安装相应的模块后才可继续: +gui.modular_server_assembler.error.dependencies.1=§c以下插槽被其他插槽所依赖,必须安装相应的模块后才可继续: gui.modular_server_assembler.error.require_cpu=§c至少需要安装一个 CPU 模块。 gui.modular_server_assembler.error.require_ram=§c至少需要安装一个 RAM 模块。 @@ -443,41 +462,44 @@ gui.modular_server_assembler.error.require_capacitor=§c至少需要安装一个 gui.modular_server_assembler.error.hardware_bandwidth=§c使用的硬件带宽过高(最高 150%%)。 gui.modular_server_assembler.error.invalid_slot.0=§c有槽位安装了错误的模块。 -gui.modular_server_assembler.error.invalid_slot.1=§c以下槽位中的模块是有问题的: +gui.modular_server_assembler.error.invalid_slot.1=§c以下槽位中的模块是有问题的: gui.estorage_controller.cell_info.tip.0=%s(%s) -gui.estorage_controller.cell_info.tip.1=类型使用:%s / %s -gui.estorage_controller.cell_info.tip.2=字节使用:%s / %s +gui.estorage_controller.cell_info.tip.1=类型使用:%s / %s +gui.estorage_controller.cell_info.tip.2=字节使用:%s / %s gui.estorage_controller.cell_info.item=物品存储矩阵 gui.estorage_controller.cell_info.fluid=流体存储矩阵 +gui.estorage_controller.cell_info.gas=气体存储矩阵 gui.estorage_controller.cell_info.empty=未知 -gui.estorage_controller.graph.fluid.percent=流体存储占用:%s%% -gui.estorage_controller.graph.item.percent=物品存储占用:%s%% -gui.estorage_controller.graph.total.percent=总存储占用:%s%% -gui.estorage_controller.graph.fluid_type=流体类型:%s / %s -gui.estorage_controller.graph.item_type=物品类型:%s / %s -gui.estorage_controller.graph.energy_usage=总耗能:%sAE/t -gui.estorage_controller.graph.energy_stored.percent=能量存储:%s%% -gui.estorage_controller.graph.energy_stored=能量存储:%sAE / %sAE +gui.estorage_controller.graph.fluid.percent=流体存储占用:%s%% +gui.estorage_controller.graph.item.percent=物品存储占用:%s%% +gui.estorage_controller.graph.gas.percent=气体存储占用:%s%% +gui.estorage_controller.graph.total.percent=总存储占用:%s%% +gui.estorage_controller.graph.gas_type=气体类型:%s / %s +gui.estorage_controller.graph.fluid_type=流体类型:%s / %s +gui.estorage_controller.graph.item_type=物品类型:%s / %s +gui.estorage_controller.graph.energy_usage=总耗能:%sAE/t +gui.estorage_controller.graph.energy_stored.percent=能量存储:%s%% +gui.estorage_controller.graph.energy_stored=能量存储:%sAE / %sAE gui.efabricator_pattern_bus.title=§9ECO - §eFD 智能样板总线 gui.efabricator_pattern_bus.inventory=物品栏 -gui.efabricator.total_crafted=统计 - 已完成配方数:%s -gui.efabricator.total_crafted.update=统计 - 已完成配方数:%s,合成速度:§a+%s/Tick§f +gui.efabricator.total_crafted=统计 - 已完成配方数:%s +gui.efabricator.total_crafted.update=统计 - 已完成配方数:%s,合成速度:§a+%s/Tick§f gui.efabricator.button.upload_pattern=上传样板至当前网络中可用的§9可扩展合成子系统§7中。 -gui.efabricator.queue.status=队列:%s / %s -gui.efabricator.max_energy_usage=最大能耗:§b%s AE +gui.efabricator.queue.status=队列:%s / %s +gui.efabricator.max_energy_usage=最大能耗:§b%s AE gui.efabricator.max_energy_usage.tip=显示值为所有工作核心满负载时工作一次的能耗。 gui.efabricator.overclocked.enable.tip=单击启用§e超频 I§f 模式,在有限范围内提升性能,消耗更多§c能量§f。 gui.efabricator.overclocked.disable.tip=单击禁用§e超频 I§f 模式。 -gui.efabricator.active_cooling=主动冷却:%s +gui.efabricator.active_cooling=主动冷却:%s gui.efabricator.active_cooling.enable.tip.0=单击启用 §9ECO - FZ 主动冷却子系统§f,消耗流体输入仓内的§9冷却液,§f提升§a性能§f并降低§a能耗§f。 -gui.efabricator.active_cooling.enable.tip.1=支持的§9冷却液§f: -gui.efabricator.active_cooling.enable.tip.1.coolant= 输入:%s §a%smB§f,输出:%s §a%smB§f,冷却单位:§b%s§f -gui.efabricator.active_cooling.enable.tip.1.coolant.no_output= 输入:%s §a%smB§f,输出:§c无§f,冷却单位:§b%s§f +gui.efabricator.active_cooling.enable.tip.1=支持的§9冷却液§f: +gui.efabricator.active_cooling.enable.tip.1.coolant= 输入:%s §a%smB§f,输出:%s §a%smB§f,冷却单位:§b%s§f +gui.efabricator.active_cooling.enable.tip.1.coolant.no_output= 输入:%s §a%smB§f,输出:§c无§f,冷却单位:§b%s§f gui.efabricator.active_cooling.enable.tip.2=启用主动冷却会使子系统进入§6超频 II§f 模式。 gui.efabricator.active_cooling.enable.tip.3=如果§e超频 I§f 模式已启用,启用§9主动冷却§f会使子系统进入§c超频 III§f 模式。 gui.efabricator.active_cooling.enable.tip.4= §c超频 III§f 模式将§2极大幅度§f提升整机性能,并降低§a能量§f消耗,消耗更多§9冷却液§f。 @@ -486,17 +508,17 @@ gui.efabricator.active_cooling.enable.tip.6=§f如果流体输出仓为满,则 gui.efabricator.active_cooling.disable.tip=单击禁用 §9ECO - FZ 主动冷却子系统§f。 gui.efabricator.active_cooling.on=§a启用 gui.efabricator.active_cooling.off=§c禁用 -gui.efabricator.pattern_bus.count=样板总线:%s -gui.efabricator.parallel_proc.count=并行核心:%s -gui.efabricator.worker.count=工作核心:%s -gui.efabricator.crafting_progress.0=总队列占用:%s%% +gui.efabricator.pattern_bus.count=样板总线:%s +gui.efabricator.parallel_proc.count=并行核心:%s +gui.efabricator.worker.count=工作核心:%s +gui.efabricator.crafting_progress.0=总队列占用:%s%% gui.efabricator.crafting_progress.1=%s / %s -gui.efabricator.crafting_time.0=预计耗时:%s -gui.efabricator.total_parallelism=总并行数:%s -gui.efabricator.total_parallelism.limit=限制为:%s -gui.efabricator.total_parallelism.overflow=溢出:%s (%s%%) -gui.efabricator.total_parallelism.overflow_speedup=加速:%s Tick (%s%%) -gui.efabricator.total_parallelism.overflow_speedup.coolants.0=冷却液消耗: +gui.efabricator.crafting_time.0=预计耗时:%s +gui.efabricator.total_parallelism=总并行数:%s +gui.efabricator.total_parallelism.limit=限制为:%s +gui.efabricator.total_parallelism.overflow=溢出:%s (%s%%) +gui.efabricator.total_parallelism.overflow_speedup=加速:%s Tick (%s%%) +gui.efabricator.total_parallelism.overflow_speedup.coolants.0=冷却液消耗: gui.efabricator.total_parallelism.overflow_speedup.coolants.1=%s mB/t gui.efabricator.switch.pattern_search=单击切换到§9样板管理器§f。 gui.efabricator.switch.default=单击切换到§9合成监控器§f。 @@ -511,11 +533,22 @@ gui.geocentric_drill.dive.ctrl_down=单击使钻探机下潜 §a1000m§f,最 gui.geocentric_drill.ascend=单击使钻探机上浮 §a100m§f,最小值 §e1000m§f。 gui.geocentric_drill.ascend.ctrl_down=单击使钻探机上浮 §a1000m§f,最小值 §e1000m§f。 -gui.geocentric_drill.monitor.depth=§b当前深度 / 目标深度:§a%sm§b / §e%sm -gui.geocentric_drill.monitor.output_multiplier=§b产出倍率:§a%sx§b +gui.geocentric_drill.monitor.depth=§b当前深度 / 目标深度:§a%sm§b / §e%sm +gui.geocentric_drill.monitor.output_multiplier=§b产出倍率:§a%sx§b gui.geocentric_drill.ore_control.tooltip.mark=单击标记此矿物,§a提高§f此矿物的输出权重,§c降低§f其他矿物的输出权重。 gui.geocentric_drill.ore_control.tooltip.unmark=单击取消标记此矿物。 -gui.geocentric_drill.ore_control.tooltip.chance=输出权重:§a%s%%§f +gui.geocentric_drill.ore_control.tooltip.chance=输出权重:§a%s%%§f + +gui.novaeng_core.replicator=可复制列表 +gui.novaeng_core.replicator.tooltips1=需要%sB UU物质复制 + +text.dream_energy_port.0=替换梦之能量核心的智能数据接口以启用通量模式 +text.dream_energy_port.1=通量模式下,梦之能量核心将直接作为通量网络缓存 + +enchantment.magic_breaking=破魔 +enchantment.novaeng_core.magic_breaking.desc=对于剩余血量大于10的生物,你的每一次伤害都将是真实的(无视免伤和护甲),但你无法一次击杀它们 +modifier.magic_breaking.name=破魔 +modifier.magic_breaking.desc=§6§o众御皆虚§9\n对于剩余血量大于10的生物,你的每一次伤害都将是真实的(无视免伤和护甲),但你无法一次击杀它们 -itemGroup.novaeng_core=新星工程:核心 +itemGroup.novaeng_core=新星工程:核心 \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/lang/zh_CN.lang b/src/main/resources/assets/novaeng_core/lang/zh_CN.lang index fe9d05fe..7958cff1 100644 --- a/src/main/resources/assets/novaeng_core/lang/zh_CN.lang +++ b/src/main/resources/assets/novaeng_core/lang/zh_CN.lang @@ -1,72 +1,82 @@ item.hypernet_connect_card.tooltip.1=§9这张存储卡可以储存一个 HyperNet 网络的频段和坐标信息,存储的密钥经过重重加密。 item.hypernet_connect_card.tooltip.2=§9右击支持 HyperNet 的机械控制器,即可自动解析存储卡并连接至 HyperNet 计算网络。 item.hypernet_connect_card.tooltip.3=§a存储卡可以重复使用。 -item.hypernet_connect_card.tooltip.4=§c警告:使用时请保持 HyperNet 计算网络中心在线。HyperNet 通讯距离无限,但是无法跨越维度。 -item.hypernet_connect_card.tooltip.no_pos.tip.0=§b存储卡中保存的坐标:§e空 +item.hypernet_connect_card.tooltip.4=§c警告:使用时请保持 HyperNet 计算网络中心在线。HyperNet 通讯距离无限,但是无法跨越维度。 +item.hypernet_connect_card.tooltip.no_pos.tip.0=§b存储卡中保存的坐标:§e空 item.hypernet_connect_card.tooltip.no_pos.tip.1=§2右击任意等级的计算网络中心控制器来写入数据。 -item.hypernet_connect_card.tooltip.pos.tip.0=§b存储卡中保存的坐标:§a(X: %s, Y: %s, Z: %s) +item.hypernet_connect_card.tooltip.pos.tip.0=§b存储卡中保存的坐标:§a(X: %s, Y: %s, Z: %s) item.hypernet_connect_card.tooltip.pos.tip.1=§2右击任意等级的计算网络中心控制器来覆写数据。 -item.novaeng_core.estorage_cell_item_16m.name=§9ECO - §bLE4 §9存储矩阵§a(物品) -item.novaeng_core.estorage_cell_item_64m.name=§9ECO - §6LE6 §9存储矩阵§a(物品) -item.novaeng_core.estorage_cell_item_256m.name=§9ECO - §5LE9 §9存储矩阵§a(物品) +item.novaeng_core.estorage_cell_item_16m.name=§9ECO - §bSE4 §9存储矩阵§a(物品) +item.novaeng_core.estorage_cell_item_64m.name=§9ECO - §6SE6 §9存储矩阵§a(物品) +item.novaeng_core.estorage_cell_item_256m.name=§9ECO - §5SE9 §9存储矩阵§a(物品) -item.novaeng_core.estorage_cell_fluid_16m.name=§9ECO - §bLE4 §9存储矩阵§b(流体) -item.novaeng_core.estorage_cell_fluid_64m.name=§9ECO - §6LE6 §9存储矩阵§b(流体) -item.novaeng_core.estorage_cell_fluid_256m.name=§9ECO - §5LE9 §9存储矩阵§b(流体) +item.novaeng_core.estorage_cell_fluid_16m.name=§9ECO - §bSE4 §9存储矩阵§b(流体) +item.novaeng_core.estorage_cell_fluid_64m.name=§9ECO - §6SE6 §9存储矩阵§b(流体) +item.novaeng_core.estorage_cell_fluid_256m.name=§9ECO - §5SE9 §9存储矩阵§b(流体) + +item.novaeng_core.estorage_cell_gas_16m.name=§9ECO - §bSE4 §9存储矩阵§b(气体) +item.novaeng_core.estorage_cell_gas_64m.name=§9ECO - §6SE6 §9存储矩阵§b(气体) +item.novaeng_core.estorage_cell_gas_256m.name=§9ECO - §5SE9 §9存储矩阵§b(气体) item.novaeng_core.ecalculator_cell_64m.name=§9ECO - §bCE4 §b闪存晶阵 item.novaeng_core.ecalculator_cell_1024m.name=§9ECO - §6CE6 §b闪存晶阵 item.novaeng_core.ecalculator_cell_16384m.name=§9ECO - §5CE9 §b闪存晶阵 +item.novaeng_core.magic_breaking_stone.name=破魔之石 + +item.novaeng_core.horologium_compass.name=星晷罗盘 +item.novaeng_core.horologium_compass.tooltip.0=§9追寻时间之痕迹 +tile.horologium_compass.success=§6罗盘指示你:§9时间的屏障将在%s天后变得薄弱. + novaeng.ecalculator_cell.insert.tip=蹲下时手持矩阵并右击驱动器以插入晶阵。 novaeng.ecalculator_cell.extract.tip=蹲下时空手并右击驱动器以取出晶阵。 novaeng.ecalculator_cell.tip.0=§b闪存晶阵§7为§9计算子系统§7提供§a内存存储§7。 novaeng.ecalculator_cell.tip.1=§b闪存晶阵§7是存储矩阵的高速存取特化版本。 novaeng.ecalculator_cell.tip.2=相比§9存储矩阵§7,其内部规模要§a更加宏大§7,但作为代价,其存储容量也远§c不如§9存储矩阵§7。 -novaeng.ecalculator_cell.tip.3=§b字节数提供:§a%sB +novaeng.ecalculator_cell.tip.3=§b字节数提供:§a%sB novaeng.ecalculator_cell.l6.tip=§c只有 §6C6§c 等级及以上的主机可以驱动此晶阵。 novaeng.ecalculator_cell.l9.tip=§c只有 §6C9§c 等级的主机可以驱动此晶阵。 novaeng.estorage_cell.insert.tip=蹲下时§a手持矩阵并右击§7驱动器以插入矩阵。 novaeng.estorage_cell.extract.tip=蹲下时§a空手并右击§7驱动器以取出矩阵。 -novaeng.estorage_cell.l6.tip=§c只有 §6L6§c 等级及以上的主机可以驱动此矩阵。 -novaeng.estorage_cell.l9.tip=§c只有 §6L9§c 等级的主机可以驱动此矩阵。 +novaeng.estorage_cell.l6.tip=§c只有 §6S6§c 等级及以上的主机可以驱动此矩阵。 +novaeng.estorage_cell.l9.tip=§c只有 §6S9§c 等级的主机可以驱动此矩阵。 novaeng.estorage_cell_drive.player.inserted=§a已插入存储矩阵。 novaeng.estorage_cell_drive.player.removed=§a已取出存储矩阵。 -novaeng.estorage_cell_drive.player.no_permission=§c访问被拒绝(原因:无 ME 网络权限)。 +novaeng.estorage_cell_drive.player.no_permission=§c访问被拒绝(原因:无 ME 网络权限)。 novaeng.ecalculator_thread_core.info.0=§b线程核心§7是计算子系统的主要部分,为主机提供§5线程数§7。 novaeng.ecalculator_thread_core.info.1=§b线程核心§7提供的§9线程§7为子系统提供最大§b虚拟合成处理器(vCPU)§7数量。 novaeng.ecalculator_thread_core.info.2=拆除时会直接§a保存压缩后的 CPU 数据至掉落物§7。 -novaeng.ecalculator_thread_core.modifiers=§b线程数§7修正: -novaeng.ecalculator_thread_core.modifier.add= 最大线程数:§a+%s +novaeng.ecalculator_thread_core.modifiers=§b线程数§7修正: +novaeng.ecalculator_thread_core.modifier.add= 最大线程数:§a+%s novaeng.ecalculator_thread_core_hyper.info.0=§9超线程核心§7相比§b线程核心§7,能为主机提供§a更多§7的§5线程数§7。 novaeng.ecalculator_thread_core_hyper.info.1=作为代价,每个§a合成任务§7需要的字节数会§c更多§7(§c+10%%§7)。 novaeng.ecalculator_thread_core_hyper.info.2=主机会优先使用§b普通线程§7而不是§9超线程§7。 -novaeng.ecalculator_thread_core_hyper.modifier.add= 最大超线程数:§a+%s +novaeng.ecalculator_thread_core_hyper.modifier.add= 最大超线程数:§a+%s novaeng.ecalculator_parallel_proc.info.0=§5并行核心§7为计算子系统提供§5并行数§7。 novaeng.ecalculator_parallel_proc.info.1=§5并行数§7可提高§a所有§b线程核心§7每次处理合成任务的§a处理数量§7。 -novaeng.ecalculator_parallel_proc.modifiers=§5并行数§7修正: -novaeng.ecalculator_parallel_proc.modifier.add= 最大并行数:§a+%s +novaeng.ecalculator_parallel_proc.modifiers=§5并行数§7修正: +novaeng.ecalculator_parallel_proc.modifier.add= 最大并行数:§a+%s novaeng.ecalculator_cell_drive.info.0=§b晶阵驱动器§7为计算子系统提供§b闪存晶阵§7的存储空间。 novaeng.ecalculator_cell_drive.info.1=§b晶阵驱动器§7能够驱动的晶阵等级取决于主机的§5等级§7。 novaeng.ecalculator_cell_drive.player.inserted=§a已插入闪存晶阵。 novaeng.ecalculator_cell_drive.player.removed=§a已取出闪存晶阵。 -novaeng.ecalculator_cell_drive.player.no_permission=§c访问被拒绝(原因:无 ME 网络权限)。 +novaeng.ecalculator_cell_drive.player.no_permission=§c访问被拒绝(原因:无 ME 网络权限)。 novaeng.extendable_storage_subsystem.info.0=整个§9存储子系统§7的§a核心§7。 -novaeng.extendable_storage_subsystem.info.1=最大长度:§a12 +novaeng.extendable_storage_subsystem.info.1=最大长度:§a12 novaeng.extendable_fabricator_subsystem.info.0=整个§e合成子系统§7的§a核心§7。 -novaeng.extendable_fabricator_subsystem.info.1=最大长度:§a12 +novaeng.extendable_fabricator_subsystem.info.1=最大长度:§a12 novaeng.extendable_calculate_subsystem.info.0=整个§b计算子系统§7的§a核心§7。 -novaeng.extendable_calculate_subsystem.info.1=最大长度:§a12 +novaeng.extendable_calculate_subsystem.info.1=最大长度:§a12 novaeng.extendable_calculate_subsystem.info.2=计算子系统引入了§b虚拟合成处理器§7的设定(简称 §bvCPU§7),通过 ME 通讯接口来访问。 -novaeng.extendable_calculate_subsystem.info.3=§b虚拟合成处理器(vCPU)§7: +novaeng.extendable_calculate_subsystem.info.3=§b虚拟合成处理器(vCPU)§7: novaeng.extendable_calculate_subsystem.info.4= 主机每次只向 ME 网络提供一个 §bvCPU§7,其容量为子系统当前所有可用的字节数。 novaeng.extendable_calculate_subsystem.info.5= 每当用户发配合成任务给 §bvCPU§7 时,主机会自动调节 §bvCPU§7 的字节数至任务所需的字节数,然后将其分配给§b线程核心§7。 novaeng.extendable_calculate_subsystem.info.6= 分配完成后,如果系统当前可用字节数大于 §e10%%§7,则会自动分配新的 §bvCPU§7,否则§c停止分配§7,直到可用字节数大于 §e10%%§7。 @@ -75,13 +85,13 @@ novaeng.extendable_calculate_subsystem.info.8= §bvCPU§7 会在合成任务完 novaeng.efabricator_parallel_proc.info.0=§5并行核心§7为合成子系统提供§5并行数§7。 novaeng.efabricator_parallel_proc.info.1=§5并行数§7可提高§b工作核心§7每次处理合成任务的§a处理数量§7(最大不超过队列深度)。 -novaeng.efabricator_parallel_proc.modifiers=§5并行数§7修正: -novaeng.efabricator_parallel_proc.overclock_modifiers=启用§c超频§7时: -novaeng.efabricator_parallel_proc.modifier.add=最大并行数:§a+%s -novaeng.efabricator_parallel_proc.modifier.sub=最大并行数修正:§c-%s -novaeng.efabricator_parallel_proc.modifier.mul=最大并行数修正:§a+%s%% -novaeng.efabricator_parallel_proc.modifier.mul.debuff=最大并行数修正:§c-%s%% -novaeng.efabricator_parallel_proc.info.2=启用§9主动冷却§7时: +novaeng.efabricator_parallel_proc.modifiers=§5并行数§7修正: +novaeng.efabricator_parallel_proc.overclock_modifiers=启用§c超频§7时: +novaeng.efabricator_parallel_proc.modifier.add=最大并行数:§a+%s +novaeng.efabricator_parallel_proc.modifier.sub=最大并行数修正:§c-%s +novaeng.efabricator_parallel_proc.modifier.mul=最大并行数修正:§a+%s%% +novaeng.efabricator_parallel_proc.modifier.mul.debuff=最大并行数修正:§c-%s%% +novaeng.efabricator_parallel_proc.info.2=启用§9主动冷却§7时: novaeng.efabricator_parallel_proc.info.3= §a消除§7超频的§c负面§7修正。 novaeng.efabricator_parallel_proc.info.4= 工作后溢出的并行数转换为工作间隔§a减成§7并消耗§9冷却液§7,最低不低于 §b1§7 Tick(§b0.05s§7)。 novaeng.efabricator_parallel_proc.info.5= 每溢出 §e5%%§7 最大并行数,为子系统降低 §b1§7 Tick(§b0.05s§7)的工作间隔。 @@ -89,15 +99,15 @@ novaeng.efabricator_parallel_proc.info.6= 每降低 §b1§7 Tick(§b0.05s§ novaeng.efabricator_worker.info.0=§b工作核心§7是合成子系统的§e主要部分§7。 novaeng.efabricator_worker.info.1=每个核心带有 §a32§7 队列深度,每次工作处理 §a1§7 个合成任务。 -novaeng.efabricator_worker.info.2=每次合成能量消耗:§b100 AE -novaeng.efabricator_worker.info.3=启用§c超频§7时: +novaeng.efabricator_worker.info.2=每次合成能量消耗:§b100 AE +novaeng.efabricator_worker.info.3=启用§c超频§7时: novaeng.efabricator_worker.info.4= 队列深度 §ax2 §b(F4) novaeng.efabricator_worker.info.5= 队列深度 §ax4 §6(F6) novaeng.efabricator_worker.info.6= 队列深度 §ax8 §5(F9) novaeng.efabricator_worker.info.7= 能量消耗 §cx4 §b(F4) novaeng.efabricator_worker.info.8= 能量消耗 §cx8 §6(F6) novaeng.efabricator_worker.info.9= 能量消耗 §cx16 §5(F9) -novaeng.efabricator_worker.info.10=启用§9主动冷却§7时: +novaeng.efabricator_worker.info.10=启用§9主动冷却§7时: novaeng.efabricator_worker.info.11= §a消除§7超频的§c负面§7修正。 novaeng.efabricator_worker.info.12= 每次合成额外消耗 §c5§7 冷却单位。 novaeng.efabricator_worker.info.13= 每个工作核心为子系统降低 §b1§7 Tick(§b0.05s§7)的工作间隔,最低不低于 §b10§7 Tick(§b0.5s§7)。 @@ -119,85 +129,92 @@ novaeng.ecalculator_me_channel.info.1= §9通讯接口§7向 ME 网络提供§b novaeng.ecalculator_me_channel.info.2= 此子系统§a不消耗§7额外能源。 novaeng.ecalculator_me_channel.info.3=通过连接 ME 线缆至§9通讯接口§7以和子系统建立连接。 -novaeng.hypernet.connect.result.success=§a连接成功§b(状态:%s 已连接 / %s 最大连接数)。 -novaeng.hypernet.connect.result.no_permission=§c连接失败,HyperNet 网络授权密钥不匹配(原因:非网络所有者)。 -novaeng.hypernet.connect.result.unknown_center=§c连接失败(原因:未知的计算网络中心,区块可能被卸载或控制器不存在)。 -novaeng.hypernet.connect.result.center_not_working=§c连接失败(原因:计算网络中心处于离线状态)。 -novaeng.hypernet.connect.result.center_reached_connection_limit=§c连接失败(原因:已达到计算网络中心的最大连接数:%s)。 -novaeng.hypernet.connect.result.unsupported_node=§c连接失败(原因:未知的网络节点)。 -novaeng.hypernet.connect.result.node_type_reached_max_presences=§c连接失败(原因:已达到当前网络节点类型的连接上限:%s)。 +novaeng.hypernet.connect.result.success=§a连接成功§b(状态:%s 已连接 / %s 最大连接数)。 +novaeng.hypernet.connect.result.no_permission=§c连接失败,HyperNet 网络授权密钥不匹配(原因:非网络所有者)。 +novaeng.hypernet.connect.result.unknown_center=§c连接失败(原因:未知的计算网络中心,区块可能被卸载或控制器不存在)。 +novaeng.hypernet.connect.result.center_not_working=§c连接失败(原因:计算网络中心处于离线状态)。 +novaeng.hypernet.connect.result.center_reached_connection_limit=§c连接失败(原因:已达到计算网络中心的最大连接数:%s)。 +novaeng.hypernet.connect.result.unsupported_node=§c连接失败(原因:未知的网络节点)。 +novaeng.hypernet.connect.result.node_type_reached_max_presences=§c连接失败(原因:已达到当前网络节点类型的连接上限:%s)。 -novaeng.hypernet.connect_card.write_failed.no_permission=§cHyperNet 网络授权访问被拒绝(原因:非网络所有者)。 +novaeng.hypernet.connect_card.write_failed.no_permission=§cHyperNet 网络授权访问被拒绝(原因:非网络所有者)。 novaeng.hypernet.connect_card.write_success=§a写入成功。 novaeng.hypernet.connect_card.write_success.new_owner=§a写入成功,并且现在您是此网络中心的所有者。 upgrade.data_processor.module.cpu.tip.0=§9CPU 模块为数据处理计算机提供算力。 -upgrade.data_processor.module.cpu.tip.1=§9耐久低于 §e25%%§9 时,算力产出逐渐开始§c降低§9,最多 §c25%%。 -upgrade.data_processor.module.cpu.tip.2=§9工作时每秒有 §a10%% §9的概率降低 §e1 §9点耐久。 +#upgrade.data_processor.module.cpu.tip.1=§9耐久低于 §e25%%§9 时,算力产出逐渐开始§c降低§9,最多 §c25%%。 +#upgrade.data_processor.module.cpu.tip.2=§9工作时每秒有 §a10%% §9的概率降低 §e1 §9点耐久。 upgrade.data_processor.module.gpu.tip.0=§9GPU 模块为数据处理计算机提供§2大量§9算力。 -upgrade.data_processor.module.gpu.tip.1=§9耐久低于 §e50%%§9 时,算力产出逐渐开始§c降低§9,最多 §c50%%。 -upgrade.data_processor.module.gpu.tip.2=§9工作时每秒有 §a10%% §9的概率降低 §e1 §9点耐久。 +#upgrade.data_processor.module.gpu.tip.1=§9耐久低于 §e50%%§9 时,算力产出逐渐开始§c降低§9,最多 §c50%%。 +#upgrade.data_processor.module.gpu.tip.2=§9工作时每秒有 §a10%% §9的概率降低 §e1 §9点耐久。 -upgrade.data_processor.module.cpu.generate=§9算力: §b%s§9 (效率: %s) +upgrade.data_processor.module.cpu.generate=§9算力: §b%s§9 upgrade.data_processor.module.ram.tip.0=§9内存模块将决定数据处理计算机产出的算力§e上限§9。 -upgrade.data_processor.module.ram.tip.1=§9耐久低于 §e25%%§9 时,算力产出逐渐开始§c降低§9,最多 §c25%%。 -upgrade.data_processor.module.ram.tip.2=§9工作时每秒有 §a10%% §9的概率降低 §e1 §9点耐久。 +#upgrade.data_processor.module.ram.tip.1=§9耐久低于 §e25%%§9 时,算力产出逐渐开始§c降低§9,最多 §c25%%。 +#upgrade.data_processor.module.ram.tip.2=§9工作时每秒有 §a10%% §9的概率降低 §e1 §9点耐久。 -upgrade.data_processor.module.ram.limit_provision=§9上限提供: §e%s§9 (效率: %s) +upgrade.data_processor.module.ram.limit_provision=§9上限提供: §e%s§9 -upgrade.data_processor.module.energy.tip=§9最大功耗:§c%s -upgrade.data_processor.module.durability.tip=§9耐久:§e%s / %s§a(%s) -upgrade.data_processor.module.durability.unknown.tip=§9最大耐久(等待计算机初始化):§e%s ~ %s +upgrade.data_processor.module.energy.tip=§9最大功耗:§c%s +#upgrade.data_processor.module.durability.tip=§9耐久:§e%s / %s§a(%s) +#upgrade.data_processor.module.durability.unknown.tip=§9最大耐久(等待计算机初始化):§e%s ~ %s -top.hypernet.online=§9HyperNet 网络状态:§a已连接 -top.hypernet.offline=§9HyperNet 网络状态:§c断开连接 +top.hypernet.online=§9HyperNet 网络状态:§a已连接 +top.hypernet.offline=§9HyperNet 网络状态:§c断开连接 -top.hypernet.connected=§9网络当前在线设备数量: +top.hypernet.connected=§9网络当前在线设备数量: -top.hypernet.computation_point_consumption=§9算力消耗: -top.hypernet.computation_point_generation=§9算力产出: +top.hypernet.computation_point_consumption=§9算力消耗: +top.hypernet.computation_point_generation=§9算力产出: -top.hypernet.research_station.current=§9当前研究: -top.hypernet.research_station.current.empty=§9当前研究:§c无 +top.hypernet.research_station.current=§9当前研究: +top.hypernet.research_station.current.empty=§9当前研究:§c无 top.hypernet.research_station.progress=§9研究进度 -top.hypernet.database.stored.research=§9已存储研究认知数量: -top.hypernet.database.stored.research.max=§9最大研究认知存储数量: +top.hypernet.database.stored.research=§9已存储研究认知数量: +top.hypernet.database.stored.research.max=§9最大研究认知存储数量: -top.hypernet.computation_point.total=§9网络总算力消耗 / 产出: +top.hypernet.computation_point.total=§9网络总算力消耗 / 产出: -top.hypernet.processor.generation=§9当前算力 / 最大算力: -top.hypernet.processor.efficiency=§9工作效率: -top.hypernet.processor.load=§9平均负载: -top.hypernet.processor.circuit_durability=§9电路板耐久剩余: -top.hypernet.processor.heat=§9内部热量: +top.hypernet.processor.generation=§9当前算力 / 最大算力: +top.hypernet.processor.efficiency=§9工作效率: +top.hypernet.processor.load=§9平均负载: +top.hypernet.processor.circuit_durability=§9电路板耐久剩余: +top.hypernet.processor.heat=§9内部热量: -top.estorage.drive.status=§9驱动器状态: +top.estorage.drive.status=§9驱动器状态: top.estorage.drive.status.offline=§c离线 top.estorage.drive.status.online=§a在线 -top.estorage.drive.cell=§9驱动器矩阵: -top.estorage.drive.cell.unsupported=§c警告:驱动器不支持此矩阵等级,需要升级主机。 -top.estorage.drive.cell.bytes=§9字节使用: -top.estorage.drive.cell.types=§9类型使用: +top.estorage.drive.cell=§9驱动器矩阵: +top.estorage.drive.cell.unsupported=§c警告:驱动器不支持此矩阵等级,需要升级主机。 +top.estorage.drive.cell.bytes=§9字节使用: +top.estorage.drive.cell.types=§9类型使用: -top.efabricator.worker.status=§9工作核心状态: +top.efabricator.worker.status=§9工作核心状态: top.efabricator.worker.status.offline=§c离线 top.efabricator.worker.status.online=§a在线 -top.efabricator.worker.queue_status=§9队列状态: -top.efabricator.worker.current_crafting=§9正在合成: -top.efabricator.worker.enqueued_crafting=§9排队中: - -top.ecalculator.controller.storage=§9字节使用: -top.ecalculator.controller.threads=§9线程状态: -top.ecalculator.controller.parallelism=§9最大并行数: -top.ecalculator.thread_core.status=§9核心状态: +top.efabricator.worker.queue_status=§9队列状态: +top.efabricator.worker.current_crafting=§9正在合成: +top.efabricator.worker.enqueued_crafting=§9排队中: + +top.ecalculator.controller.storage=§9字节使用: +top.ecalculator.controller.threads=§9线程状态: +top.ecalculator.controller.parallelism=§9共享并行数: +top.ecalculator.controller.avg_parallelism=§9当前使用并行数: +top.ecalculator.controller.avg_time_usage=§b总性能使用: +top.ecalculator.thread_core.status=§9核心状态: top.ecalculator.thread_core.status.offline=§c离线 top.ecalculator.thread_core.status.online=§a在线 -top.ecalculator.thread_core.threads=§9线程状态: -top.ecalculator.thread_core.crafting=§9正在合成: +top.ecalculator.thread_core.threads=§9线程状态: +top.ecalculator.thread_core.crafting=§9正在合成: +top.ecalculator.thread_core.avg_parallelism=§9平均并行数: +top.ecalculator.thread_core.avg_time_usage=§b平均性能使用: + +tile.novaeng_core.redstone_logical_port.name=红石逻辑端口 +tile.novaeng_core.dream_energy_port.name=梦之能量端口 tile.novaeng_core.hypernet_terminal_controller.name=HyperNet 网络终端 tile.novaeng_core.modular_server_assembler.name=模块服务器组装台(未实装) @@ -206,14 +223,14 @@ tile.novaeng_core.angel_block.tip.0=天使方块,但是更加智能! tile.novaeng_core.angel_block.tip.1=允许你在没有任何方块的情况下虚空放置方块。 tile.novaeng_core.angel_block.tip.2=手持此物品时可在世界预览即将放置的位置。 tile.novaeng_core.angel_block.tip.3=按住 Shift 时,则固定在脚下放置此方块。 -tile.novaeng_core.extendable_digital_storage_subsystem_l4.name=§9ECO - §bL4 §9可扩展存储子系统主机 -tile.novaeng_core.extendable_digital_storage_subsystem_l6.name=§9ECO - §6L6 §9可扩展存储子系统主机 -tile.novaeng_core.extendable_digital_storage_subsystem_l9.name=§9ECO - §5L9 §9可扩展存储子系统主机 -tile.novaeng_core.estorage_energy_cell_l4.name=§9ECO - §bLT4 §9高密度能量元件 -tile.novaeng_core.estorage_energy_cell_l6.name=§9ECO - §6LT6 §9高密度能量元件 -tile.novaeng_core.estorage_energy_cell_l9.name=§9ECO - §5LT9 §9高密度能量元件 -tile.novaeng_core.estorage_cell_drive.name=§9ECO - §bLD §9存储矩阵驱动器 -tile.novaeng_core.estorage_me_channel.name=§9ECO - §bLR §9ME 矩阵通讯接口 +tile.novaeng_core.extendable_digital_storage_subsystem_l4.name=§9ECO - §bS4 §9可扩展存储子系统主机 +tile.novaeng_core.extendable_digital_storage_subsystem_l6.name=§9ECO - §6S6 §9可扩展存储子系统主机 +tile.novaeng_core.extendable_digital_storage_subsystem_l9.name=§9ECO - §5S9 §9可扩展存储子系统主机 +tile.novaeng_core.estorage_energy_cell_l4.name=§9ECO - §bST4 §9高密度能量元件 +tile.novaeng_core.estorage_energy_cell_l6.name=§9ECO - §6ST6 §9高密度能量元件 +tile.novaeng_core.estorage_energy_cell_l9.name=§9ECO - §5ST9 §9高密度能量元件 +tile.novaeng_core.estorage_cell_drive.name=§9ECO - §bSD §9存储矩阵驱动器 +tile.novaeng_core.estorage_me_channel.name=§9ECO - §bSR §9ME 矩阵通讯接口 tile.novaeng_core.estorage_vent.name=§9存储系统结构散热器 tile.novaeng_core.estorage_casing.name=§9存储系统结构外壳 @@ -256,17 +273,17 @@ tile.novaeng_core.geocentric_drill_controller.name=§6地心钻探机控制器 craftcheck.failure.geocentric_drill_depth=无法钻探,最低钻探深度为 1000m! -novaeng.hypernet.computation_point_required.tip=§9算力:§b%s -novaeng.hypernet.computation_point_required.tip.parallelized=§9算力 (受并行影响):§b%s +novaeng.hypernet.computation_point_required.tip=§9算力:§b%s +novaeng.hypernet.computation_point_required.tip.parallelized=§9算力 (受并行影响):§b%s -novaeng.hypernet.calculable.tip.base_ratio=§b基础效率系数:§a%s -novaeng.hypernet.calculable.tip.energy_consume_ratio=§b设计最大能耗:§c%s RF/t +novaeng.hypernet.calculable.tip.base_ratio=§b基础效率系数:§a%s +novaeng.hypernet.calculable.tip.energy_consume_ratio=§b设计最大能耗:§c%s RF/t novaeng.hypernet.calculable.supported=此模块可提供计算功能。 -novaeng.hypernet.hardware_bandwidth.consume=§b硬件带宽占用:§e%s -novaeng.hypernet.hardware_bandwidth.provide=§b硬件带宽提供:§a%s +novaeng.hypernet.hardware_bandwidth.consume=§b硬件带宽占用:§e%s +novaeng.hypernet.hardware_bandwidth.provide=§b硬件带宽提供:§a%s -novaeng.hypernet.calculate.tip.efficiency=%s:%s(效率:%s%%) +novaeng.hypernet.calculate.tip.efficiency=%s:%s(效率:%s%%) novaeng.hypernet.calculate.type_name.intricate=§b复杂运算§f novaeng.hypernet.calculate.type_name.logic=§9密集运算§f @@ -278,13 +295,13 @@ novaeng.hypernet.calculate.type.logic=§a%s §9次密集运算/t§f novaeng.hypernet.calculate.type.neuron=§a%s §c神经网络规模§f novaeng.hypernet.calculate.type.qbit=§a%s §e量子位§f -novaeng.hypernet.research_required.tip=§6需要研究认知:§f%s +novaeng.hypernet.research_required.tip=§6需要研究认知:§f%s gui.hypernet.controller.title=§9///////// HyperNet 代理网络 ///////// -gui.hypernet.controller.computation_point_consumption=§9算力消耗:§b -gui.hypernet.controller.computation_point_consumption.total=§9总算力消耗 / 产出:§b%s / %s -gui.hypernet.controller.connected=§9网络状态:§a已连接 -gui.hypernet.controller.disconnected=§9网络状态:§c断开连接 +gui.hypernet.controller.computation_point_consumption=§9算力消耗:§b +gui.hypernet.controller.computation_point_consumption.total=§9总算力消耗 / 产出:§b%s / %s +gui.hypernet.controller.connected=§9网络状态:§a已连接 +gui.hypernet.controller.disconnected=§9网络状态:§c断开连接 gui.hypernet.controller.version=§7HyperNet Proxy Monitor v1.0 gui.hypernet.controller.footer=§9///////////////////////////////////////// @@ -308,10 +325,16 @@ novaeng.hypernet.database.working.tooltip.1=每存储 §a1 §f个研究认知, novaeng.hypernet.research_station.hypercol=HyperCol AI novaeng.hypernet.research_station.working.tooltip.0=仅在工作状态下消耗能量。 novaeng.hypernet.research_station.working.tooltip.1=工作状态下根据当前研究,消耗指定数量的算力。 +novaeng.hypernet.research_station.overclocking.name=§9自动超频极限值 +novaeng.hypernet.research_station.overclocking.tooltip.0=§9当前极限: +novaeng.hypernet.research_station.overclocking.tooltip.1=§9最大极限:§a5 novaeng.hypernet.repair.tooltip=完成时,修复 §a%s §f点耐久值。 novaeng.hypernet.radiator.tooltip=工作时,每秒可以吸收 §c%sHU§f 内部热量。 +novaeng.space_generator.tooltip0=§r需要先展开能源核心 +novaeng.space_generator.tooltip1=§r允许近乎无穷的并行数量 + novaeng.hypernet.tech_level.1=§a1§a. novaeng.hypernet.tech_level.2=§a2§a. novaeng.hypernet.tech_level.3=§a3§a. @@ -333,14 +356,14 @@ gui.toast.research.complete=HyperNet 研究已完成! gui.terminal_controller.title.nxc=nxc 的虚空终端 gui.terminal_controller.search=§7§o搜索研究... -gui.terminal_controller.status=§b状态: +gui.terminal_controller.status=§b状态: gui.terminal_controller.status.missing_structure=§c结构不完整 gui.terminal_controller.status.online=§a终端在线 gui.terminal_controller.status.offline=§c终端离线 -gui.terminal_controller.status.network.computation_point_consumption=§9总算力消耗: -gui.terminal_controller.status.network.computation_point_generation=§9总算力产出: +gui.terminal_controller.status.network.computation_point_consumption=§9总算力消耗: +gui.terminal_controller.status.network.computation_point_generation=§9总算力产出: gui.terminal_controller.status.network.computation_point.info=§b%s -gui.terminal_controller.status.network.total_connected=§9在线设备数量:§b +gui.terminal_controller.status.network.total_connected=§9在线设备数量:§b gui.terminal_controller.connect_card.empty=请插入密钥卡 gui.terminal_controller.connect_card.validate=§a密钥卡已识别 @@ -349,15 +372,15 @@ gui.terminal_controller.connect_card.invalidate=§c无效的密钥卡 gui.terminal_controller.data.unlocked=研究已解锁 gui.terminal_controller.data.locked=研究可用 gui.terminal_controller.data.unavailable=研究不可用 -gui.terminal_controller.data.progress=研究进度:%s +gui.terminal_controller.data.progress=研究进度:%s gui.terminal_controller.screen.none=点击左侧的研究认知卡以预览。 -gui.terminal_controller.screen.info.dependencies=前置研究: +gui.terminal_controller.screen.info.dependencies=前置研究: gui.terminal_controller.screen.info.dependencies.none=§2无 -gui.terminal_controller.screen.info.tech_level=科技等级: -gui.terminal_controller.screen.info.required_points=需要研究点:§9 -gui.terminal_controller.screen.info.min_computation_point_per_tick=最低算力要求:§b +gui.terminal_controller.screen.info.tech_level=科技等级: +gui.terminal_controller.screen.info.required_points=需要研究点:§9 +gui.terminal_controller.screen.info.min_computation_point_per_tick=最低算力要求:§b gui.terminal_controller.screen.info.unavailable.0=§c研究描述不可用。 gui.terminal_controller.screen.info.unavailable.1=§c解锁该研究所有的前置研究以继续。 @@ -367,13 +390,13 @@ gui.terminal_controller.screen.info.toggle=§a点击切换未解锁和解锁状 gui.terminal_controller.screen.info.start=§a左击向研究站发送当前研究任务。 gui.terminal_controller.screen.info.start.instant=§9中键点击向研究站强制发送当前研究任务,并立即完成研究(需要创造模式,网络中数据库已满时可能无法发送)。 gui.terminal_controller.screen.info.reset=§e右击取消研究站当前正在进行的任务。 -gui.terminal_controller.screen.info.start.time=§9预计耗时:%s 小时 %s 分钟 %s 秒(%s Ticks)。 -gui.terminal_controller.screen.info.start.warn.computation=§e警告:当前算力可能不足以完成研究。 +gui.terminal_controller.screen.info.start.time=§9预计耗时:%s 小时 %s 分钟 %s 秒(%s Ticks)。 +gui.terminal_controller.screen.info.start.warn.computation=§e警告:当前算力可能不足以完成研究。 gui.terminal_controller.screen.info.start.error=§c无法开始研究。 gui.terminal_controller.screen.info.start.error.tech_level=§c未找到研究站或研究站等级过低。 gui.terminal_controller.screen.info.start.error.computation=§c算力不足。 gui.terminal_controller.screen.info.start.error.database_space=§c未找到网络数据库或网络数据库空间已满。 -gui.terminal_controller.screen.info.start.error.dependencies=§c缺失前置研究:%s +gui.terminal_controller.screen.info.start.error.dependencies=§c缺失前置研究:%s gui.modular_server_assembler.assembly.cpu.name=CPU 槽位 §a#%s gui.modular_server_assembler.assembly.cpu_heat_radiator.name=CPU 散热器槽位 §a#%s @@ -393,44 +416,44 @@ gui.modular_server_assembler.assembly.psu.name=PSU 电源槽位 §a#%s gui.modular_server_assembler.assembly.capacitor.name=电容槽位 §a#%s gui.modular_server_assembler.assembly.invalid=§4插槽内物品无效,请移除。 -gui.modular_server_assembler.assembly.dependencies=以下插槽必须安装后才可解锁本插槽: +gui.modular_server_assembler.assembly.dependencies=以下插槽必须安装后才可解锁本插槽: gui.modular_server_assembler.assembly.dependencies.installed=§a(已安装)§f gui.modular_server_assembler.assembly.dependencies.uninstalled=§c(缺失)§f -gui.modular_server_assembler.assembly.dependents=此插槽安装后解锁以下插槽: +gui.modular_server_assembler.assembly.dependents=此插槽安装后解锁以下插槽: -gui.modular_server_assembler.assembly.soft_dependencies=此插槽安装后还需要以下插槽安装后才可完全工作: -gui.modular_server_assembler.assembly.soft_dependents=此插槽安装后以下插槽才可完全工作: +gui.modular_server_assembler.assembly.soft_dependencies=此插槽安装后还需要以下插槽安装后才可完全工作: +gui.modular_server_assembler.assembly.soft_dependents=此插槽安装后以下插槽才可完全工作: gui.modular_server_assembler.assembly.inv.change.main=点击切换至组件插槽窗口。 gui.modular_server_assembler.assembly.inv.change.heat=点击切换至散热器插槽窗口。 gui.modular_server_assembler.info.missing_server=在组装台中放入服务器以显示服务器状态。 -gui.modular_server_assembler.info.total_modules=§2已安装的所有模块数量:§a%s -gui.modular_server_assembler.info.total_cpus=§2已安装的 CPU 数量:§a%s -gui.modular_server_assembler.info.total_rams=§2已安装的 RAM 数量:§a%s -gui.modular_server_assembler.info.total_calculate_cards=§2已安装的计算卡数量:§a%s -gui.modular_server_assembler.info.total_extensions=§2已安装的扩展卡数量:§a%s -gui.modular_server_assembler.info.total_psus=§2已安装的 PSU 电源数量:§a%s -gui.modular_server_assembler.info.total_capacitors=§2已安装的电容器数量:§a%s - -gui.modular_server_assembler.info.max_energy_cap=§6最大储能:§c%sRF -gui.modular_server_assembler.info.max_energy_consumption=§6最大能量消耗(Tick):§c%sRF -gui.modular_server_assembler.info.max_energy_provision=§6最大能量输入(Tick):§c%sRF -gui.modular_server_assembler.info.total_hardware_bandwidth=§9硬件带宽(总计):§a%s -gui.modular_server_assembler.info.used_hardware_bandwidth=§9硬件带宽(已使用):§e%s§f(§6%s§f) - -gui.modular_server_assembler.calculate.expected=§b预期计算能力: -gui.modular_server_assembler.calculate.name=%s: -gui.modular_server_assembler.calculate.value=%s(效率:%s%%) - -gui.modular_server_assembler.info.can_start=§b是否可启动:%s +gui.modular_server_assembler.info.total_modules=§2已安装的所有模块数量:§a%s +gui.modular_server_assembler.info.total_cpus=§2已安装的 CPU 数量:§a%s +gui.modular_server_assembler.info.total_rams=§2已安装的 RAM 数量:§a%s +gui.modular_server_assembler.info.total_calculate_cards=§2已安装的计算卡数量:§a%s +gui.modular_server_assembler.info.total_extensions=§2已安装的扩展卡数量:§a%s +gui.modular_server_assembler.info.total_psus=§2已安装的 PSU 电源数量:§a%s +gui.modular_server_assembler.info.total_capacitors=§2已安装的电容器数量:§a%s + +gui.modular_server_assembler.info.max_energy_cap=§6最大储能:§c%sRF +gui.modular_server_assembler.info.max_energy_consumption=§6最大能量消耗(Tick):§c%sRF +gui.modular_server_assembler.info.max_energy_provision=§6最大能量输入(Tick):§c%sRF +gui.modular_server_assembler.info.total_hardware_bandwidth=§9硬件带宽(总计):§a%s +gui.modular_server_assembler.info.used_hardware_bandwidth=§9硬件带宽(已使用):§e%s§f(§6%s§f) + +gui.modular_server_assembler.calculate.expected=§b预期计算能力: +gui.modular_server_assembler.calculate.name=%s: +gui.modular_server_assembler.calculate.value=%s(效率:%s%%) + +gui.modular_server_assembler.info.can_start=§b是否可启动:%s gui.modular_server_assembler.info.can_start.true=§a可用 gui.modular_server_assembler.info.can_start.false=§c不可用 -gui.modular_server_assembler.error=§e以下原因阻止了计算机启动: +gui.modular_server_assembler.error=§e以下原因阻止了计算机启动: gui.modular_server_assembler.error.dependencies.0=§c有插槽缺失前置。 -gui.modular_server_assembler.error.dependencies.1=§c以下插槽被其他插槽所依赖,必须安装相应的模块后才可继续: +gui.modular_server_assembler.error.dependencies.1=§c以下插槽被其他插槽所依赖,必须安装相应的模块后才可继续: gui.modular_server_assembler.error.require_cpu=§c至少需要安装一个 CPU 模块。 gui.modular_server_assembler.error.require_ram=§c至少需要安装一个 RAM 模块。 @@ -439,41 +462,44 @@ gui.modular_server_assembler.error.require_capacitor=§c至少需要安装一个 gui.modular_server_assembler.error.hardware_bandwidth=§c使用的硬件带宽过高(最高 150%%)。 gui.modular_server_assembler.error.invalid_slot.0=§c有槽位安装了错误的模块。 -gui.modular_server_assembler.error.invalid_slot.1=§c以下槽位中的模块是有问题的: +gui.modular_server_assembler.error.invalid_slot.1=§c以下槽位中的模块是有问题的: gui.estorage_controller.cell_info.tip.0=%s(%s) -gui.estorage_controller.cell_info.tip.1=类型使用:%s / %s -gui.estorage_controller.cell_info.tip.2=字节使用:%s / %s +gui.estorage_controller.cell_info.tip.1=类型使用:%s / %s +gui.estorage_controller.cell_info.tip.2=字节使用:%s / %s gui.estorage_controller.cell_info.item=物品存储矩阵 gui.estorage_controller.cell_info.fluid=流体存储矩阵 +gui.estorage_controller.cell_info.gas=气体存储矩阵 gui.estorage_controller.cell_info.empty=未知 -gui.estorage_controller.graph.fluid.percent=流体存储占用:%s%% -gui.estorage_controller.graph.item.percent=物品存储占用:%s%% -gui.estorage_controller.graph.total.percent=总存储占用:%s%% -gui.estorage_controller.graph.fluid_type=流体类型:%s / %s -gui.estorage_controller.graph.item_type=物品类型:%s / %s -gui.estorage_controller.graph.energy_usage=总耗能:%sAE/t -gui.estorage_controller.graph.energy_stored.percent=能量存储:%s%% -gui.estorage_controller.graph.energy_stored=能量存储:%sAE / %sAE +gui.estorage_controller.graph.fluid.percent=流体存储占用:%s%% +gui.estorage_controller.graph.item.percent=物品存储占用:%s%% +gui.estorage_controller.graph.gas.percent=气体存储占用:%s%% +gui.estorage_controller.graph.total.percent=总存储占用:%s%% +gui.estorage_controller.graph.gas_type=气体类型:%s / %s +gui.estorage_controller.graph.fluid_type=流体类型:%s / %s +gui.estorage_controller.graph.item_type=物品类型:%s / %s +gui.estorage_controller.graph.energy_usage=总耗能:%sAE/t +gui.estorage_controller.graph.energy_stored.percent=能量存储:%s%% +gui.estorage_controller.graph.energy_stored=能量存储:%sAE / %sAE gui.efabricator_pattern_bus.title=§9ECO - §eFD 智能样板总线 gui.efabricator_pattern_bus.inventory=物品栏 -gui.efabricator.total_crafted=统计 - 已完成配方数:%s -gui.efabricator.total_crafted.update=统计 - 已完成配方数:%s,合成速度:§a+%s/Tick§f +gui.efabricator.total_crafted=统计 - 已完成配方数:%s +gui.efabricator.total_crafted.update=统计 - 已完成配方数:%s,合成速度:§a+%s/Tick§f gui.efabricator.button.upload_pattern=上传样板至当前网络中可用的§9可扩展合成子系统§7中。 -gui.efabricator.queue.status=队列:%s / %s -gui.efabricator.max_energy_usage=最大能耗:§b%s AE +gui.efabricator.queue.status=队列:%s / %s +gui.efabricator.max_energy_usage=最大能耗:§b%s AE gui.efabricator.max_energy_usage.tip=显示值为所有工作核心满负载时工作一次的能耗。 gui.efabricator.overclocked.enable.tip=单击启用§e超频 I§f 模式,在有限范围内提升性能,消耗更多§c能量§f。 gui.efabricator.overclocked.disable.tip=单击禁用§e超频 I§f 模式。 -gui.efabricator.active_cooling=主动冷却:%s +gui.efabricator.active_cooling=主动冷却:%s gui.efabricator.active_cooling.enable.tip.0=单击启用 §9ECO - FZ 主动冷却子系统§f,消耗流体输入仓内的§9冷却液,§f提升§a性能§f并降低§a能耗§f。 -gui.efabricator.active_cooling.enable.tip.1=支持的§9冷却液§f: -gui.efabricator.active_cooling.enable.tip.1.coolant= 输入:%s §a%smB§f,输出:%s §a%smB§f,冷却单位:§b%s§f -gui.efabricator.active_cooling.enable.tip.1.coolant.no_output= 输入:%s §a%smB§f,输出:§c无§f,冷却单位:§b%s§f +gui.efabricator.active_cooling.enable.tip.1=支持的§9冷却液§f: +gui.efabricator.active_cooling.enable.tip.1.coolant= 输入:%s §a%smB§f,输出:%s §a%smB§f,冷却单位:§b%s§f +gui.efabricator.active_cooling.enable.tip.1.coolant.no_output= 输入:%s §a%smB§f,输出:§c无§f,冷却单位:§b%s§f gui.efabricator.active_cooling.enable.tip.2=启用主动冷却会使子系统进入§6超频 II§f 模式。 gui.efabricator.active_cooling.enable.tip.3=如果§e超频 I§f 模式已启用,启用§9主动冷却§f会使子系统进入§c超频 III§f 模式。 gui.efabricator.active_cooling.enable.tip.4= §c超频 III§f 模式将§2极大幅度§f提升整机性能,并降低§a能量§f消耗,消耗更多§9冷却液§f。 @@ -482,18 +508,24 @@ gui.efabricator.active_cooling.enable.tip.6=§f如果流体输出仓为满,则 gui.efabricator.active_cooling.disable.tip=单击禁用 §9ECO - FZ 主动冷却子系统§f。 gui.efabricator.active_cooling.on=§a启用 gui.efabricator.active_cooling.off=§c禁用 -gui.efabricator.pattern_bus.count=样板总线:%s -gui.efabricator.parallel_proc.count=并行核心:%s -gui.efabricator.worker.count=工作核心:%s -gui.efabricator.crafting_progress.0=总队列占用:%s%% +gui.efabricator.pattern_bus.count=样板总线:%s +gui.efabricator.parallel_proc.count=并行核心:%s +gui.efabricator.worker.count=工作核心:%s +gui.efabricator.crafting_progress.0=总队列占用:%s%% gui.efabricator.crafting_progress.1=%s / %s -gui.efabricator.crafting_time.0=预计耗时:%s -gui.efabricator.total_parallelism=总并行数:%s -gui.efabricator.total_parallelism.limit=限制为:%s -gui.efabricator.total_parallelism.overflow=溢出:%s (%s%%) -gui.efabricator.total_parallelism.overflow_speedup=加速:%s Tick (%s%%) -gui.efabricator.total_parallelism.overflow_speedup.coolants.0=冷却液消耗: +gui.efabricator.crafting_time.0=预计耗时:%s +gui.efabricator.total_parallelism=总并行数:%s +gui.efabricator.total_parallelism.limit=限制为:%s +gui.efabricator.total_parallelism.overflow=溢出:%s (%s%%) +gui.efabricator.total_parallelism.overflow_speedup=加速:%s Tick (%s%%) +gui.efabricator.total_parallelism.overflow_speedup.coolants.0=冷却液消耗: gui.efabricator.total_parallelism.overflow_speedup.coolants.1=%s mB/t +gui.efabricator.switch.pattern_search=单击切换到§9样板管理器§f。 +gui.efabricator.switch.default=单击切换到§9合成监控器§f。 +gui.efabricator.pattern_search.title=样板管理器 +gui.efabricator.pattern_search.input=§7§o搜索材料... +gui.efabricator.pattern_search.output=§7§o搜索产物... +gui.efabricator.pattern_search.put_pattern=单击将鼠标持有的样板插入样板总线(如果可用)。 gui.geocentric_drill.ore_control=矿物控制表 gui.geocentric_drill.dive=单击使钻探机下潜 §a100m§f,最大值 §e20000m§f。 @@ -501,11 +533,22 @@ gui.geocentric_drill.dive.ctrl_down=单击使钻探机下潜 §a1000m§f,最 gui.geocentric_drill.ascend=单击使钻探机上浮 §a100m§f,最小值 §e1000m§f。 gui.geocentric_drill.ascend.ctrl_down=单击使钻探机上浮 §a1000m§f,最小值 §e1000m§f。 -gui.geocentric_drill.monitor.depth=§b当前深度 / 目标深度:§a%sm§b / §e%sm -gui.geocentric_drill.monitor.output_multiplier=§b产出倍率:§a%sx§b +gui.geocentric_drill.monitor.depth=§b当前深度 / 目标深度:§a%sm§b / §e%sm +gui.geocentric_drill.monitor.output_multiplier=§b产出倍率:§a%sx§b gui.geocentric_drill.ore_control.tooltip.mark=单击标记此矿物,§a提高§f此矿物的输出权重,§c降低§f其他矿物的输出权重。 gui.geocentric_drill.ore_control.tooltip.unmark=单击取消标记此矿物。 -gui.geocentric_drill.ore_control.tooltip.chance=输出权重:§a%s%%§f +gui.geocentric_drill.ore_control.tooltip.chance=输出权重:§a%s%%§f + +gui.novaeng_core.replicator=可复制列表 +gui.novaeng_core.replicator.tooltips1=需要%sB UU物质复制 + +text.dream_energy_port.0=替换梦之能量核心的智能数据接口以启用通量模式 +text.dream_energy_port.1=通量模式下,梦之能量核心将直接作为通量网络缓存 + +enchantment.magic_breaking=破魔 +enchantment.novaeng_core.magic_breaking.desc=对于剩余血量大于10的生物,你的每一次伤害都将是真实的(无视免伤和护甲),但你无法一次击杀它们 +modifier.magic_breaking.name=破魔 +modifier.magic_breaking.desc=§6§o众御皆虚§9\n对于剩余血量大于10的生物,你的每一次伤害都将是真实的(无视免伤和护甲),但你无法一次击杀它们 -itemGroup.novaeng_core=新星工程:核心 +itemGroup.novaeng_core=新星工程:核心 \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/block/dreamenergyport.json b/src/main/resources/assets/novaeng_core/models/block/dreamenergyport.json new file mode 100644 index 00000000..14697a39 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/block/dreamenergyport.json @@ -0,0 +1,7 @@ +{ + "parent": "modularmachinery:block/blockmodel_overlay_all", + "textures": { + "bg_all": "contenttweaker:blocks/extrememachineblock", + "ov_all": "fluxnetworks:items/fluxcore" + } +} diff --git a/src/main/resources/assets/novaeng_core/models/block/redstone_logical_port.json b/src/main/resources/assets/novaeng_core/models/block/redstone_logical_port.json new file mode 100644 index 00000000..2256ae8b --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/block/redstone_logical_port.json @@ -0,0 +1,7 @@ +{ + "parent": "modularmachinery:block/blockmodel_overlay_all", + "textures": { + "bg_all": "modularmachinery:blocks/blockcasing_plain", + "ov_all": "minecraft:items/redstone_dust" + } +} diff --git a/src/main/resources/assets/novaeng_core/models/block/storage_array_drives_a/storage_array_drives_a0_gas.json b/src/main/resources/assets/novaeng_core/models/block/storage_array_drives_a/storage_array_drives_a0_gas.json new file mode 100644 index 00000000..24ab6951 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/block/storage_array_drives_a/storage_array_drives_a0_gas.json @@ -0,0 +1,35 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "2": "novaeng_core:blocks/bloom/storage_array_drives_a0_off_gas", + "3": "novaeng_core:blocks/storage_array_drives_a0_off_gas", + "particle": "novaeng_core:blocks/0" + }, + "elements": [ + { + "from": [2, 2, 0.5], + "to": [8, 14, 11], + "faces": { + "north": {"uv": [8, 2, 14, 14], "texture": "#3"}, + "east": {"uv": [8, 2, 9, 14], "texture": "#3"}, + "south": {"uv": [8, 2, 14, 14], "texture": "#3"}, + "west": {"uv": [13, 2, 14, 14], "texture": "#3"}, + "up": {"uv": [14, 2, 8, 3], "texture": "#3"}, + "down": {"uv": [14, 13, 8, 14], "texture": "#3"} + } + }, + { + "name": "bloom", + "from": [2, 2, 0.5], + "to": [8, 14, 11], + "faces": { + "north": {"uv": [8, 2, 14, 14], "texture": "#2"}, + "east": {"uv": [8, 2, 9, 14], "texture": "#2"}, + "south": {"uv": [8, 2, 14, 14], "texture": "#2"}, + "west": {"uv": [13, 2, 14, 14], "texture": "#2"}, + "up": {"uv": [14, 2, 8, 3], "texture": "#2"}, + "down": {"uv": [14, 13, 8, 14], "texture": "#2"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/block/storage_array_drives_b/storage_array_drives_b0_gas.json b/src/main/resources/assets/novaeng_core/models/block/storage_array_drives_b/storage_array_drives_b0_gas.json new file mode 100644 index 00000000..233c1875 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/block/storage_array_drives_b/storage_array_drives_b0_gas.json @@ -0,0 +1,35 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "1": "novaeng_core:blocks/storage_array_drives_b0_off_gas", + "2": "novaeng_core:blocks/bloom/storage_array_drives_b0_off_gas", + "particle": "novaeng_core:blocks/0" + }, + "elements": [ + { + "from": [2, 2, 0.5], + "to": [8, 14, 11], + "faces": { + "north": {"uv": [8, 2, 14, 14], "texture": "#1"}, + "east": {"uv": [8, 2, 9, 14], "texture": "#1"}, + "south": {"uv": [8, 2, 14, 14], "texture": "#1"}, + "west": {"uv": [13, 2, 14, 14], "texture": "#1"}, + "up": {"uv": [14, 2, 8, 3], "texture": "#1"}, + "down": {"uv": [14, 13, 8, 14], "texture": "#1"} + } + }, + { + "name": "bloom", + "from": [2, 2, 0.5], + "to": [8, 14, 11], + "faces": { + "north": {"uv": [8, 2, 14, 14], "texture": "#2"}, + "east": {"uv": [8, 2, 9, 14], "texture": "#2"}, + "south": {"uv": [8, 2, 14, 14], "texture": "#2"}, + "west": {"uv": [13, 2, 14, 14], "texture": "#2"}, + "up": {"uv": [14, 2, 8, 3], "texture": "#2"}, + "down": {"uv": [14, 13, 8, 14], "texture": "#2"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/block/storage_array_drives_c/storage_array_drives_c0_gas.json b/src/main/resources/assets/novaeng_core/models/block/storage_array_drives_c/storage_array_drives_c0_gas.json new file mode 100644 index 00000000..6bb891e6 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/block/storage_array_drives_c/storage_array_drives_c0_gas.json @@ -0,0 +1,35 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "2": "novaeng_core:blocks/storage_array_drives_c0_off_gas", + "3": "novaeng_core:blocks/bloom/storage_array_drives_c0_off_gas", + "particle": "novaeng_core:blocks/0" + }, + "elements": [ + { + "from": [2, 2, 0.5], + "to": [8, 14, 11], + "faces": { + "north": {"uv": [8, 2, 14, 14], "texture": "#2"}, + "east": {"uv": [8, 2, 9, 14], "texture": "#2"}, + "south": {"uv": [14, 2, 8, 3], "texture": "#2"}, + "west": {"uv": [13, 2, 14, 14], "texture": "#2"}, + "up": {"uv": [14, 2, 8, 3], "texture": "#2"}, + "down": {"uv": [14, 13, 8, 14], "texture": "#2"} + } + }, + { + "name": "bloom", + "from": [2, 2, 0.5], + "to": [8, 14, 11], + "faces": { + "north": {"uv": [8, 2, 14, 14], "texture": "#3"}, + "east": {"uv": [8, 2, 9, 14], "texture": "#3"}, + "south": {"uv": [14, 2, 8, 3], "texture": "#3"}, + "west": {"uv": [13, 2, 14, 14], "texture": "#3"}, + "up": {"uv": [14, 2, 8, 3], "texture": "#3"}, + "down": {"uv": [14, 13, 8, 14], "texture": "#3"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l4_fluid_matrix_storage_components.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l4_fluid_matrix_storage_components.json new file mode 100644 index 00000000..359150b1 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l4_fluid_matrix_storage_components.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell/l4_fluid_matrix_storage_components", + "layer1": "novaeng_core:items/estorage_cell/estorage_cell_e/l4_fluid_matrix_storage_components_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l4_gas_matrix_storage_components.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l4_gas_matrix_storage_components.json new file mode 100644 index 00000000..f54a3d03 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l4_gas_matrix_storage_components.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/l4_gas_matrix_storage_components", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/l4_gas_matrix_storage_components_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l4_matrix_storage_components.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l4_matrix_storage_components.json new file mode 100644 index 00000000..6590c74c --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l4_matrix_storage_components.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell/l4_matrix_storage_components", + "layer1": "novaeng_core:items/estorage_cell/estorage_cell_e/l4_matrix_storage_components_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l6_fluid_matrix_storage_components.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l6_fluid_matrix_storage_components.json new file mode 100644 index 00000000..33c1d158 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l6_fluid_matrix_storage_components.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/l6_fluid_matrix_storage_components", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/l6_fluid_matrix_storage_components_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l6_gas_matrix_storage_components.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l6_gas_matrix_storage_components.json new file mode 100644 index 00000000..1314c26e --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l6_gas_matrix_storage_components.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/l6_gas_matrix_storage_components", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/l6_gas_matrix_storage_components_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l6_matrix_storage_components.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l6_matrix_storage_components.json new file mode 100644 index 00000000..8d8072b5 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l6_matrix_storage_components.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell/l6_matrix_storage_components", + "layer1": "novaeng_core:items/estorage_cell/estorage_cell_e/l6_matrix_storage_components_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l9_fluid_matrix_storage_components.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l9_fluid_matrix_storage_components.json new file mode 100644 index 00000000..a27b2ad2 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l9_fluid_matrix_storage_components.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/l9_fluid_matrix_storage_components", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/l9_fluid_matrix_storage_components_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l9_gas_matrix_storage_components.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l9_gas_matrix_storage_components.json new file mode 100644 index 00000000..eb454285 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l9_gas_matrix_storage_components.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/l9_gas_matrix_storage_components", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/l9_gas_matrix_storage_components_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l9_matrix_storage_components.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l9_matrix_storage_components.json new file mode 100644 index 00000000..e1219786 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cel/l9_matrix_storage_components.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell/l9_matrix_storage_components", + "layer1": "novaeng_core:items/estorage_cell/estorage_cell_e/l9_matrix_storage_components" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_fluid_16m_empty.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_fluid_16m_empty.json new file mode 100644 index 00000000..9415fedc --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_fluid_16m_empty.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_a1_fluid_16m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_a1_fluid_16m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_fluid_gas_empty.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_fluid_gas_empty.json new file mode 100644 index 00000000..bf842a59 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_fluid_gas_empty.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_a1_gas_16m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_a1_gas_16m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_fluid_gas_full.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_fluid_gas_full.json new file mode 100644 index 00000000..a144a01b --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_fluid_gas_full.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_a3_gas_16m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_a3_gas_16m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_fluid_gas_mid.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_fluid_gas_mid.json new file mode 100644 index 00000000..0b57f3d5 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_fluid_gas_mid.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_a2_gas_16m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_a2_gas_16m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_item_16m_empty.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_item_16m_empty.json new file mode 100644 index 00000000..e404e2c5 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_16m/estorage_cell_item_16m_empty.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_a1_item_16m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_a1_item_16m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_fluid_256m_empty.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_fluid_256m_empty.json new file mode 100644 index 00000000..ef48fbf6 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_fluid_256m_empty.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_c1_fluid_256m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_c1_fluid_256m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_gas_256m_empty.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_gas_256m_empty.json new file mode 100644 index 00000000..21e7541f --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_gas_256m_empty.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_c1_gas_256m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_c1_gas_256m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_gas_256m_full.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_gas_256m_full.json new file mode 100644 index 00000000..48b2571b --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_gas_256m_full.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_c3_gas_256m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_c3_gas_256m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_gas_256m_mid.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_gas_256m_mid.json new file mode 100644 index 00000000..0c36504f --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_gas_256m_mid.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_c2_gas_256m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_c2_gas_256m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_item_256m_empty.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_item_256m_empty.json new file mode 100644 index 00000000..a42cbc67 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_256m/estorage_cell_item_256m_empty.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_c1_item_256m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_c1_item_256m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_fluid_64m_empty.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_fluid_64m_empty.json new file mode 100644 index 00000000..5c67ccdd --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_fluid_64m_empty.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_b1_fluid_64m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_b1_fluid_64m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_gas_64m_empty.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_gas_64m_empty.json new file mode 100644 index 00000000..a36773fc --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_gas_64m_empty.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_b1_gas_64m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_b1_gas_64m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_gas_64m_full.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_gas_64m_full.json new file mode 100644 index 00000000..7acda73d --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_gas_64m_full.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_b3_gas_64m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_b3_gas_64m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_gas_64m_mid.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_gas_64m_mid.json new file mode 100644 index 00000000..3e204db0 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_gas_64m_mid.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_b2_gas_64m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_b2_gas_64m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_item_64m_empty.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_item_64m_empty.json new file mode 100644 index 00000000..8a581b74 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_64m/estorage_cell_item_64m_empty.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_b1_item_64m", + "layer1": "novaeng_core:items/estorage_cell_disks/estorage_cell_disks_e/estorage_cell_disks_b1_item_64m_e" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_gas_16m.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_gas_16m.json new file mode 100644 index 00000000..557e2b3a --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_gas_16m.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks_a1_gas_16m", + "layer1": "novaeng_core:items/bloom/estorage_cell_disks_a1_gas_16m" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_gas_256m.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_gas_256m.json new file mode 100644 index 00000000..0125772e --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_gas_256m.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks_c1_gas_256m", + "layer1": "novaeng_core:items/bloom/estorage_cell_disks_c1_gas_256m" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/estorage_cell_gas_64m.json b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_gas_64m.json new file mode 100644 index 00000000..020e8450 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/estorage_cell_gas_64m.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/estorage_cell_disks_b1_gas_64m", + "layer1": "novaeng_core:items/bloom/estorage_cell_disks_b1_gas_64m" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/horologium_compass.json b/src/main/resources/assets/novaeng_core/models/item/horologium_compass.json new file mode 100644 index 00000000..2ba71269 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/horologium_compass.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/horologium_compass" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/magic_breaking_stone.json b/src/main/resources/assets/novaeng_core/models/item/magic_breaking_stone.json new file mode 100644 index 00000000..fa3ddecb --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/magic_breaking_stone.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/magic_breaking_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/terminalis.json b/src/main/resources/assets/novaeng_core/models/item/terminalis.json new file mode 100644 index 00000000..744063a2 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/terminalis.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/terminalis" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/wireless_nova_terminal.json b/src/main/resources/assets/novaeng_core/models/item/wireless_nova_terminal.json new file mode 100644 index 00000000..f21b29da --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/wireless_nova_terminal.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/wireless_nova_terminal" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/models/item/wireless_universal_terminal.json b/src/main/resources/assets/novaeng_core/models/item/wireless_universal_terminal.json new file mode 100644 index 00000000..64d6781b --- /dev/null +++ b/src/main/resources/assets/novaeng_core/models/item/wireless_universal_terminal.json @@ -0,0 +1,68 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "novaeng_core:items/wireless_universal_terminal" + }, + "overrides": [ + { + "predicate": { + "mode": 1 + }, + "model": "appliedenergistics2:item/wireless_crafting_terminal" + }, + { + "predicate": { + "mode": 2 + }, + "model": "appliedenergistics2:item/wireless_fluid_terminal" + }, + { + "predicate": { + "mode": 3 + }, + "model": "appliedenergistics2:item/wireless_pattern_terminal" + }, + { + "predicate": { + "mode": 4 + }, + "model": "ae2fc:item/wireless_fluid_pattern_terminal" + }, + { + "predicate": { + "mode": 5 + }, + "model": "mekeng:item/wireless_gas_terminal" + }, + { + "predicate": { + "mode": 6 + }, + "model": "ae2exttable:item/wireless_basic_crafting_terminal" + }, + { + "predicate": { + "mode": 7 + }, + "model": "ae2exttable:item/wireless_advanced_crafting_terminal" + }, + { + "predicate": { + "mode": 8 + }, + "model": "ae2exttable:item/wireless_elite_crafting_terminal" + }, + { + "predicate": { + "mode": 9 + }, + "model": "ae2exttable:item/wireless_ultimate_crafting_terminal" + }, + { + "predicate": { + "mode": 114514 + }, + "model": "novaeng_core:item/wireless_nova_terminal" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/book.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/book.json new file mode 100644 index 00000000..04eefff2 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/book.json @@ -0,0 +1,11 @@ +{ + "name": "§6ECO_Tl终端", + "subtitle": "试验性教学设备", + "landing_text": "用于指导某些机器的搭建与使用", + "version": 0, + "pause_game": true, + "book_texture": "novaeng_core:textures/gui/terminalis/facies.png", + "model": "novaeng_core:terminalis", + "show_toasts": "false", + "text_color": "ffffff" +} diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/eco_ae.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/eco_ae.json new file mode 100644 index 00000000..25b0d682 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/eco_ae.json @@ -0,0 +1,6 @@ +{ + "name": "§b先进AE设备", + "description": "新星工程开发的升级版AE", + "icon": "appliedenergistics2:controller", + "sortnum": 0 +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/eco_ae/computatum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/eco_ae/computatum.json new file mode 100644 index 00000000..00733921 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/eco_ae/computatum.json @@ -0,0 +1,7 @@ +{ + "name": "§bECO-C计算子系统", + "description": "升级版合成处理器", + "icon": "novaeng_core:extendable_calculator_subsystem_l4", + "sortnum": 2, + "parent": "novaeng_core:eco_ae" +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/eco_ae/factum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/eco_ae/factum.json new file mode 100644 index 00000000..6538e67b --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/eco_ae/factum.json @@ -0,0 +1,7 @@ +{ + "name": "§bECO-F合成子系统", + "description": "升级版分子装配室", + "icon": "novaeng_core:extendable_fabricator_subsystem_l4", + "sortnum": 1, + "parent": "novaeng_core:eco_ae" +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/eco_ae/lectum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/eco_ae/lectum.json new file mode 100644 index 00000000..42cc8046 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/eco_ae/lectum.json @@ -0,0 +1,7 @@ +{ + "name": "§bECO-L存储阵列", + "description": "升级版驱动器", + "icon": "novaeng_core:extendable_digital_storage_subsystem_l4", + "sortnum": 0, + "parent": "novaeng_core:eco_ae" +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/hypernet.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/hypernet.json new file mode 100644 index 00000000..000f5506 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/categories/hypernet.json @@ -0,0 +1,6 @@ +{ + "name": "§bHypernet网络", + "description": "算力生产与使用", + "icon": "contenttweaker:hypernet_connect_card", + "sortnum": 1 +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/c4.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/c4.json new file mode 100644 index 00000000..e38b94d1 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/c4.json @@ -0,0 +1,20 @@ +{ + "name": "ECO-C4", + "icon": "novaeng_core:ecalculator_cell_64m", + "category": "novaeng_core:eco_ae/computatum", + "sortnum": 2, + "pages": [ + { + "type": "3", + "item1": "novaeng_core:extendable_calculator_subsystem_l4", + "item2": "novaeng_core:ecalculator_thread_core_l4", + "item3": "novaeng_core:ecalculator_parallel_proc_l4", + "text": "对应位置安装这套部件,使阵列升级至C4。$(br)每大小提供:$(br)$(a)└ +2晶阵槽位$(br)└ +128并行数$(br)└ +1线程/+2超线程" + }, + { + "type": "texttl", + "text": "7355608$(br)$()你不知为何想起了这样的数字" + } + + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/c6.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/c6.json new file mode 100644 index 00000000..0c3f4d0e --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/c6.json @@ -0,0 +1,15 @@ +{ + "name": "ECO-C6", + "icon": "novaeng_core:ecalculator_cell_1024m", + "category": "novaeng_core:eco_ae/computatum", + "sortnum": 2, + "pages": [ + { + "type": "3", + "item1": "novaeng_core:extendable_calculator_subsystem_l6", + "item2": "novaeng_core:ecalculator_thread_core_l6", + "item3": "novaeng_core:ecalculator_parallel_proc_l6", + "text": "对应位置安装这套部件,使阵列升级至C6。$(br)每大小提供:$(br)$(a)└ +2晶阵槽位$(br)└ +384并行数$(br)└ +2线程/+4超线程" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/c9.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/c9.json new file mode 100644 index 00000000..17009888 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/c9.json @@ -0,0 +1,15 @@ +{ + "name": "ECO-C9", + "icon": "novaeng_core:ecalculator_cell_16384m", + "category": "novaeng_core:eco_ae/computatum", + "sortnum": 2, + "pages": [ + { + "type": "3", + "item1": "novaeng_core:extendable_calculator_subsystem_l9", + "item2": "novaeng_core:ecalculator_thread_core_l9", + "item3": "novaeng_core:ecalculator_parallel_proc_l9", + "text": "对应位置安装这套部件,使阵列升级至C9。$(br)每大小提供:$(br)$(a)└ +2晶阵槽位$(br)└ +1152并行数$(br)└ +4线程/+1线程 & 8超线程" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/explicatum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/explicatum.json new file mode 100644 index 00000000..32c091c1 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/explicatum.json @@ -0,0 +1,19 @@ +{ + "name": "使用说明", + "icon": "appliedenergistics2:part:180", + "category": "novaeng_core:eco_ae/computatum", + "sortnum": 1, + "pages": [ + { + "type": "texttl", + "text": "待机时,只会显示一个CPU,但EC会根据任务数量,按需生成CPU。$(br)所有字节与并行数也将共享,按需分配。" + }, + { + "type": "2_com", + "item1": "novaeng_core:ecalculator_thread_core_l4", + "text1": "线程核心提供线程,线程数决定最多能存在的CPU数量。", + "item2": "novaeng_core:ecalculator_thread_core_hyper_l4", + "text2": "每个超线程核心能提供两倍于普通核心的线程数,但每个线程将占用10%额外字节。" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/fixum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/fixum.json new file mode 100644 index 00000000..aa906907 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/computatum/fixum.json @@ -0,0 +1,27 @@ +{ + "name": "安装指南", + "icon": "redstonearsenal:tool.wrench_flux", + "category": "novaeng_core:eco_ae/computatum", + "sortnum": 0, + "pages": [ + { + "type": "1", + "item": "novaeng_core:extendable_calculator_subsystem_l4", + "text": "升级版的合成处理器$(br)模块化设计,不同等级的结构相同,只有部件等级不同,因此安装方法通用。$(br)JEI查询控制器配方,在“结构预览”一栏能看到结构图。$(br)调整至合适大小后点击“投影至世界”。" + }, + { + "type": "image", + "images": [ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis.png" + ], + "text": "$(6)注意:最大大小12,大部分方块有方向要求" + }, + { + "type": "2_com", + "item1": "novaeng_core:ecalculator_cell_64m", + "text1": "SHIFT右键将CE闪存晶阵放入驱动器", + "item2": "novaeng_core:ecalculator_me_channel", + "text2": "该方块用于连接AE线缆,使EC如同合成处理器一样接入AE。" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/explicatum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/explicatum.json new file mode 100644 index 00000000..a9685e85 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/explicatum.json @@ -0,0 +1,16 @@ +{ + "name": "技术细节", + "icon": "modularrouters:augment:5", + "category": "novaeng_core:eco_ae/factum", + "sortnum": 3, + "pages": [ + { + "type": "texttl", + "text": "$(e)注意:本篇介绍了详细的工作机制,但它不是必会的。$(br)对多数用户而言,只需要不断换上更好的部件,不停供应冷却剂即可。" + }, + { + "type": "texttl", + "text": "等待更新(没写完捏)" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/explorator.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/explorator.json new file mode 100644 index 00000000..1ce00f48 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/explorator.json @@ -0,0 +1,28 @@ +{ + "name": "放入样板与样板管理器", + "icon": "artisanworktables:artisans_lens_wood", + "category": "novaeng_core:eco_ae/factum", + "sortnum": 1, + "pages": [ + { + "type": "image", + "images": [ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis_facti_3.png" + ] + }, + { + "type": "texttl", + "text": "你有三种方法存取样板:$(br)-样板终端点击此按钮,写好的样板会送至样板总线$(br)-在控制器处,点击按钮进入样板管理器,将样板拖入结果框$(br)-手动放至样板总线" + }, + { + "type": "image", + "images": [ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis_facti_2.png" + ] + }, + { + "type": "texttl", + "text": "样板管理器亦能根据原料与产物搜索对应样板。" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/f4.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/f4.json new file mode 100644 index 00000000..98b15956 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/f4.json @@ -0,0 +1,18 @@ +{ + "name": "ECO-F4", + "icon": "novaeng_core:extendable_fabricator_subsystem_l4", + "category": "novaeng_core:co_ae/factum", + "sortnum": 2, + "pages": [ + { + "type": "2_ad", + "item1": "novaeng_core:extendable_fabricator_subsystem_l4", + "item2": "novaeng_core:efabricator_parallel_proc_l4", + "text": "对应位置安装这套部件,使阵列升级至F4。$(br)每大小提供:$(br)$(a)└ +48并行数$(br)└ +144样板位" + }, + { + "type": "texttl", + "text": "启动超频时:$(br)$(a)└ +64并行数$(br)└ +144样板位$(br)$(c)└ x4能量消耗|不叠加$(br)└ -2%总并行数$(br)$()启动主动冷却与超频时:$(br)$(a)└ +64并行数$(br)└ +144样板位" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/f6.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/f6.json new file mode 100644 index 00000000..34770f52 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/f6.json @@ -0,0 +1,18 @@ +{ + "name": "ECO-F6", + "icon": "novaeng_core:extendable_fabricator_subsystem_l6", + "category": "novaeng_core:eco_ae/factum", + "sortnum": 2, + "pages": [ + { + "type": "2_ad", + "item1": "novaeng_core:extendable_fabricator_subsystem_l6", + "item2": "novaeng_core:efabricator_parallel_proc_l6", + "text": "对应位置安装这套部件,使阵列升级至F6。$(br)每大小提供:$(br)$(a)└ +144并行数$(br)└ +144样板位" + }, + { + "type": "texttl", + "text": "启动超频时:$(br)$(a)└ +192并行数$(br)└ +144样板位$(br)$(c)└ x8能量消耗|不叠加|$(br)└ -4%总并行数$(br)$()启动主动冷却与超频时:$(br)$(a)└ +192并行数$(br)└ +144样板位" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/f9.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/f9.json new file mode 100644 index 00000000..740e588b --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/f9.json @@ -0,0 +1,18 @@ +{ + "name": "ECO-F9", + "icon": "novaeng_core:extendable_fabricator_subsystem_l9", + "category": "novaeng_core:eco_ae/factum", + "sortnum": 2, + "pages": [ + { + "type": "2_ad", + "item1": "novaeng_core:extendable_fabricator_subsystem_l9", + "item2": "novaeng_core:efabricator_parallel_proc_l9", + "text": "对应位置安装这套部件,使阵列升级至F4。$(br)每大小提供:$(br)$(a)└ +512并行数$(br)└ +144样板位" + }, + { + "type": "texttl", + "text": "启动超频时:$(br)$(a)└ +768并行数$(br)└ +144样板位$(br)$(c)└ x16能量消耗|不叠加|$(br)└ -6%总并行数$(br)$()启动主动冷却与超频时:$(br)$(a)└ +768并行数$(br)└ +144样板位" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/fixum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/fixum.json new file mode 100644 index 00000000..a87c4879 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/fixum.json @@ -0,0 +1,27 @@ +{ + "name": "安装指南", + "icon": "redstonearsenal:tool.wrench_flux", + "category": "novaeng_core:eco_ae/factum", + "sortnum": 0, + "pages": [ + { + "type": "1", + "item": "novaeng_core:extendable_fabricator_subsystem_l4", + "text": "升级版的分子装配室,包含样板搜索器。$(br)模块化设计,不同等级的结构相同,只有部件等级不同,因此安装方法通用。$(br)JEI查询控制器配方,在“结构预览”一栏能看到结构图。$(br)调整至合适大小后点击“投影至世界”。" + }, + { + "type": "image", + "images": [ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis.png" + ], + "text": "$(6)注意:最大大小12,大部分方块有方向要求" + }, + { + "type": "2_com", + "item1": "novaeng_core:efabricator_pattern_bus", + "text1": "将样板放入LD样板总线,支持流体装配室样板", + "item2": "novaeng_core:efabricator_me_channel", + "text2": "该方块用于连接AE线缆,使EF如同分子装配室一样接入AE。" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/gelatum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/gelatum.json new file mode 100644 index 00000000..ec5e6e5b --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/factum/gelatum.json @@ -0,0 +1,28 @@ +{ + "name": "超频与冷却系统", + "icon": "ic2:overclocked_heat_vent", + "category": "novaeng_core:eco_ae/factum", + "sortnum": 1, + "pages": [ + { + "type": "image", + "images": [ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis_facti.png" + ] + }, + { + "type": "texttl", + "text": "红框处是超频开关。超频效果:$(br)$(a)+并行数$(br)$(c)-百分比减少总并行数$(br)$(c)+能量消耗$(br)蓝框处是冷却系统开关,冷却系统效果:$(br)$(a)-消除超频的负面效果$(br)$(a)+溢出的并行将减少工作时间" + }, + { + "type": "image", + "images": [ + "terminalis:eco_ae/manualis_gelati_facti.png" + ] + }, + { + "type": "texttl", + "text": "蓝色口输入冷却液,红色口输出废液,可用的冷却液具体参数如下:$(br)1mB水→1mB蒸气 -15热量$(br)1mB碎冰→1mB水 -30热量$(br)1mB IC2冷却液→1mB IC2热冷却液 -90热量$(br)1mB液氦→320mB氦 -170热量$(br)1mB液氮→320mB氮 -190热量$(br)1mB极寒之凛冰→ -240热量" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/lectum/fixum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/lectum/fixum.json new file mode 100644 index 00000000..4dd5c457 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/lectum/fixum.json @@ -0,0 +1,34 @@ +{ + "name": "安装指南", + "icon": "redstonearsenal:tool.wrench_flux", + "category": "novaeng_core:eco_ae/lectum", + "sortnum": 0, + "pages": [ + { + "type": "1", + "item": "novaeng_core:extendable_digital_storage_subsystem_l4", + "text": "升级版的驱动器,只能使用容量极高的专用存储矩阵。$(br)模块化设计,不同等级的结构相同,只有部件等级不同,因此安装方法通用。$(br)JEI查询控制器配方,在“结构预览”一栏能看到结构图。$(br)调整至合适大小后点击“投影至世界”。" + }, + { + "type": "image", + "images": [ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis.png" + ], + "text": "$(6)注意:大小上限为12,大部分方块有方向要求" + }, + { + "type": "2_com", + "item1": "novaeng_core:estorage_cell_drive", + "text1": "搭建完成后,手持存储矩阵,SHIFT右键LD以安装", + "item2": "novaeng_core:estorage_me_channel", + "text2": "该方块用于连接AE线缆,使EL如同驱动器一样接入AE。" + }, + { + "type": "image", + "images":[ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis_lecti.png" + ], + "text": "上:空的驱动器(左)和安装元件后(右)$(br)下:连接线缆的LC" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/lectum/l4.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/lectum/l4.json new file mode 100644 index 00000000..523bcf92 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/lectum/l4.json @@ -0,0 +1,21 @@ +{ + "name": "ECO-L4", + "icon": "novaeng_core:estorage_cell_item_16m", + "category": "novaeng_core:eco_ae/lectum", + "sortnum": 1, + "pages": [ + { + "type": "2_ad", + "item1": "novaeng_core:estorage_energy_cell_l4", + "item2": "novaeng_core:extendable_digital_storage_subsystem_l4", + "text": "对应位置安装这套部件,使阵列支持LE4级存储元件。" + }, + { + "type": "2_com", + "item1": "novaeng_core:estorage_cell_item_16m", + "text1": "容量:$(a)315类型 524288K个物品", + "item2": "novaeng_core:estorage_cell_fluid_16m", + "text2": "容量:$(b)25类型 524288K桶液体" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/lectum/l6.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/lectum/l6.json new file mode 100644 index 00000000..67640dab --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/lectum/l6.json @@ -0,0 +1,21 @@ +{ + "name": "ECO-L6", + "icon": "novaeng_core:estorage_cell_item_16m", + "category": "novaeng_core:eco_ae/lectum", + "sortnum": 2, + "pages": [ + { + "type": "2_ad", + "item1": "novaeng_core:estorage_energy_cell_l6", + "item2": "novaeng_core:extendable_digital_storage_subsystem_l6", + "text": "对应位置安装这套部件,使阵列最高支持LE6级存储元件。" + }, + { + "type": "2_com", + "item1": "novaeng_core:estorage_cell_item_64m", + "text1": "容量:$(a)315类型 8388608K个物品", + "item2": "novaeng_core:estorage_cell_fluid_64m", + "text2": "容量:$(b)25类型 8388608K桶液体" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/lectum/l9.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/lectum/l9.json new file mode 100644 index 00000000..c451ae9d --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/eco_ae/lectum/l9.json @@ -0,0 +1,21 @@ +{ + "name": "ECO-L9", + "icon": "novaeng_core:estorage_cell_item_16m", + "category": "novaeng_core:eco_ae/lectum", + "sortnum": 3, + "pages": [ + { + "type": "2_ad", + "item1": "novaeng_core:estorage_energy_cell_l9", + "item2": "novaeng_core:extendable_digital_storage_subsystem_l9", + "text": "对应位置安装这套部件,使阵列支持最高LE9级存储元件。" + }, + { + "type": "2_com", + "item1": "novaeng_core:estorage_cell_item_256m", + "text1": "容量:$(a)315类型 134217728K个物品", + "item2": "novaeng_core:estorage_cell_fluid_256m", + "text2": "容量:$(b)25类型 134217728K桶流体" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/hypernet/centrum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/hypernet/centrum.json new file mode 100644 index 00000000..f17754f2 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/hypernet/centrum.json @@ -0,0 +1,29 @@ +{ + "name": "初始阶段", + "icon": "redstonearsenal:tool.wrench_flux", + "category": "novaeng_core:hypernet", + "sortnum": 0, + "pages": [ + { + "type": "texttl", + "text": "Hypernet用于算力(单位TFloPs,千亿次浮点运算每秒)的生产与发配。算力用于解锁科技以及维持高级机器运行。" + }, + { + "type": "1", + "item": "contenttweaker:hypernet_connect_card", + "text": "密钥卡用于设备联网。$(br)右键网络中心控制器以储存配置,之后右键其他机器以连接,连接后卡内的配置不会清空。$(br)通常每个人能得到两张密钥卡,一张放入研究终端,一张用于设备连接。$(br)第二张密钥卡在获得网络中心后从任务书获得。" + }, + { + "type": "1", + "item": "modularmachinery:computation_center_t1_factory_controller", + "text": "网络中心用于创建Hypernet,每个网络限一个。$(br)不同等级网络中心提供不同的带宽上限与连接上限:$(br)带宽上限:$(a)400T(1级)$(9)5P(2级)$(d)700P(3级)$(br)$()连接上限:$(a)30(1级)$(9)90(2级)$(br)$(d)180(3级)" + }, + { + "type": "3", + "item1": "contenttweaker:industrial_circuit_v1", + "item2": "contenttweaker:industrial_circuit_v2", + "item3": "contenttweaker:industrial_circuit_v3", + "text": "网络中心有耐久,耗尽时无法运行,需要用以上三种电路修复。$(br)$(e)只能使用小于等于网络中心等级的电路。$(br)$(a)+1000耐久(1级)$(br)$(9)+4000耐久(2级)$(br)$(6)+150000耐久(3级)" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/hypernet/nascari.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/hypernet/nascari.json new file mode 100644 index 00000000..14a82514 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/hypernet/nascari.json @@ -0,0 +1,31 @@ +{ + "name": "算力生产", + "icon": "contenttweaker:hypernet_cpu_t1", + "category": "novaeng_core:hypernet", + "sortnum": 1, + "pages": [ + { + "type": "2_com", + "item1": "modularmachinery:data_processor_t1_factory_controller", + "text1": "算力由计算机提供,计算机会按需调节耗能。", + "item2": "modularmachinery:blockupgradebus", + "text2": "模块总线用于安装硬件,高等级有更多槽位。" + }, + { + "type": "texttl", + "text": "每T算力会产生2HU热量,但每台计算机的散热有限,超过上限会积累热量导致无法运行。$(br)2级及以上计算机可以使用碎冰、液氮或极寒之凛冰辅助冷却,但仍然有上限。$(br)因此每台计算机能承担的最高算力:$(a)20T(1级)$(9)2P(2级)$(d)24P(3级)$(c)700P(4级)" + }, + { + "type": "2_com", + "item1": "contenttweaker:hypernet_cpu_t1", + "text1": "CPU生产算力,工作时会消耗耐久,耗尽后不产生算力。$(br)提供算力:$(br)$(a)1T(1级)$(9)5T(2级)$(br)$(d)60T(3级)$(c)675T(4级)", + "item2": "contenttweaker:hypernet_gpu_t1", + "text2": "GPU提供远多于CPU的算力,但合成需要高一级的CPU,且耐久低于同级CPU。$(br)提供算力:$(br)$(a)25T(1级)$(9)375T(2级)$(br)$(d)5P(3级)$(d)700P(核心)" + }, + { + "type": "1", + "item": "contenttweaker:hypernet_ram_t1", + "text": "内存条提供本机算力上限,没有内存条的计算机无法提供算力。同样有耐久。$(br)算力上限:$(br)$(a)2T(1级)$(br)$(9)10T(2级)$(br)$(d)125T(3级)$(br)$(6)1.2P(4级)$(br)$(c)12.5P(5级)$(d)700P(核心)" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/hypernet/scitum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/hypernet/scitum.json new file mode 100644 index 00000000..de5910ad --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/entries/hypernet/scitum.json @@ -0,0 +1,20 @@ +{ + "name": "科研项目", + "icon": "botania:vial", + "category": "novaeng_core:hypernet", + "sortnum": 2, + "pages": [ + { + "type": "3", + "item1": "modularmachinery:research_station_t1_factory_controller", + "item2": "modularmachinery:research_station_t2_factory_controller", + "item3": "modularmachinery:research_station_t3_factory_controller", + "text": "研究站用于进行科研项目,每个研究站能进行1个项目,不可排队。$(br)高难度的研究需要高级的研究站。研究站难度上限:$(a)7.9(1级)$(9)9.9(2级)$(c)14.1(3级)" + }, + { + "type": "1", + "item": "modularmachinery:database_t1_factory_controller", + "text": "数据库用于存储已经研究和正在研究的科技,容量20。$(br)挖下控制器不保留存储的科技。$(br)使用科技的设备需要与数据库连接至同一网络。" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/1.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/1.json new file mode 100644 index 00000000..8dc7ba39 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/1.json @@ -0,0 +1,23 @@ +{ + "components": [ + { + "type": "header", + "text": "#header", + "x": 0, + "y": -5 + }, + { + "type": "item", + "item": "#item", + "framed": true, + "x": 10, + "y": 5 + }, + { + "type": "text", + "text": "#text", + "x": 0, + "y": 25 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/2_ad.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/2_ad.json new file mode 100644 index 00000000..afd64a95 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/2_ad.json @@ -0,0 +1,30 @@ +{ + "components": [ + { + "type": "header", + "text": "#header", + "x": 0, + "y": -5 + }, + { + "type": "item", + "item": "#item1", + "framed": true, + "x": 10, + "y": 5 + }, + { + "type": "item", + "item": "#item2", + "framed": true, + "x": 30, + "y": 5 + }, + { + "type": "text", + "text": "#text", + "x": 0, + "y": 25 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/2_com.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/2_com.json new file mode 100644 index 00000000..0a971846 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/2_com.json @@ -0,0 +1,36 @@ +{ + "components": [ + { + "type": "header", + "text": "#header", + "x": 0, + "y": -5 + }, + { + "type": "item", + "item": "#item1", + "framed": true, + "x": 10, + "y": 5 + }, + { + "type": "text", + "text": "#text1", + "x": 0, + "y": 25 + }, + { + "type": "item", + "item": "#item2", + "framed": true, + "x": 10, + "y": 75 + }, + { + "type": "text", + "text": "#text2", + "x": 0, + "y": 95 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/3.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/3.json new file mode 100644 index 00000000..5aedc841 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/3.json @@ -0,0 +1,37 @@ +{ + "components": [ + { + "type": "header", + "text": "#header", + "x": 0, + "y": -5 + }, + { + "type": "item", + "item": "#item1", + "framed": true, + "x": 10, + "y": 5 + }, + { + "type": "item", + "item": "#item2", + "framed": true, + "x": 30, + "y": 5 + }, + { + "type": "item", + "item": "#item3", + "framed": true, + "x": 50, + "y": 5 + }, + { + "type": "text", + "text": "#text", + "x": 0, + "y": 25 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/texttl.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/texttl.json new file mode 100644 index 00000000..79af5999 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/en_us/templates/texttl.json @@ -0,0 +1,16 @@ +{ + "components": [ + { + "type": "header", + "text": "#header", + "x": 0, + "y": 5 + }, + { + "type": "text", + "text": "#text", + "x": 0, + "y": 15 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/eco_ae.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/eco_ae.json new file mode 100644 index 00000000..25b0d682 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/eco_ae.json @@ -0,0 +1,6 @@ +{ + "name": "§b先进AE设备", + "description": "新星工程开发的升级版AE", + "icon": "appliedenergistics2:controller", + "sortnum": 0 +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/eco_ae/computatum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/eco_ae/computatum.json new file mode 100644 index 00000000..00733921 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/eco_ae/computatum.json @@ -0,0 +1,7 @@ +{ + "name": "§bECO-C计算子系统", + "description": "升级版合成处理器", + "icon": "novaeng_core:extendable_calculator_subsystem_l4", + "sortnum": 2, + "parent": "novaeng_core:eco_ae" +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/eco_ae/factum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/eco_ae/factum.json new file mode 100644 index 00000000..6538e67b --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/eco_ae/factum.json @@ -0,0 +1,7 @@ +{ + "name": "§bECO-F合成子系统", + "description": "升级版分子装配室", + "icon": "novaeng_core:extendable_fabricator_subsystem_l4", + "sortnum": 1, + "parent": "novaeng_core:eco_ae" +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/eco_ae/lectum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/eco_ae/lectum.json new file mode 100644 index 00000000..42cc8046 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/eco_ae/lectum.json @@ -0,0 +1,7 @@ +{ + "name": "§bECO-L存储阵列", + "description": "升级版驱动器", + "icon": "novaeng_core:extendable_digital_storage_subsystem_l4", + "sortnum": 0, + "parent": "novaeng_core:eco_ae" +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/hypernet.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/hypernet.json new file mode 100644 index 00000000..000f5506 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/categories/hypernet.json @@ -0,0 +1,6 @@ +{ + "name": "§bHypernet网络", + "description": "算力生产与使用", + "icon": "contenttweaker:hypernet_connect_card", + "sortnum": 1 +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/c4.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/c4.json new file mode 100644 index 00000000..e38b94d1 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/c4.json @@ -0,0 +1,20 @@ +{ + "name": "ECO-C4", + "icon": "novaeng_core:ecalculator_cell_64m", + "category": "novaeng_core:eco_ae/computatum", + "sortnum": 2, + "pages": [ + { + "type": "3", + "item1": "novaeng_core:extendable_calculator_subsystem_l4", + "item2": "novaeng_core:ecalculator_thread_core_l4", + "item3": "novaeng_core:ecalculator_parallel_proc_l4", + "text": "对应位置安装这套部件,使阵列升级至C4。$(br)每大小提供:$(br)$(a)└ +2晶阵槽位$(br)└ +128并行数$(br)└ +1线程/+2超线程" + }, + { + "type": "texttl", + "text": "7355608$(br)$()你不知为何想起了这样的数字" + } + + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/c6.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/c6.json new file mode 100644 index 00000000..0c3f4d0e --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/c6.json @@ -0,0 +1,15 @@ +{ + "name": "ECO-C6", + "icon": "novaeng_core:ecalculator_cell_1024m", + "category": "novaeng_core:eco_ae/computatum", + "sortnum": 2, + "pages": [ + { + "type": "3", + "item1": "novaeng_core:extendable_calculator_subsystem_l6", + "item2": "novaeng_core:ecalculator_thread_core_l6", + "item3": "novaeng_core:ecalculator_parallel_proc_l6", + "text": "对应位置安装这套部件,使阵列升级至C6。$(br)每大小提供:$(br)$(a)└ +2晶阵槽位$(br)└ +384并行数$(br)└ +2线程/+4超线程" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/c9.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/c9.json new file mode 100644 index 00000000..17009888 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/c9.json @@ -0,0 +1,15 @@ +{ + "name": "ECO-C9", + "icon": "novaeng_core:ecalculator_cell_16384m", + "category": "novaeng_core:eco_ae/computatum", + "sortnum": 2, + "pages": [ + { + "type": "3", + "item1": "novaeng_core:extendable_calculator_subsystem_l9", + "item2": "novaeng_core:ecalculator_thread_core_l9", + "item3": "novaeng_core:ecalculator_parallel_proc_l9", + "text": "对应位置安装这套部件,使阵列升级至C9。$(br)每大小提供:$(br)$(a)└ +2晶阵槽位$(br)└ +1152并行数$(br)└ +4线程/+1线程 & 8超线程" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/explicatum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/explicatum.json new file mode 100644 index 00000000..32c091c1 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/explicatum.json @@ -0,0 +1,19 @@ +{ + "name": "使用说明", + "icon": "appliedenergistics2:part:180", + "category": "novaeng_core:eco_ae/computatum", + "sortnum": 1, + "pages": [ + { + "type": "texttl", + "text": "待机时,只会显示一个CPU,但EC会根据任务数量,按需生成CPU。$(br)所有字节与并行数也将共享,按需分配。" + }, + { + "type": "2_com", + "item1": "novaeng_core:ecalculator_thread_core_l4", + "text1": "线程核心提供线程,线程数决定最多能存在的CPU数量。", + "item2": "novaeng_core:ecalculator_thread_core_hyper_l4", + "text2": "每个超线程核心能提供两倍于普通核心的线程数,但每个线程将占用10%额外字节。" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/fixum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/fixum.json new file mode 100644 index 00000000..aa906907 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/computatum/fixum.json @@ -0,0 +1,27 @@ +{ + "name": "安装指南", + "icon": "redstonearsenal:tool.wrench_flux", + "category": "novaeng_core:eco_ae/computatum", + "sortnum": 0, + "pages": [ + { + "type": "1", + "item": "novaeng_core:extendable_calculator_subsystem_l4", + "text": "升级版的合成处理器$(br)模块化设计,不同等级的结构相同,只有部件等级不同,因此安装方法通用。$(br)JEI查询控制器配方,在“结构预览”一栏能看到结构图。$(br)调整至合适大小后点击“投影至世界”。" + }, + { + "type": "image", + "images": [ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis.png" + ], + "text": "$(6)注意:最大大小12,大部分方块有方向要求" + }, + { + "type": "2_com", + "item1": "novaeng_core:ecalculator_cell_64m", + "text1": "SHIFT右键将CE闪存晶阵放入驱动器", + "item2": "novaeng_core:ecalculator_me_channel", + "text2": "该方块用于连接AE线缆,使EC如同合成处理器一样接入AE。" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/explicatum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/explicatum.json new file mode 100644 index 00000000..a9685e85 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/explicatum.json @@ -0,0 +1,16 @@ +{ + "name": "技术细节", + "icon": "modularrouters:augment:5", + "category": "novaeng_core:eco_ae/factum", + "sortnum": 3, + "pages": [ + { + "type": "texttl", + "text": "$(e)注意:本篇介绍了详细的工作机制,但它不是必会的。$(br)对多数用户而言,只需要不断换上更好的部件,不停供应冷却剂即可。" + }, + { + "type": "texttl", + "text": "等待更新(没写完捏)" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/explorator.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/explorator.json new file mode 100644 index 00000000..1ce00f48 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/explorator.json @@ -0,0 +1,28 @@ +{ + "name": "放入样板与样板管理器", + "icon": "artisanworktables:artisans_lens_wood", + "category": "novaeng_core:eco_ae/factum", + "sortnum": 1, + "pages": [ + { + "type": "image", + "images": [ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis_facti_3.png" + ] + }, + { + "type": "texttl", + "text": "你有三种方法存取样板:$(br)-样板终端点击此按钮,写好的样板会送至样板总线$(br)-在控制器处,点击按钮进入样板管理器,将样板拖入结果框$(br)-手动放至样板总线" + }, + { + "type": "image", + "images": [ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis_facti_2.png" + ] + }, + { + "type": "texttl", + "text": "样板管理器亦能根据原料与产物搜索对应样板。" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/f4.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/f4.json new file mode 100644 index 00000000..98b15956 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/f4.json @@ -0,0 +1,18 @@ +{ + "name": "ECO-F4", + "icon": "novaeng_core:extendable_fabricator_subsystem_l4", + "category": "novaeng_core:co_ae/factum", + "sortnum": 2, + "pages": [ + { + "type": "2_ad", + "item1": "novaeng_core:extendable_fabricator_subsystem_l4", + "item2": "novaeng_core:efabricator_parallel_proc_l4", + "text": "对应位置安装这套部件,使阵列升级至F4。$(br)每大小提供:$(br)$(a)└ +48并行数$(br)└ +144样板位" + }, + { + "type": "texttl", + "text": "启动超频时:$(br)$(a)└ +64并行数$(br)└ +144样板位$(br)$(c)└ x4能量消耗|不叠加$(br)└ -2%总并行数$(br)$()启动主动冷却与超频时:$(br)$(a)└ +64并行数$(br)└ +144样板位" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/f6.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/f6.json new file mode 100644 index 00000000..34770f52 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/f6.json @@ -0,0 +1,18 @@ +{ + "name": "ECO-F6", + "icon": "novaeng_core:extendable_fabricator_subsystem_l6", + "category": "novaeng_core:eco_ae/factum", + "sortnum": 2, + "pages": [ + { + "type": "2_ad", + "item1": "novaeng_core:extendable_fabricator_subsystem_l6", + "item2": "novaeng_core:efabricator_parallel_proc_l6", + "text": "对应位置安装这套部件,使阵列升级至F6。$(br)每大小提供:$(br)$(a)└ +144并行数$(br)└ +144样板位" + }, + { + "type": "texttl", + "text": "启动超频时:$(br)$(a)└ +192并行数$(br)└ +144样板位$(br)$(c)└ x8能量消耗|不叠加|$(br)└ -4%总并行数$(br)$()启动主动冷却与超频时:$(br)$(a)└ +192并行数$(br)└ +144样板位" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/f9.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/f9.json new file mode 100644 index 00000000..740e588b --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/f9.json @@ -0,0 +1,18 @@ +{ + "name": "ECO-F9", + "icon": "novaeng_core:extendable_fabricator_subsystem_l9", + "category": "novaeng_core:eco_ae/factum", + "sortnum": 2, + "pages": [ + { + "type": "2_ad", + "item1": "novaeng_core:extendable_fabricator_subsystem_l9", + "item2": "novaeng_core:efabricator_parallel_proc_l9", + "text": "对应位置安装这套部件,使阵列升级至F4。$(br)每大小提供:$(br)$(a)└ +512并行数$(br)└ +144样板位" + }, + { + "type": "texttl", + "text": "启动超频时:$(br)$(a)└ +768并行数$(br)└ +144样板位$(br)$(c)└ x16能量消耗|不叠加|$(br)└ -6%总并行数$(br)$()启动主动冷却与超频时:$(br)$(a)└ +768并行数$(br)└ +144样板位" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/fixum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/fixum.json new file mode 100644 index 00000000..a87c4879 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/fixum.json @@ -0,0 +1,27 @@ +{ + "name": "安装指南", + "icon": "redstonearsenal:tool.wrench_flux", + "category": "novaeng_core:eco_ae/factum", + "sortnum": 0, + "pages": [ + { + "type": "1", + "item": "novaeng_core:extendable_fabricator_subsystem_l4", + "text": "升级版的分子装配室,包含样板搜索器。$(br)模块化设计,不同等级的结构相同,只有部件等级不同,因此安装方法通用。$(br)JEI查询控制器配方,在“结构预览”一栏能看到结构图。$(br)调整至合适大小后点击“投影至世界”。" + }, + { + "type": "image", + "images": [ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis.png" + ], + "text": "$(6)注意:最大大小12,大部分方块有方向要求" + }, + { + "type": "2_com", + "item1": "novaeng_core:efabricator_pattern_bus", + "text1": "将样板放入LD样板总线,支持流体装配室样板", + "item2": "novaeng_core:efabricator_me_channel", + "text2": "该方块用于连接AE线缆,使EF如同分子装配室一样接入AE。" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/gelatum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/gelatum.json new file mode 100644 index 00000000..ec5e6e5b --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/factum/gelatum.json @@ -0,0 +1,28 @@ +{ + "name": "超频与冷却系统", + "icon": "ic2:overclocked_heat_vent", + "category": "novaeng_core:eco_ae/factum", + "sortnum": 1, + "pages": [ + { + "type": "image", + "images": [ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis_facti.png" + ] + }, + { + "type": "texttl", + "text": "红框处是超频开关。超频效果:$(br)$(a)+并行数$(br)$(c)-百分比减少总并行数$(br)$(c)+能量消耗$(br)蓝框处是冷却系统开关,冷却系统效果:$(br)$(a)-消除超频的负面效果$(br)$(a)+溢出的并行将减少工作时间" + }, + { + "type": "image", + "images": [ + "terminalis:eco_ae/manualis_gelati_facti.png" + ] + }, + { + "type": "texttl", + "text": "蓝色口输入冷却液,红色口输出废液,可用的冷却液具体参数如下:$(br)1mB水→1mB蒸气 -15热量$(br)1mB碎冰→1mB水 -30热量$(br)1mB IC2冷却液→1mB IC2热冷却液 -90热量$(br)1mB液氦→320mB氦 -170热量$(br)1mB液氮→320mB氮 -190热量$(br)1mB极寒之凛冰→ -240热量" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/lectum/fixum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/lectum/fixum.json new file mode 100644 index 00000000..4dd5c457 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/lectum/fixum.json @@ -0,0 +1,34 @@ +{ + "name": "安装指南", + "icon": "redstonearsenal:tool.wrench_flux", + "category": "novaeng_core:eco_ae/lectum", + "sortnum": 0, + "pages": [ + { + "type": "1", + "item": "novaeng_core:extendable_digital_storage_subsystem_l4", + "text": "升级版的驱动器,只能使用容量极高的专用存储矩阵。$(br)模块化设计,不同等级的结构相同,只有部件等级不同,因此安装方法通用。$(br)JEI查询控制器配方,在“结构预览”一栏能看到结构图。$(br)调整至合适大小后点击“投影至世界”。" + }, + { + "type": "image", + "images": [ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis.png" + ], + "text": "$(6)注意:大小上限为12,大部分方块有方向要求" + }, + { + "type": "2_com", + "item1": "novaeng_core:estorage_cell_drive", + "text1": "搭建完成后,手持存储矩阵,SHIFT右键LD以安装", + "item2": "novaeng_core:estorage_me_channel", + "text2": "该方块用于连接AE线缆,使EL如同驱动器一样接入AE。" + }, + { + "type": "image", + "images":[ + "novaeng_core:textures/gui/terminalis/eco_ae/manualis_lecti.png" + ], + "text": "上:空的驱动器(左)和安装元件后(右)$(br)下:连接线缆的LC" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/lectum/l4.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/lectum/l4.json new file mode 100644 index 00000000..523bcf92 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/lectum/l4.json @@ -0,0 +1,21 @@ +{ + "name": "ECO-L4", + "icon": "novaeng_core:estorage_cell_item_16m", + "category": "novaeng_core:eco_ae/lectum", + "sortnum": 1, + "pages": [ + { + "type": "2_ad", + "item1": "novaeng_core:estorage_energy_cell_l4", + "item2": "novaeng_core:extendable_digital_storage_subsystem_l4", + "text": "对应位置安装这套部件,使阵列支持LE4级存储元件。" + }, + { + "type": "2_com", + "item1": "novaeng_core:estorage_cell_item_16m", + "text1": "容量:$(a)315类型 524288K个物品", + "item2": "novaeng_core:estorage_cell_fluid_16m", + "text2": "容量:$(b)25类型 524288K桶液体" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/lectum/l6.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/lectum/l6.json new file mode 100644 index 00000000..67640dab --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/lectum/l6.json @@ -0,0 +1,21 @@ +{ + "name": "ECO-L6", + "icon": "novaeng_core:estorage_cell_item_16m", + "category": "novaeng_core:eco_ae/lectum", + "sortnum": 2, + "pages": [ + { + "type": "2_ad", + "item1": "novaeng_core:estorage_energy_cell_l6", + "item2": "novaeng_core:extendable_digital_storage_subsystem_l6", + "text": "对应位置安装这套部件,使阵列最高支持LE6级存储元件。" + }, + { + "type": "2_com", + "item1": "novaeng_core:estorage_cell_item_64m", + "text1": "容量:$(a)315类型 8388608K个物品", + "item2": "novaeng_core:estorage_cell_fluid_64m", + "text2": "容量:$(b)25类型 8388608K桶液体" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/lectum/l9.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/lectum/l9.json new file mode 100644 index 00000000..c451ae9d --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/eco_ae/lectum/l9.json @@ -0,0 +1,21 @@ +{ + "name": "ECO-L9", + "icon": "novaeng_core:estorage_cell_item_16m", + "category": "novaeng_core:eco_ae/lectum", + "sortnum": 3, + "pages": [ + { + "type": "2_ad", + "item1": "novaeng_core:estorage_energy_cell_l9", + "item2": "novaeng_core:extendable_digital_storage_subsystem_l9", + "text": "对应位置安装这套部件,使阵列支持最高LE9级存储元件。" + }, + { + "type": "2_com", + "item1": "novaeng_core:estorage_cell_item_256m", + "text1": "容量:$(a)315类型 134217728K个物品", + "item2": "novaeng_core:estorage_cell_fluid_256m", + "text2": "容量:$(b)25类型 134217728K桶流体" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/hypernet/centrum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/hypernet/centrum.json new file mode 100644 index 00000000..f17754f2 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/hypernet/centrum.json @@ -0,0 +1,29 @@ +{ + "name": "初始阶段", + "icon": "redstonearsenal:tool.wrench_flux", + "category": "novaeng_core:hypernet", + "sortnum": 0, + "pages": [ + { + "type": "texttl", + "text": "Hypernet用于算力(单位TFloPs,千亿次浮点运算每秒)的生产与发配。算力用于解锁科技以及维持高级机器运行。" + }, + { + "type": "1", + "item": "contenttweaker:hypernet_connect_card", + "text": "密钥卡用于设备联网。$(br)右键网络中心控制器以储存配置,之后右键其他机器以连接,连接后卡内的配置不会清空。$(br)通常每个人能得到两张密钥卡,一张放入研究终端,一张用于设备连接。$(br)第二张密钥卡在获得网络中心后从任务书获得。" + }, + { + "type": "1", + "item": "modularmachinery:computation_center_t1_factory_controller", + "text": "网络中心用于创建Hypernet,每个网络限一个。$(br)不同等级网络中心提供不同的带宽上限与连接上限:$(br)带宽上限:$(a)400T(1级)$(9)5P(2级)$(d)700P(3级)$(br)$()连接上限:$(a)30(1级)$(9)90(2级)$(br)$(d)180(3级)" + }, + { + "type": "3", + "item1": "contenttweaker:industrial_circuit_v1", + "item2": "contenttweaker:industrial_circuit_v2", + "item3": "contenttweaker:industrial_circuit_v3", + "text": "网络中心有耐久,耗尽时无法运行,需要用以上三种电路修复。$(br)$(e)只能使用小于等于网络中心等级的电路。$(br)$(a)+1000耐久(1级)$(br)$(9)+4000耐久(2级)$(br)$(6)+150000耐久(3级)" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/hypernet/nascari.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/hypernet/nascari.json new file mode 100644 index 00000000..14a82514 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/hypernet/nascari.json @@ -0,0 +1,31 @@ +{ + "name": "算力生产", + "icon": "contenttweaker:hypernet_cpu_t1", + "category": "novaeng_core:hypernet", + "sortnum": 1, + "pages": [ + { + "type": "2_com", + "item1": "modularmachinery:data_processor_t1_factory_controller", + "text1": "算力由计算机提供,计算机会按需调节耗能。", + "item2": "modularmachinery:blockupgradebus", + "text2": "模块总线用于安装硬件,高等级有更多槽位。" + }, + { + "type": "texttl", + "text": "每T算力会产生2HU热量,但每台计算机的散热有限,超过上限会积累热量导致无法运行。$(br)2级及以上计算机可以使用碎冰、液氮或极寒之凛冰辅助冷却,但仍然有上限。$(br)因此每台计算机能承担的最高算力:$(a)20T(1级)$(9)2P(2级)$(d)24P(3级)$(c)700P(4级)" + }, + { + "type": "2_com", + "item1": "contenttweaker:hypernet_cpu_t1", + "text1": "CPU生产算力,工作时会消耗耐久,耗尽后不产生算力。$(br)提供算力:$(br)$(a)1T(1级)$(9)5T(2级)$(br)$(d)60T(3级)$(c)675T(4级)", + "item2": "contenttweaker:hypernet_gpu_t1", + "text2": "GPU提供远多于CPU的算力,但合成需要高一级的CPU,且耐久低于同级CPU。$(br)提供算力:$(br)$(a)25T(1级)$(9)375T(2级)$(br)$(d)5P(3级)$(d)700P(核心)" + }, + { + "type": "1", + "item": "contenttweaker:hypernet_ram_t1", + "text": "内存条提供本机算力上限,没有内存条的计算机无法提供算力。同样有耐久。$(br)算力上限:$(br)$(a)2T(1级)$(br)$(9)10T(2级)$(br)$(d)125T(3级)$(br)$(6)1.2P(4级)$(br)$(c)12.5P(5级)$(d)700P(核心)" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/hypernet/scitum.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/hypernet/scitum.json new file mode 100644 index 00000000..de5910ad --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/entries/hypernet/scitum.json @@ -0,0 +1,20 @@ +{ + "name": "科研项目", + "icon": "botania:vial", + "category": "novaeng_core:hypernet", + "sortnum": 2, + "pages": [ + { + "type": "3", + "item1": "modularmachinery:research_station_t1_factory_controller", + "item2": "modularmachinery:research_station_t2_factory_controller", + "item3": "modularmachinery:research_station_t3_factory_controller", + "text": "研究站用于进行科研项目,每个研究站能进行1个项目,不可排队。$(br)高难度的研究需要高级的研究站。研究站难度上限:$(a)7.9(1级)$(9)9.9(2级)$(c)14.1(3级)" + }, + { + "type": "1", + "item": "modularmachinery:database_t1_factory_controller", + "text": "数据库用于存储已经研究和正在研究的科技,容量20。$(br)挖下控制器不保留存储的科技。$(br)使用科技的设备需要与数据库连接至同一网络。" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/1.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/1.json new file mode 100644 index 00000000..8dc7ba39 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/1.json @@ -0,0 +1,23 @@ +{ + "components": [ + { + "type": "header", + "text": "#header", + "x": 0, + "y": -5 + }, + { + "type": "item", + "item": "#item", + "framed": true, + "x": 10, + "y": 5 + }, + { + "type": "text", + "text": "#text", + "x": 0, + "y": 25 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/2_ad.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/2_ad.json new file mode 100644 index 00000000..afd64a95 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/2_ad.json @@ -0,0 +1,30 @@ +{ + "components": [ + { + "type": "header", + "text": "#header", + "x": 0, + "y": -5 + }, + { + "type": "item", + "item": "#item1", + "framed": true, + "x": 10, + "y": 5 + }, + { + "type": "item", + "item": "#item2", + "framed": true, + "x": 30, + "y": 5 + }, + { + "type": "text", + "text": "#text", + "x": 0, + "y": 25 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/2_com.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/2_com.json new file mode 100644 index 00000000..0a971846 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/2_com.json @@ -0,0 +1,36 @@ +{ + "components": [ + { + "type": "header", + "text": "#header", + "x": 0, + "y": -5 + }, + { + "type": "item", + "item": "#item1", + "framed": true, + "x": 10, + "y": 5 + }, + { + "type": "text", + "text": "#text1", + "x": 0, + "y": 25 + }, + { + "type": "item", + "item": "#item2", + "framed": true, + "x": 10, + "y": 75 + }, + { + "type": "text", + "text": "#text2", + "x": 0, + "y": 95 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/3.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/3.json new file mode 100644 index 00000000..5aedc841 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/3.json @@ -0,0 +1,37 @@ +{ + "components": [ + { + "type": "header", + "text": "#header", + "x": 0, + "y": -5 + }, + { + "type": "item", + "item": "#item1", + "framed": true, + "x": 10, + "y": 5 + }, + { + "type": "item", + "item": "#item2", + "framed": true, + "x": 30, + "y": 5 + }, + { + "type": "item", + "item": "#item3", + "framed": true, + "x": 50, + "y": 5 + }, + { + "type": "text", + "text": "#text", + "x": 0, + "y": 25 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/texttl.json b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/texttl.json new file mode 100644 index 00000000..79af5999 --- /dev/null +++ b/src/main/resources/assets/novaeng_core/patchouli_books/eco_tl/zh_cn/templates/texttl.json @@ -0,0 +1,16 @@ +{ + "components": [ + { + "type": "header", + "text": "#header", + "x": 0, + "y": 5 + }, + { + "type": "text", + "text": "#text", + "x": 0, + "y": 15 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/0.png b/src/main/resources/assets/novaeng_core/textures/blocks/0.png index bf8d9aee..22944ace 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/0.png and b/src/main/resources/assets/novaeng_core/textures/blocks/0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/angel_block.png b/src/main/resources/assets/novaeng_core/textures/blocks/angel_block.png index 4952e7d8..470828db 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/angel_block.png and b/src/main/resources/assets/novaeng_core/textures/blocks/angel_block.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/assembly_table/computing_unit_assembly_table.png b/src/main/resources/assets/novaeng_core/textures/blocks/assembly_table/computing_unit_assembly_table.png index a70a7af6..cd822e08 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/assembly_table/computing_unit_assembly_table.png and b/src/main/resources/assets/novaeng_core/textures/blocks/assembly_table/computing_unit_assembly_table.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/assembly_table/computing_unit_assembly_table_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/assembly_table/computing_unit_assembly_table_off.png index 349ced5a..79e27d7e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/assembly_table/computing_unit_assembly_table_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/assembly_table/computing_unit_assembly_table_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l4_modules_assembled_parallel_molecules-ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l4_modules_assembled_parallel_molecules-ctm.png index a3a17dc7..a6ab72c1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l4_modules_assembled_parallel_molecules-ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l4_modules_assembled_parallel_molecules-ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l4_modules_assembled_parallel_molecules.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l4_modules_assembled_parallel_molecules.png index f9d45b12..7c1e3e5c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l4_modules_assembled_parallel_molecules.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l4_modules_assembled_parallel_molecules.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l6_modules_assembled_parallel_molecules-ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l6_modules_assembled_parallel_molecules-ctm.png index bec39fe6..832510a0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l6_modules_assembled_parallel_molecules-ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l6_modules_assembled_parallel_molecules-ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l6_modules_assembled_parallel_molecules.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l6_modules_assembled_parallel_molecules.png index 54250ffb..5710648a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l6_modules_assembled_parallel_molecules.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l6_modules_assembled_parallel_molecules.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l9_modules_assembled_parallel_molecules-ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l9_modules_assembled_parallel_molecules-ctm.png index 80ec1f28..9fb31d07 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l9_modules_assembled_parallel_molecules-ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l9_modules_assembled_parallel_molecules-ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l9_modules_assembled_parallel_molecules.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l9_modules_assembled_parallel_molecules.png index 37012f39..9a79f001 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l9_modules_assembled_parallel_molecules.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/l9_modules_assembled_parallel_molecules.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/led_static.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/led_static.png index 3d2ea84f..cbc0421a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/led_static.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/led_static.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_assembly_drivers_led/drivers_active.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_assembly_drivers_led/drivers_active.png index 7957cb2f..471f450a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_assembly_drivers_led/drivers_active.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_assembly_drivers_led/drivers_active.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_assembly_drivers_led/heat_dissipation_holes.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_assembly_drivers_led/heat_dissipation_holes.png index 61259df5..73312f83 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_assembly_drivers_led/heat_dissipation_holes.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_assembly_drivers_led/heat_dissipation_holes.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_assembly_matrix.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_assembly_matrix.png index 819e1f0b..d773c556 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_assembly_matrix.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_assembly_matrix.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_template_bus.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_template_bus.png index f39bc7e3..756a9603 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_template_bus.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_template_bus.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_template_bus_ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_template_bus_ctm.png index 08eb103a..5f436659 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_template_bus_ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/module_molecular_template_bus_ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_full.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_full.png index 5f6856ce..464f84f3 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_full.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_full.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_high.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_high.png index fe597610..60b00a85 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_high.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_high.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_low.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_low.png index 69725e08..25e96ec1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_low.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_low.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_mid.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_mid.png index 8f6689ca..6d7c068b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_mid.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_a_mid.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_full.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_full.png index 03765994..bece09b1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_full.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_full.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_high.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_high.png index 39a6879b..c4c73dd9 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_high.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_high.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_low.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_low.png index 9c8a9940..3aba24d0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_low.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_low.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_mid.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_mid.png index 59c74fc3..b7032d21 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_mid.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_b_mid.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_full.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_full.png index f0e16f2a..2fc7b981 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_full.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_full.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_high.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_high.png index c89f868c..1bed5b65 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_high.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_high.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_low.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_low.png index e5f2de25..da220b6a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_low.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_low.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_mid.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_mid.png index 4573fdda..c34d6a4c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_mid.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_capacitance_c_mid.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_fluid.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_fluid.png index 0b9a60a9..cf13c094 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_fluid.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_fluid.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_gas.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_gas.png new file mode 100644 index 00000000..91bae184 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_gas.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_gas.png.mcmeta b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_gas.png.mcmeta new file mode 100644 index 00000000..dba9565d --- /dev/null +++ b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_gas.png.mcmeta @@ -0,0 +1,10 @@ +{ + "ctm": { + "ctm_version": 1, + "layer": "BLOOM", + "gregtech": true, + "extra": { + "light": 15 + } + } +} diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_item.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_item.png index 276bdebf..d7814835 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_item.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_a0_off_item.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_fluid.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_fluid.png index d766f5bf..ab6a7e22 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_fluid.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_fluid.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_gas.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_gas.png new file mode 100644 index 00000000..fd89f187 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_gas.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_gas.png.mcmeta b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_gas.png.mcmeta new file mode 100644 index 00000000..dba9565d --- /dev/null +++ b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_gas.png.mcmeta @@ -0,0 +1,10 @@ +{ + "ctm": { + "ctm_version": 1, + "layer": "BLOOM", + "gregtech": true, + "extra": { + "light": 15 + } + } +} diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_item_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_item_e.png index 4ad8939f..00482625 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_item_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_b0_off_item_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_fluid.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_fluid.png index 8420b62a..28bfadc1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_fluid.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_fluid.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_gas.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_gas.png new file mode 100644 index 00000000..200cd9ce Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_gas.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_gas.png.mcmeta b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_gas.png.mcmeta new file mode 100644 index 00000000..dba9565d --- /dev/null +++ b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_gas.png.mcmeta @@ -0,0 +1,10 @@ +{ + "ctm": { + "ctm_version": 1, + "layer": "BLOOM", + "gregtech": true, + "extra": { + "light": 15 + } + } +} diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_item.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_item.png index 827825f4..7cad3118 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_item.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_drives_c0_off_item.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_mebus.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_mebus.png index d3b06429..d0568bd9 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_mebus.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_array_mebus.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a0_north_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a0_north_on.png index 520b8da4..ea3f61f8 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a0_north_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a0_north_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a0_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a0_west.png index f6cc1ba0..cfa01483 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a0_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a0_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a_north.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a_north.png index 98888535..c8995a85 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a_north.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a_north.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a_on.png index f5f286b0..301f5496 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a_west.png index b53e067f..e2e8dd91 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_a_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b0_north_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b0_north_on.png index d2e3394a..03c658b3 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b0_north_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b0_north_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b0_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b0_west.png index a2fe4a13..f0e5fb29 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b0_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b0_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b_north.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b_north.png index 5724d1a4..0b5888ff 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b_north.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b_north.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b_on.png index 4feebc00..d5370587 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b_west.png index 5aa9369a..bf689aeb 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_b_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c0_north_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c0_north_on.png index e44d79c9..992b30eb 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c0_north_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c0_north_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c0_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c0_west.png index 7a612eab..c6c47d54 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c0_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c0_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c_north.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c_north.png index f6e84a0f..e644b7d6 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c_north.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c_north.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c_on.png index 0f1f7542..444d7db4 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c_west.png index 7d886288..dd78331e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_c_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_west_v2.png b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_west_v2.png index c4261d7d..cfca4d05 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_west_v2.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bloom/storage_arrays_controller_west_v2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bus/data_bus.png b/src/main/resources/assets/novaeng_core/textures/blocks/bus/data_bus.png index 6cefa870..e3536353 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bus/data_bus.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bus/data_bus.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bus/dd_dd.png b/src/main/resources/assets/novaeng_core/textures/blocks/bus/dd_dd.png index baf98a97..07cb7a4b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bus/dd_dd.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bus/dd_dd.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bus/dd_ff.png b/src/main/resources/assets/novaeng_core/textures/blocks/bus/dd_ff.png index 263b8c06..ef62599d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bus/dd_ff.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bus/dd_ff.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bus/de_ff.png b/src/main/resources/assets/novaeng_core/textures/blocks/bus/de_ff.png index 3ef54cc5..dd0c2882 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bus/de_ff.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bus/de_ff.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bus/ee_ff.png b/src/main/resources/assets/novaeng_core/textures/blocks/bus/ee_ff.png index 586ac48f..7463d16b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bus/ee_ff.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bus/ee_ff.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bus/ff_ff_p1.png b/src/main/resources/assets/novaeng_core/textures/blocks/bus/ff_ff_p1.png index 60012667..a8ae40a9 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bus/ff_ff_p1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bus/ff_ff_p1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/bus/ff_ff_p2.png b/src/main/resources/assets/novaeng_core/textures/blocks/bus/ff_ff_p2.png index 1a3558da..61b2f63a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/bus/ff_ff_p2.png and b/src/main/resources/assets/novaeng_core/textures/blocks/bus/ff_ff_p2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_chassis-ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_chassis-ctm.png index 9070de10..db7db17d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_chassis-ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_chassis-ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_chassis.png b/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_chassis.png index c876e0c5..a3ef18b4 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_chassis.png and b/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_chassis.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_down-ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_down-ctm.png index f157e8af..2be813d6 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_down-ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_down-ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_down.png b/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_down.png index 45af55a4..80ed5690 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_down.png and b/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_down.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_top-ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_top-ctm.png index 1ae14fca..498d5299 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_top-ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_top-ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_top.png b/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_top.png index c01d786f..17d68669 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_top.png and b/src/main/resources/assets/novaeng_core/textures/blocks/carbon_fiber_structural_radiators_top.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/compute_cluster_control_terminal.png b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/compute_cluster_control_terminal.png index db938c93..4906a5a7 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/compute_cluster_control_terminal.png and b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/compute_cluster_control_terminal.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/compute_cluster_structure_shell.png b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/compute_cluster_structure_shell.png index 7ebaa9e4..a590b36a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/compute_cluster_structure_shell.png and b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/compute_cluster_structure_shell.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/io.png b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/io.png index e4454e0f..9641dffc 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/io.png and b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/io.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/blue_small_run.png b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/blue_small_run.png index 209e91e4..0251ac84 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/blue_small_run.png and b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/blue_small_run.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/green_small_run.png b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/green_small_run.png index 2965a041..f8f1fd4c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/green_small_run.png and b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/green_small_run.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/off.png b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/off.png index 7e5fc750..37df0d1a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/off_small.png b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/off_small.png index be307439..ac1eb33c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/off_small.png and b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/off_small.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/orange_small_run.png b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/orange_small_run.png index 24ee33b0..716601ef 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/orange_small_run.png and b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/led/orange_small_run.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/racks.png b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/racks.png index efa8da74..0b8ec6ff 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/racks.png and b/src/main/resources/assets/novaeng_core/textures/blocks/compute_units/racks.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/data_bus.png b/src/main/resources/assets/novaeng_core/textures/blocks/data_bus.png index a7615606..4f6d7bef 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/data_bus.png and b/src/main/resources/assets/novaeng_core/textures/blocks/data_bus.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_a1.png b/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_a1.png index 292179aa..01aa1f72 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_a1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_a1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_a2.png b/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_a2.png index 82d8fb35..d725cc5e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_a2.png and b/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_a2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_a3.png b/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_a3.png index 8e46c300..ae74c1a0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_a3.png and b/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_a3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_b.png b/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_b.png index 7c3aaf79..e8747bc3 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_b.png and b/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_b.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_c.png b/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_c.png index 2c969141..e998d39d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_c.png and b/src/main/resources/assets/novaeng_core/textures/blocks/data_bus_c.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/Insert_the_plug/Insert_the_plug.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/Insert_the_plug/Insert_the_plug.png index 7a983fde..a3798446 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/Insert_the_plug/Insert_the_plug.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/Insert_the_plug/Insert_the_plug.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/Insert_the_plug/Insert_the_plug_a1.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/Insert_the_plug/Insert_the_plug_a1.png index a5c5b6bc..3b5b7bcf 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/Insert_the_plug/Insert_the_plug_a1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/Insert_the_plug/Insert_the_plug_a1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/Insert_the_plug/Insert_the_plug_a2.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/Insert_the_plug/Insert_the_plug_a2.png index cd78e9e1..059eaa0e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/Insert_the_plug/Insert_the_plug_a2.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/Insert_the_plug/Insert_the_plug_a2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_line.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_line.png index da46a927..b54cea32 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_line.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_line.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host.png index 97796390..3a7f271a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host_off.png index c2cdb8cd..eb486b6c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host_pm_a_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host_pm_a_on.png index 45db499a..fed9a926 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host_pm_a_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host_pm_a_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host_pm_a_run.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host_pm_a_run.png index ede664af..5966dd7d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host_pm_a_run.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/ec_synthetic_storage_control_host_pm_a_run.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l4_controller.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l4_controller.png index fd19f529..85024552 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l4_controller.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l4_controller.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_controller.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_controller.png index f076b8f6..3fb17d82 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_controller.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_controller.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_synthetic_memory_elements_a.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_synthetic_memory_elements_a.png index 230d12d3..908f704f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_synthetic_memory_elements_a.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_synthetic_memory_elements_a.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_synthetic_memory_elements_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_synthetic_memory_elements_on.png index 2cdce403..787d9b98 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_synthetic_memory_elements_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_synthetic_memory_elements_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_synthetic_memory_elements_p1.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_synthetic_memory_elements_p1.png index caae594b..aed16cd4 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_synthetic_memory_elements_p1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l6_synthetic_memory_elements_p1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_controller.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_controller.png index ce6cf0f0..361b97f6 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_controller.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_controller.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_synthetic_memory_elements_a.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_synthetic_memory_elements_a.png index 47907d00..c4de755f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_synthetic_memory_elements_a.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_synthetic_memory_elements_a.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_synthetic_memory_elements_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_synthetic_memory_elements_on.png index c339efe2..88282d4b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_synthetic_memory_elements_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_synthetic_memory_elements_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_synthetic_memory_elements_p1.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_synthetic_memory_elements_p1.png index af0581c8..0e89a134 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_synthetic_memory_elements_p1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/l9_synthetic_memory_elements_p1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/synthetic_memory_elements_a.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/synthetic_memory_elements_a.png index 61344dcf..51af9c4f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/synthetic_memory_elements_a.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/synthetic_memory_elements_a.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/synthetic_memory_elements_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/synthetic_memory_elements_on.png index 24595bd5..da034f24 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/synthetic_memory_elements_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/synthetic_memory_elements_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/synthetic_memory_elements_p1.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/synthetic_memory_elements_p1.png index 10402c69..5164380d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/synthetic_memory_elements_p1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/bloom/synthetic_memory_elements_p1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_cooling_system_controller.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_cooling_system_controller.png index b30dbd34..30d41ba7 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_cooling_system_controller.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_cooling_system_controller.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_line.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_line.png index 3409c195..1bd05e01 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_line.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_line.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_line_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_line_off.png index fce0294a..e43e4572 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_line_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_line_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host.png index fd12e201..3e6bd840 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_e.png index 1e0d05b5..8d1a63f0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_off.png index 26b579f5..a2a0f1a8 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_off_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_off_e.png index b89eed3c..87c2a85b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_off_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_off_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_on.png index ddbf2041..ebe3eebb 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_on_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_on_e.png index f554f836..6fc7c566 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_on_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_on_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_run.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_run.png index 3cd2c2d3..a682c051 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_run.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_run.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_run_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_run_e.png index 7e280ada..95f82541 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_run_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_synthetic_storage_control_host_pm_a_run_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_system_plug_drivers.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_system_plug_drivers.png index c13c3417..f9f8be18 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_system_plug_drivers.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_system_plug_drivers.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_system_structure_heat_sink_0.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_system_structure_heat_sink_0.png index c539725b..e828b213 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_system_structure_heat_sink_0.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_system_structure_heat_sink_0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_system_structure_heat_sink_1.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_system_structure_heat_sink_1.png index 116d36c7..fbd63584 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_system_structure_heat_sink_1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_system_structure_heat_sink_1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_threading_system_controls_the_bus.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_threading_system_controls_the_bus.png index 983934e8..9637dc6d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_threading_system_controls_the_bus.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/ec_threading_system_controls_the_bus.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_controller.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_controller.png index 22984041..18ce598b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_controller.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_controller.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_1.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_1.png index 6dfe4eac..908e33d2 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_1_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_1_e.png index 51f5dfb6..a7239117 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_1_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_1_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_2.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_2.png index 55870b8e..c5808fc2 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_2.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_2_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_2_e.png index 6785653d..23e0e86a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_2_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_2_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_3.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_3.png index 0fe915d3..eb932e40 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_3.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_3_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_3_e.png index 899ca048..a734646b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_3_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_module_parallel_unit_side_3_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_synthetic_memory_elements_p1_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_synthetic_memory_elements_p1_off.png index c4e49335..8ae5164e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_synthetic_memory_elements_p1_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_synthetic_memory_elements_p1_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_synthetic_memory_elements_p1_off_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_synthetic_memory_elements_p1_off_e.png index 8b8881c5..423b35f1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_synthetic_memory_elements_p1_off_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l4_synthetic_memory_elements_p1_off_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_controller.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_controller.png index 4bdbb653..a7f83750 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_controller.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_controller.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_a.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_a.png index f7a61e52..7a2e4656 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_a.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_a.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_off.png index 359c353f..b6d4bd97 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_off_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_off_e.png index 382d45ec..8e256d81 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_off_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_off_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_on.png index b7de56ff..6e9413d9 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_p1.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_p1.png index 73c0946c..a6ea1fef 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_p1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_p1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_p1_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_p1_off.png index 38457cab..ba67e9a6 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_p1_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_p1_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_p1_off_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_p1_off_e.png index 7b8bd83a..1b8671c0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_p1_off_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l6_synthetic_memory_elements_p1_off_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_controller.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_controller.png index efaf4b45..8b048d72 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_controller.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_controller.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_a.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_a.png index 80f413aa..787f31d1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_a.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_a.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_off.png index d510a79c..a2ad8ae7 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_off_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_off_e.png index a502c840..a8ecf363 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_off_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_off_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_on.png index dabcdc99..6e9413d9 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_p1.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_p1.png index e8f5c801..a6ea1fef 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_p1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_p1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_p1_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_p1_off.png index ab16551b..660dcda3 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_p1_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_p1_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_p1_off_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_p1_off_e.png index 467ab5e1..ed747cc6 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_p1_off_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/l9_synthetic_memory_elements_p1_off_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/me_port_ec_system.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/me_port_ec_system.png index ea653e70..09adf637 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/me_port_ec_system.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/me_port_ec_system.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/parallel_unit_hosing.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/parallel_unit_hosing.png index 87aa909e..65fd5ab8 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/parallel_unit_hosing.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/parallel_unit_hosing.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l0_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l0_on.png index 84ce1dd1..11bef049 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l0_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l0_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l0_on_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l0_on_e.png index adfd77f2..b633ffa0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l0_on_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l0_on_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_on.png index 7d02af67..e5e76331 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_on_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_on_e.png index c0b659b9..f568b216 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_on_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_on_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_run.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_run.png index aee94004..78df2bd7 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_run.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_run.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_run_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_run_e.png index fc51f201..9b9a7c0d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_run_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l4_run_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_on.png index fbb064a4..b7b9daad 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_on_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_on_e.png index 0a8cf756..e5f1a7ab 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_on_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_on_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_run.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_run.png index 79ee57df..3aeae58e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_run.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_run.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_run_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_run_e.png index 6851d49f..63a8f33d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_run_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l6_run_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_on.png index 93bdb0fc..ad0eb9f0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_on_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_on_e.png index 5f7d3ebb..aa630af2 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_on_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_on_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_run.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_run.png index b307c514..3a4a304f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_run.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_run.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_run_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_run_e.png index 0028df93..88ceb30a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_run_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/l9_run_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/off.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/off.png index 1e988170..7818b8d6 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/screen/off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_1.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_1.png index 460b66b7..5d056c1b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_1_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_1_e.png index e1b58096..f286a2aa 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_1_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_1_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_2.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_2.png index 2c3f852e..183d946b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_2.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_2_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_2_e.png index 22afc721..e4f97410 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_2_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_2_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_3.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_3.png index d499e570..35983ae2 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_3.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_3_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_3_e.png index dbda2c71..71e2159b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_3_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_3_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_1.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_1.png index 991f80dd..53826543 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_1_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_1_e.png index ba2866d4..008db493 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_1_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_1_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_2.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_2.png index 54b9780e..bdf6ce07 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_2.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_2_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_2_e.png index 790d3ab6..01777d9b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_2_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_2_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_4.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_4.png index 1b8ed844..23d56031 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_4.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/superconducting_cooled_transmission_bus_side_4.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_a.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_a.png index 76583dc2..787f31d1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_a.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_a.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_off.png index 167f14a1..a045ec37 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_off_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_off_e.png index 6fdf7b2f..4229777c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_off_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_off_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_on.png index 9626838d..6e9413d9 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p1.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p1.png index fc411965..d4d3af8c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p2.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p2.png index 604e8a1d..e0f1fdfa 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p2.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p3.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p3.png index 6ab638eb..e8275f74 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p3.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p4.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p4.png index 06293373..1a3b4e39 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p4.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_memory_elements_p4.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives.png index fedc6639..3191c4e1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_e.png index 4a7c48f7..9779da84 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside.png index c31beea2..6ba7af77 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_down.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_down.png index 84b075d1..bc585358 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_down.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_down.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_east.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_east.png index ab49a2f9..cf9cf64b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_east.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_east.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_up.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_up.png index 15d26976..edaaf697 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_up.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_up.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_west.png index 30b67b49..14d062c0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_inside_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side.png index 95384c8d..3b3af151 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_1.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_1.png index ae5cd1f5..3b3af151 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_1_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_1_e.png index 10c127f8..7956b970 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_1_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_1_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_2.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_2.png index a2017eca..6fb195c0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_2.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_2_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_2_e.png index 458d4268..fc05028f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_2_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_2_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_e.png index 349df413..7956b970 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_side_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_south.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_south.png index 9c54ede1..43715e83 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_south.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_south.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_south_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_south_e.png index 8303d147..d34a272c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_south_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/synthetic_storage_drives_south_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_1.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_1.png index 6dfe4eac..908e33d2 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_1.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_1_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_1_e.png index 5b544097..a7239117 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_1_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_1_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_2.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_2.png index 33874ef2..0998afae 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_2.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_2_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_2_e.png index 134b39c9..23e0e86a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_2_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_2_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_4.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_4.png index 56ed5886..92e129a0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_4.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory/thread_module_side_4.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory_housing.png b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory_housing.png index 88b3d630..051e443e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory_housing.png and b/src/main/resources/assets/novaeng_core/textures/blocks/ec_modular_synthetic_memory_housing.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules-ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules-ctm.png index 36190ed1..718762cf 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules-ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules-ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules.png b/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules.png index 0ec37010..fa5c1568 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules.png and b/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules_e-ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules_e-ctm.png index 8c1e6548..2ab14a0f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules_e-ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules_e-ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules_e.png index 302e294b..1418ade3 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/l4_modules_assembled_parallel_molecules_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules-ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules-ctm.png index 913bcb81..718762cf 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules-ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules-ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules.png b/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules.png index e17f3e53..fa5c1568 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules.png and b/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules_e-ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules_e-ctm.png index 8d7b72c2..1ae19012 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules_e-ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules_e-ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules_e.png index d0a80903..ececf395 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/l6_modules_assembled_parallel_molecules_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules-ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules-ctm.png index 50027896..7a22f976 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules-ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules-ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules.png b/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules.png index aaee040e..fa5c1568 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules.png and b/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules_e-ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules_e-ctm.png index 8bbe7fd5..5ca1fd3f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules_e-ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules_e-ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules_e.png index 62ea201f..36247143 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/l9_modules_assembled_parallel_molecules_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led/blue_small_run.png b/src/main/resources/assets/novaeng_core/textures/blocks/led/blue_small_run.png index 209e91e4..0251ac84 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led/blue_small_run.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led/blue_small_run.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led/blue_small_run_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/led/blue_small_run_e.png index 209e91e4..0251ac84 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led/blue_small_run_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led/blue_small_run_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led/green_small_run.png b/src/main/resources/assets/novaeng_core/textures/blocks/led/green_small_run.png index 2965a041..f8f1fd4c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led/green_small_run.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led/green_small_run.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led/green_small_run_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/led/green_small_run_e.png index 2965a041..f8f1fd4c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led/green_small_run_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led/green_small_run_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led/module_molecular_assembly_drivers_led/drivers_active.png b/src/main/resources/assets/novaeng_core/textures/blocks/led/module_molecular_assembly_drivers_led/drivers_active.png index 264716b3..b5457553 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led/module_molecular_assembly_drivers_led/drivers_active.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led/module_molecular_assembly_drivers_led/drivers_active.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led/module_molecular_assembly_drivers_led/heat_dissipation_holes.png b/src/main/resources/assets/novaeng_core/textures/blocks/led/module_molecular_assembly_drivers_led/heat_dissipation_holes.png index f284034c..0f491172 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led/module_molecular_assembly_drivers_led/heat_dissipation_holes.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led/module_molecular_assembly_drivers_led/heat_dissipation_holes.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led/off.png b/src/main/resources/assets/novaeng_core/textures/blocks/led/off.png index 7e5fc750..37df0d1a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led/off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led/off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led/off_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/led/off_e.png index 7e5fc750..37df0d1a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led/off_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led/off_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led/off_smal_el.png b/src/main/resources/assets/novaeng_core/textures/blocks/led/off_smal_el.png index be307439..ac1eb33c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led/off_smal_el.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led/off_smal_el.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led/off_small.png b/src/main/resources/assets/novaeng_core/textures/blocks/led/off_small.png index be307439..ac1eb33c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led/off_small.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led/off_small.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led/orange_small_run.png b/src/main/resources/assets/novaeng_core/textures/blocks/led/orange_small_run.png index 24ee33b0..716601ef 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led/orange_small_run.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led/orange_small_run.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led/orange_small_run_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/led/orange_small_run_e.png index 24ee33b0..716601ef 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led/orange_small_run_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led/orange_small_run_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led_dynamic.png b/src/main/resources/assets/novaeng_core/textures/blocks/led_dynamic.png index 1545a33e..983d4558 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led_dynamic.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led_dynamic.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/led_static.png b/src/main/resources/assets/novaeng_core/textures/blocks/led_static.png index 3d2ea84f..cbc0421a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/led_static.png and b/src/main/resources/assets/novaeng_core/textures/blocks/led_static.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_assembly_matrix.png b/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_assembly_matrix.png index 50236c2f..360de42c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_assembly_matrix.png and b/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_assembly_matrix.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_assembly_matrix_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_assembly_matrix_e.png index 60cb3e61..5c8d771d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_assembly_matrix_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_assembly_matrix_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus.png b/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus.png index 145a6b1b..cbf86779 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus.png and b/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus_ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus_ctm.png index 165ff09b..d9dc2408 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus_ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus_ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus_e.png b/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus_e.png index f39bc7e3..756a9603 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus_e.png and b/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus_e.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus_e_ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus_e_ctm.png index 08eb103a..5f436659 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus_e_ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/module_molecular_template_bus_e_ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_empty.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_empty.png index a3afd3ff..44bb6408 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_empty.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_empty.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_full.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_full.png index c339a06b..ddaa2090 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_full.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_full.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_high.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_high.png index 341ed89a..9b425523 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_high.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_high.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_low.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_low.png index f7f23383..5f962f70 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_low.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_low.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_mid.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_mid.png index d20cc17f..d4741b39 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_mid.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_a_mid.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_empty.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_empty.png index 03d388d2..cf7123da 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_empty.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_empty.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_full.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_full.png index 62e767d6..16373eed 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_full.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_full.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_high.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_high.png index 63135799..d6866fe0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_high.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_high.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_low.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_low.png index 30d01bdc..f5b46290 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_low.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_low.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_mid.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_mid.png index 1cbca46f..8ca649f9 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_mid.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_b_mid.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_empty.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_empty.png index 51a9a105..8a9a8b14 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_empty.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_empty.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_full.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_full.png index 6c620aa1..69557df7 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_full.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_full.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_high.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_high.png index 0e7dd073..5d6232bd 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_high.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_high.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_low.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_low.png index 67c3d995..abaeed02 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_low.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_low.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_mid.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_mid.png index c3dff966..8a922cb4 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_mid.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_capacitance_c_mid.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives.png index 199b8628..6226526c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_a0_off_fluid.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_a0_off_fluid.png index 2f90384c..01a017f8 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_a0_off_fluid.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_a0_off_fluid.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_a0_off_gas.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_a0_off_gas.png new file mode 100644 index 00000000..01a017f8 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_a0_off_gas.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_a0_off_item.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_a0_off_item.png index 55c72fee..01a017f8 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_a0_off_item.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_a0_off_item.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_b0_off_fluid.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_b0_off_fluid.png index bc0fe46e..01a017f8 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_b0_off_fluid.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_b0_off_fluid.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_b0_off_gas.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_b0_off_gas.png new file mode 100644 index 00000000..01a017f8 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_b0_off_gas.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_b0_off_item.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_b0_off_item.png index b143e31c..01a017f8 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_b0_off_item.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_b0_off_item.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_c0_off_fluid.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_c0_off_fluid.png index d3d9cedf..01a017f8 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_c0_off_fluid.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_c0_off_fluid.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_c0_off_gas.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_c0_off_gas.png new file mode 100644 index 00000000..01a017f8 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_c0_off_gas.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_c0_off_item.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_c0_off_item.png index 9641392d..01a017f8 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_c0_off_item.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_drives_c0_off_item.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_housing-ctm.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_housing-ctm.png index a211cba2..f4277672 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_housing-ctm.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_housing-ctm.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_housing.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_housing.png index 3c57245c..c635949b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_housing.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_housing.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_mebus.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_mebus.png index e523379f..fb1702b1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_mebus.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_mebus.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_mebus_in.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_mebus_in.png index 95132383..f1a5f07c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_mebus_in.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_mebus_in.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_mebus_out.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_mebus_out.png index ecb06975..03606b23 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_mebus_out.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_mebus_out.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_vents_a.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_vents_a.png index 9b0d3e35..03317a97 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_vents_a.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_vents_a.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_vents_b.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_vents_b.png index 9136a2dc..7cde5624 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_vents_b.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_array_vents_b.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a0_north_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a0_north_off.png index d7eab280..91c3226d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a0_north_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a0_north_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a0_north_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a0_north_on.png index 8dad47bd..d695d48f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a0_north_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a0_north_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a0_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a0_west.png index dd75260b..4d84f0ae 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a0_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a0_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_north.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_north.png index 1c4a4b4f..604fbb5f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_north.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_north.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_north_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_north_off.png index 32fc24fb..32c1e725 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_north_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_north_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_off.png index 821f40e0..50de17af 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_on.png index 271367bb..1295c686 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_west.png index 4abb2a62..f0b042f4 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_a_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b0_north_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b0_north_off.png index fff8dc9c..df951ba8 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b0_north_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b0_north_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b0_north_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b0_north_on.png index ab48b77c..a5d174b3 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b0_north_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b0_north_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b0_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b0_west.png index 58513dc8..4d84f0ae 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b0_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b0_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_north.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_north.png index 58716b53..cc4e5d28 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_north.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_north.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_north_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_north_off.png index 7159d1e4..72460d1e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_north_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_north_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_off.png index 2b7606eb..3caa1d87 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_on.png index eaa21913..0e542c55 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_west.png index 53c61ca1..13c73197 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_b_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c0_north_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c0_north_off.png index dda83743..3118848b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c0_north_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c0_north_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c0_north_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c0_north_on.png index d62815a8..79a01bd1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c0_north_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c0_north_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c0_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c0_west.png index e56a6982..4d84f0ae 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c0_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c0_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_north.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_north.png index 86ed473c..91ed302e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_north.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_north.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_north_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_north_off.png index 8051f75f..9bafbd9d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_north_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_north_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_off.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_off.png index bdd3d095..1cacce47 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_off.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_on.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_on.png index f3e5f844..3281b64c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_on.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_west.png index 603fd69e..049ca82b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_c_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_down.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_down.png index 44757a6a..b582867b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_down.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_down.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_east_a.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_east_a.png index 8cbd65f1..c619c678 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_east_a.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_east_a.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_east_b.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_east_b.png index a53859d8..a167d59e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_east_b.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_east_b.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_east_c.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_east_c.png index fd8a28fd..9274306c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_east_c.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_east_c.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_off_west.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_off_west.png index 2a2c97c1..d7464a3d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_off_west.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_off_west.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_south.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_south.png index 75b707d0..a27f78a9 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_south.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_south.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_up.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_up.png index 0020fe4c..b4b75dc2 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_up.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_up.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_west_v2.png b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_west_v2.png index 1d804fbe..a8ff1d52 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_west_v2.png and b/src/main/resources/assets/novaeng_core/textures/blocks/storage_arrays_controller_west_v2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/dragbar.png b/src/main/resources/assets/novaeng_core/textures/gui/dragbar.png index ee214ea9..cff630ee 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/dragbar.png and b/src/main/resources/assets/novaeng_core/textures/gui/dragbar.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/ecalculator_background.png b/src/main/resources/assets/novaeng_core/textures/gui/ecalculator_background.png index ba670235..807781af 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/ecalculator_background.png and b/src/main/resources/assets/novaeng_core/textures/gui/ecalculator_background.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/ecalculator_gui_1.png b/src/main/resources/assets/novaeng_core/textures/gui/ecalculator_gui_1.png index 1a0effcb..6e6bef7d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/ecalculator_gui_1.png and b/src/main/resources/assets/novaeng_core/textures/gui/ecalculator_gui_1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/ecalculator_gui_2.png b/src/main/resources/assets/novaeng_core/textures/gui/ecalculator_gui_2.png index c8beb631..0f42d574 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/ecalculator_gui_2.png and b/src/main/resources/assets/novaeng_core/textures/gui/ecalculator_gui_2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_dark.png b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_dark.png index 0c61183c..6e30c6f4 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_dark.png and b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_dark.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_elements.png b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_elements.png index c8a50807..3fab9819 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_elements.png and b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_elements.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_inventory.png b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_inventory.png index b98ced08..27df8824 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_inventory.png and b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_inventory.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_light.png b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_light.png index 605fcfe7..43338dd8 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_light.png and b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_light.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_pattern_bus.png b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_pattern_bus.png index 901b798e..abf1484f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_pattern_bus.png and b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_pattern_bus.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_pattern_search_bg_dark.png b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_pattern_search_bg_dark.png index 82406bd6..d2978c98 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_pattern_search_bg_dark.png and b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_pattern_search_bg_dark.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_search.png b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_search.png index 044ef5db..906500f3 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/efabricator_search.png and b/src/main/resources/assets/novaeng_core/textures/gui/efabricator_search.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/estorage_controller.png b/src/main/resources/assets/novaeng_core/textures/gui/estorage_controller.png index 723e0369..065d74e2 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/estorage_controller.png and b/src/main/resources/assets/novaeng_core/textures/gui/estorage_controller.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/estorage_controller_elements.png b/src/main/resources/assets/novaeng_core/textures/gui/estorage_controller_elements.png index be4c9292..87e3b5bb 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/estorage_controller_elements.png and b/src/main/resources/assets/novaeng_core/textures/gui/estorage_controller_elements.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_256x256_dark.png b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_256x256_dark.png index 5ae1fb76..232a3979 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_256x256_dark.png and b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_256x256_dark.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_256x256_light.png b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_256x256_light.png index f9452ee1..3b7baefe 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_256x256_light.png and b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_256x256_light.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_320x256_dark.png b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_320x256_dark.png index aeaab5d6..9359091f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_320x256_dark.png and b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_320x256_dark.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_320x256_light.png b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_320x256_light.png index 4f9cd198..08b9d12a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_320x256_light.png and b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_320x256_light.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_384x320_dark.png b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_384x320_dark.png index d376fd29..47f6ed9a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_384x320_dark.png and b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_384x320_dark.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_384x320_light.png b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_384x320_light.png index 9c715670..7e885784 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_384x320_light.png and b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_384x320_light.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_512x320_dark.png b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_512x320_dark.png index 4c270b5d..609e9eb7 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_512x320_dark.png and b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_512x320_dark.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_512x320_light.png b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_512x320_light.png index 6ed763d3..aa4b9191 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_512x320_light.png and b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_512x320_light.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_640x384_dark.png b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_640x384_dark.png index e5ec07ce..48c51e32 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_640x384_dark.png and b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_640x384_dark.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_640x384_light.png b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_640x384_light.png index d419d154..95f97868 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_640x384_light.png and b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_640x384_light.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_dark.png b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_dark.png index 5bbf62b4..f08cc6c4 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_dark.png and b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_dark.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_light.png b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_light.png index 26d3dda0..8efdcf56 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_light.png and b/src/main/resources/assets/novaeng_core/textures/gui/guicraftingtree_light.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guigeocentricdrill.png b/src/main/resources/assets/novaeng_core/textures/gui/guigeocentricdrill.png index e79464ad..eb1b17ce 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guigeocentricdrill.png and b/src/main/resources/assets/novaeng_core/textures/gui/guigeocentricdrill.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guiterminal.png b/src/main/resources/assets/novaeng_core/textures/gui/guiterminal.png index 1468220e..db78c6a5 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guiterminal.png and b/src/main/resources/assets/novaeng_core/textures/gui/guiterminal.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/guiterminalelement.png b/src/main/resources/assets/novaeng_core/textures/gui/guiterminalelement.png index 89eb56c0..33a52b9e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/guiterminalelement.png and b/src/main/resources/assets/novaeng_core/textures/gui/guiterminalelement.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/modular_server_assembler.png b/src/main/resources/assets/novaeng_core/textures/gui/modular_server_assembler.png index e7381226..bc7dc2ac 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/modular_server_assembler.png and b/src/main/resources/assets/novaeng_core/textures/gui/modular_server_assembler.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/modular_server_frame.png b/src/main/resources/assets/novaeng_core/textures/gui/modular_server_frame.png index bae3508b..bc241c0a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/modular_server_frame.png and b/src/main/resources/assets/novaeng_core/textures/gui/modular_server_frame.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/modular_server_hosts.png b/src/main/resources/assets/novaeng_core/textures/gui/modular_server_hosts.png index 30bd4a40..d2272587 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/modular_server_hosts.png and b/src/main/resources/assets/novaeng_core/textures/gui/modular_server_hosts.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/modular_server_hosts_elements.png b/src/main/resources/assets/novaeng_core/textures/gui/modular_server_hosts_elements.png index 4607d088..31b35eb7 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/modular_server_hosts_elements.png and b/src/main/resources/assets/novaeng_core/textures/gui/modular_server_hosts_elements.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/msa_calculate_card.png b/src/main/resources/assets/novaeng_core/textures/gui/msa_calculate_card.png index e01aff94..ad53966c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/msa_calculate_card.png and b/src/main/resources/assets/novaeng_core/textures/gui/msa_calculate_card.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/msa_cpu.png b/src/main/resources/assets/novaeng_core/textures/gui/msa_cpu.png index 4a2a24aa..3980e0a4 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/msa_cpu.png and b/src/main/resources/assets/novaeng_core/textures/gui/msa_cpu.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/msa_elements.png b/src/main/resources/assets/novaeng_core/textures/gui/msa_elements.png index 4c632e56..356646ae 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/msa_elements.png and b/src/main/resources/assets/novaeng_core/textures/gui/msa_elements.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/msa_extension.png b/src/main/resources/assets/novaeng_core/textures/gui/msa_extension.png index 97dd3ae3..c2d49afd 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/msa_extension.png and b/src/main/resources/assets/novaeng_core/textures/gui/msa_extension.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/msa_power.png b/src/main/resources/assets/novaeng_core/textures/gui/msa_power.png index 02eb90e9..ff5254fe 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/msa_power.png and b/src/main/resources/assets/novaeng_core/textures/gui/msa_power.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_button.png b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_button.png index b8dd7e61..e54354a3 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_button.png and b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_button.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_gui.png b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_gui.png index 5b8c0117..7a1da032 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_gui.png and b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_gui.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_1_off.png b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_1_off.png index 7f563276..9dd3ec52 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_1_off.png and b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_1_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_1_on.png b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_1_on.png index 8af607c6..330b06a7 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_1_on.png and b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_1_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_2_off.png b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_2_off.png index 023618f7..a118cc8c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_2_off.png and b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_2_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_2_on.png b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_2_on.png index 5ff01490..371cb24d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_2_on.png and b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_2_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_3_off.png b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_3_off.png index 3665cc3c..8de5381a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_3_off.png and b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_3_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_3_on.png b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_3_on.png index 5807071f..de46d18b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_3_on.png and b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_rings_3_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_subassembly.png b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_subassembly.png index e306e2bf..e8d3e84a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_subassembly.png and b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_subassembly.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_subassembly_2.png b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_subassembly_2.png index f07899f6..dcec7072 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_subassembly_2.png and b/src/main/resources/assets/novaeng_core/textures/gui/preview/singularity_energy_Converter_subassembly_2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_button.png b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_button.png index 4bb10e72..d2647cda 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_button.png and b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_button.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_gui.png b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_gui.png index 1687fa5b..c14887aa 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_gui.png and b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_gui.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_gui_2.png b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_gui_2.png index 5d1c9f49..fbc55391 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_gui_2.png and b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_gui_2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_gui_bloom.png b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_gui_bloom.png index 3a7f985c..f7477019 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_gui_bloom.png and b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_gui_bloom.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_1_off.png b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_1_off.png index 7f563276..9dd3ec52 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_1_off.png and b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_1_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_1_on.png b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_1_on.png index 8af607c6..330b06a7 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_1_on.png and b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_1_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_2_off.png b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_2_off.png index 023618f7..a118cc8c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_2_off.png and b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_2_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_2_on.png b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_2_on.png index 5ff01490..371cb24d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_2_on.png and b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_2_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_3_off.png b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_3_off.png index 3665cc3c..8de5381a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_3_off.png and b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_3_off.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_3_on.png b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_3_on.png index 5807071f..de46d18b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_3_on.png and b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_rings_3_on.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_subassembly.png b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_subassembly.png index e306e2bf..e8d3e84a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_subassembly.png and b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_subassembly.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_subassembly_2.png b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_subassembly_2.png index d14a12fc..b8972676 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_subassembly_2.png and b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_subassembly_2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_subassembly_3.png b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_subassembly_3.png index 808a2712..ff519cd7 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_subassembly_3.png and b/src/main/resources/assets/novaeng_core/textures/gui/singularity_core_subassembly_3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis.png b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis.png new file mode 100644 index 00000000..3e230a8c Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_facti.png b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_facti.png new file mode 100644 index 00000000..513424bf Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_facti.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_facti_2.png b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_facti_2.png new file mode 100644 index 00000000..8975a72e Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_facti_2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_facti_3.png b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_facti_3.png new file mode 100644 index 00000000..fbcff7e7 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_facti_3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_gelati_facti.png b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_gelati_facti.png new file mode 100644 index 00000000..f9295de9 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_gelati_facti.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_lecti.png b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_lecti.png new file mode 100644 index 00000000..85f8418c Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/eco_ae/manualis_lecti.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/terminalis/facies.png b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/facies.png new file mode 100644 index 00000000..3b378d4d Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/facies.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/gui/terminalis/terminalis.png b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/terminalis.png new file mode 100644 index 00000000..4a4a3a8e Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/gui/terminalis/terminalis.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/item/carbon_fiber_shell_part-1.png b/src/main/resources/assets/novaeng_core/textures/item/carbon_fiber_shell_part-1.png index c2f78ccd..42bba1ec 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/item/carbon_fiber_shell_part-1.png and b/src/main/resources/assets/novaeng_core/textures/item/carbon_fiber_shell_part-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/item/carbon_fiber_shell_part-2.png b/src/main/resources/assets/novaeng_core/textures/item/carbon_fiber_shell_part-2.png index ed6c9b87..b3eb0b36 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/item/carbon_fiber_shell_part-2.png and b/src/main/resources/assets/novaeng_core/textures/item/carbon_fiber_shell_part-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/item/r0_stellar_data_bus.png b/src/main/resources/assets/novaeng_core/textures/item/r0_stellar_data_bus.png index 50c70584..9dfa7638 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/item/r0_stellar_data_bus.png and b/src/main/resources/assets/novaeng_core/textures/item/r0_stellar_data_bus.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/item/r1_data_bus.png b/src/main/resources/assets/novaeng_core/textures/item/r1_data_bus.png index 70b5caec..32020e86 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/item/r1_data_bus.png and b/src/main/resources/assets/novaeng_core/textures/item/r1_data_bus.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_fluid_16m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_fluid_16m.png index 1e88842b..eb71bb65 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_fluid_16m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_fluid_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_gas_16m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_gas_16m.png new file mode 100644 index 00000000..f212b2dc Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_gas_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_gas_16m.png.mcmeta b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_gas_16m.png.mcmeta new file mode 100644 index 00000000..dd229bcb --- /dev/null +++ b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_gas_16m.png.mcmeta @@ -0,0 +1,10 @@ +{ + "ctm": { + "ctm_version": 1, + "layer": "BLOOM", + "gregtech": true, + "extra": { + "light": 15 + } + } +} diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_item_16m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_item_16m.png index 7115e0f8..921a1f75 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_item_16m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a1_item_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_fluid_16m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_fluid_16m.png index 7e09498c..dd97e55f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_fluid_16m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_fluid_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_gas_16m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_gas_16m.png new file mode 100644 index 00000000..daeb4cb3 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_gas_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_gas_16m.png.mcmeta b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_gas_16m.png.mcmeta new file mode 100644 index 00000000..dd229bcb --- /dev/null +++ b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_gas_16m.png.mcmeta @@ -0,0 +1,10 @@ +{ + "ctm": { + "ctm_version": 1, + "layer": "BLOOM", + "gregtech": true, + "extra": { + "light": 15 + } + } +} diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_item_16m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_item_16m.png index c76d381a..7b2a4f7d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_item_16m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a2_item_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_fluid_16m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_fluid_16m.png index 3b7ca2fc..9d3fda19 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_fluid_16m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_fluid_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_gas_16m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_gas_16m.png new file mode 100644 index 00000000..8fd07010 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_gas_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_gas_16m.png.mcmeta b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_gas_16m.png.mcmeta new file mode 100644 index 00000000..dd229bcb --- /dev/null +++ b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_gas_16m.png.mcmeta @@ -0,0 +1,10 @@ +{ + "ctm": { + "ctm_version": 1, + "layer": "BLOOM", + "gregtech": true, + "extra": { + "light": 15 + } + } +} diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_item_16m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_item_16m.png index af9177b8..484f1d12 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_item_16m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_a3_item_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_fluid_64m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_fluid_64m.png index edd3d036..5ed6bc0a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_fluid_64m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_fluid_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_gas_64m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_gas_64m.png new file mode 100644 index 00000000..88d70b7f Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_gas_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_gas_64m.png.mcmeta b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_gas_64m.png.mcmeta new file mode 100644 index 00000000..dd229bcb --- /dev/null +++ b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_gas_64m.png.mcmeta @@ -0,0 +1,10 @@ +{ + "ctm": { + "ctm_version": 1, + "layer": "BLOOM", + "gregtech": true, + "extra": { + "light": 15 + } + } +} diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_item_64m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_item_64m.png index 7e3999b2..8ec578b3 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_item_64m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b1_item_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_fluid_64m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_fluid_64m.png index a7df5efd..70ec7dff 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_fluid_64m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_fluid_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_gas_64m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_gas_64m.png new file mode 100644 index 00000000..ed66f153 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_gas_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_gas_64m.png.mcmeta b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_gas_64m.png.mcmeta new file mode 100644 index 00000000..dd229bcb --- /dev/null +++ b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_gas_64m.png.mcmeta @@ -0,0 +1,10 @@ +{ + "ctm": { + "ctm_version": 1, + "layer": "BLOOM", + "gregtech": true, + "extra": { + "light": 15 + } + } +} diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_item_64m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_item_64m.png index ad5edfd4..42a42f94 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_item_64m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b2_item_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_fluid_64m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_fluid_64m.png index 5ffb0f50..009fd723 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_fluid_64m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_fluid_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_gas_64m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_gas_64m.png new file mode 100644 index 00000000..1e7c9365 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_gas_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_gas_64m.png.mcmeta b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_gas_64m.png.mcmeta new file mode 100644 index 00000000..dd229bcb --- /dev/null +++ b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_gas_64m.png.mcmeta @@ -0,0 +1,10 @@ +{ + "ctm": { + "ctm_version": 1, + "layer": "BLOOM", + "gregtech": true, + "extra": { + "light": 15 + } + } +} diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_item_64m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_item_64m.png index 87509575..534b53eb 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_item_64m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_b3_item_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_fluid_256m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_fluid_256m.png index 91d92651..5ee8af1d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_fluid_256m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_fluid_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_gas_256m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_gas_256m.png new file mode 100644 index 00000000..49ad8e96 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_gas_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_gas_256m.png.mcmeta b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_gas_256m.png.mcmeta new file mode 100644 index 00000000..dd229bcb --- /dev/null +++ b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_gas_256m.png.mcmeta @@ -0,0 +1,10 @@ +{ + "ctm": { + "ctm_version": 1, + "layer": "BLOOM", + "gregtech": true, + "extra": { + "light": 15 + } + } +} diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_item_256m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_item_256m.png index a300e7ef..6241be5c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_item_256m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c1_item_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_fluid_256m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_fluid_256m.png index cc4c7cb7..23aa17ed 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_fluid_256m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_fluid_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_gas_256m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_gas_256m.png new file mode 100644 index 00000000..b8077189 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_gas_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_gas_256m.png.mcmeta b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_gas_256m.png.mcmeta new file mode 100644 index 00000000..dd229bcb --- /dev/null +++ b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_gas_256m.png.mcmeta @@ -0,0 +1,10 @@ +{ + "ctm": { + "ctm_version": 1, + "layer": "BLOOM", + "gregtech": true, + "extra": { + "light": 15 + } + } +} diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_item_256m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_item_256m.png index d8fd7b65..d7edbd96 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_item_256m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c2_item_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_fluid_256m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_fluid_256m.png index f6e6c06b..75d7f0c8 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_fluid_256m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_fluid_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_gas_256m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_gas_256m.png new file mode 100644 index 00000000..e6a00e84 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_gas_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_gas_256m.png.mcmeta b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_gas_256m.png.mcmeta new file mode 100644 index 00000000..dd229bcb --- /dev/null +++ b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_gas_256m.png.mcmeta @@ -0,0 +1,10 @@ +{ + "ctm": { + "ctm_version": 1, + "layer": "BLOOM", + "gregtech": true, + "extra": { + "light": 15 + } + } +} diff --git a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_item_256m.png b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_item_256m.png index 4be387db..9a2182b0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_item_256m.png and b/src/main/resources/assets/novaeng_core/textures/items/bloom/estorage_cell_disks_c3_item_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/1-0.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/1-0.png index 2c326f77..66884e03 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/1-0.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/1-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/1-1.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/1-1.png index 8d80df04..f06aa013 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/1-1.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/1-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/2-0.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/2-0.png index a0c08dca..fa48a78d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/2-0.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/2-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/2-1.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/2-1.png index d0d7de56..e0f43a9a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/2-1.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/2-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/3-0.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/3-0.png index 303f58a7..e8f7810c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/3-0.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/3-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/3-1.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/3-1.png index c67477a7..c2863ce5 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/3-1.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/3-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/4-0.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/4-0.png index 2a61e373..2d7e6a38 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/4-0.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/4-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/4-1.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/4-1.png index 714471e4..ef044e3a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/4-1.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/4-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/5-0.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/5-0.png index d38a94da..2033c4f2 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/5-0.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/5-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/5-1.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/5-1.png index 654f5e1b..4c40dbde 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/5-1.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/5-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/6-0.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/6-0.png index 9b58aaa5..484a55e5 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/6-0.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/6-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/6-1.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/6-1.png index af98041d..4b8ce6be 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/6-1.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/6-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/7-1.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/7-1.png index b2b4208b..925dd685 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/7-1.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/7-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/8-1.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/8-1.png index b68b5bf4..05911c13 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/8-1.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/8-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/s-1.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/s-1.png index 861e8f5d..9c87d7ad 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card/s-1.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card/s-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card_1.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card_1.png index 88cac286..f06aa013 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card_1.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card_1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card_2.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card_2.png index 7fd36009..f1970097 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card_2.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card_2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/calculate_card_3.png b/src/main/resources/assets/novaeng_core/textures/items/calculate_card_3.png index c5fc9464..513468c7 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/calculate_card_3.png and b/src/main/resources/assets/novaeng_core/textures/items/calculate_card_3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu/1-1.png b/src/main/resources/assets/novaeng_core/textures/items/cpu/1-1.png index 30de1b90..72f89bd2 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu/1-1.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu/1-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu/2-1.png b/src/main/resources/assets/novaeng_core/textures/items/cpu/2-1.png index 69d26e64..5c34547a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu/2-1.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu/2-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu/3-1.png b/src/main/resources/assets/novaeng_core/textures/items/cpu/3-1.png index 69a57a7d..5ee3c8a1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu/3-1.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu/3-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu/4-1.png b/src/main/resources/assets/novaeng_core/textures/items/cpu/4-1.png index 243c51c0..06a0416e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu/4-1.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu/4-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/1-1.png b/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/1-1.png index c313f8f9..5239d712 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/1-1.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/1-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/2-1.png b/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/2-1.png index 30e9e8cb..53b0adbe 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/2-1.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/2-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/3-1.png b/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/3-1.png index 1e00cf7e..8c23610f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/3-1.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/3-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/4-1.png b/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/4-1.png index 79435214..cf97352b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/4-1.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/4-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/5-1.png b/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/5-1.png index 81805278..77b303b1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/5-1.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/5-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/6-1.png b/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/6-1.png index 98ccaf41..b58fd53d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/6-1.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu/ext/6-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu_extension_board.png b/src/main/resources/assets/novaeng_core/textures/items/cpu_extension_board.png index f55009db..25233abd 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu_extension_board.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu_extension_board.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t1.png b/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t1.png index 30de1b90..72f89bd2 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t1.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t2.png b/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t2.png index 69d26e64..5c34547a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t2.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t3.png b/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t3.png index 69a57a7d..5ee3c8a1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t3.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t4.png b/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t4.png index 243c51c0..06a0416e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t4.png and b/src/main/resources/assets/novaeng_core/textures/items/cpu_w_t4.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a1_fluid_16m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a1_fluid_16m.png index b8c5042e..d389fba7 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a1_fluid_16m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a1_fluid_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a1_gas_16m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a1_gas_16m.png new file mode 100644 index 00000000..14b9aaf4 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a1_gas_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a1_item_16m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a1_item_16m.png index b7622935..d72c4a00 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a1_item_16m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a1_item_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a2_fluid_16m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a2_fluid_16m.png index c50fd89d..f07e351e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a2_fluid_16m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a2_fluid_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a2_gas_16m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a2_gas_16m.png new file mode 100644 index 00000000..55909ebe Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a2_gas_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a2_item_16m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a2_item_16m.png index c7a3472f..b2715772 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a2_item_16m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a2_item_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a3_fluid_16m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a3_fluid_16m.png index f8f98ed2..b89be39d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a3_fluid_16m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a3_fluid_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a3_gas_16m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a3_gas_16m.png new file mode 100644 index 00000000..62a128ca Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a3_gas_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a3_item_16m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a3_item_16m.png index 48eec52b..576f70f1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a3_item_16m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_a3_item_16m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b1_fluid_64m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b1_fluid_64m.png index 6c21876b..82afd26d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b1_fluid_64m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b1_fluid_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b1_gas_64m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b1_gas_64m.png new file mode 100644 index 00000000..dad866ec Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b1_gas_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b1_item_64m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b1_item_64m.png index 41afc2da..69d1b3d3 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b1_item_64m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b1_item_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b2_fluid_64m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b2_fluid_64m.png index caf3e96f..0b739689 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b2_fluid_64m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b2_fluid_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b2_gas_64m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b2_gas_64m.png new file mode 100644 index 00000000..afbba0f3 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b2_gas_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b2_item_64m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b2_item_64m.png index 920d401b..159ba20f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b2_item_64m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b2_item_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b3_fluid_64m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b3_fluid_64m.png index be249948..93b76189 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b3_fluid_64m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b3_fluid_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b3_gas_64m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b3_gas_64m.png new file mode 100644 index 00000000..66ed93c4 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b3_gas_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b3_item_64m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b3_item_64m.png index 71646464..773cdd4b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b3_item_64m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_b3_item_64m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c1_fluid_256m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c1_fluid_256m.png index 64245aee..d52e7377 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c1_fluid_256m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c1_fluid_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c1_gas_256m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c1_gas_256m.png new file mode 100644 index 00000000..34898537 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c1_gas_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c1_item_256m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c1_item_256m.png index 481c9369..bf82f6d4 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c1_item_256m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c1_item_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c2_fluid_256m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c2_fluid_256m.png index 747b3f31..bb1cf877 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c2_fluid_256m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c2_fluid_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c2_gas_256m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c2_gas_256m.png new file mode 100644 index 00000000..a971a325 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c2_gas_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c2_item_256m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c2_item_256m.png index 9cd7726f..737f20e1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c2_item_256m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c2_item_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c3_fluid_256m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c3_fluid_256m.png index c745abb2..4bc8f7ec 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c3_fluid_256m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c3_fluid_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c3_gas_256m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c3_gas_256m.png new file mode 100644 index 00000000..072cdf28 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c3_gas_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c3_item_256m.png b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c3_item_256m.png index dd6920b6..05fc8402 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c3_item_256m.png and b/src/main/resources/assets/novaeng_core/textures/items/estorage_cell_disks_c3_item_256m.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/1-0.png b/src/main/resources/assets/novaeng_core/textures/items/ext/1-0.png index 9d4686a7..2ac782e4 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/1-0.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/1-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/1-1.png b/src/main/resources/assets/novaeng_core/textures/items/ext/1-1.png index 6283b200..2adf09bf 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/1-1.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/1-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/1-2.png b/src/main/resources/assets/novaeng_core/textures/items/ext/1-2.png index e2c02cf6..c1c3cf29 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/1-2.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/1-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/1-3.png b/src/main/resources/assets/novaeng_core/textures/items/ext/1-3.png index c0201146..a3b3a9b2 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/1-3.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/1-3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/2-0.png b/src/main/resources/assets/novaeng_core/textures/items/ext/2-0.png index 62784373..e99534ce 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/2-0.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/2-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/2-1.png b/src/main/resources/assets/novaeng_core/textures/items/ext/2-1.png index 99ad7632..f2c0973d 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/2-1.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/2-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/2-2.png b/src/main/resources/assets/novaeng_core/textures/items/ext/2-2.png index c4be63d5..52b231ed 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/2-2.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/2-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/2-3.png b/src/main/resources/assets/novaeng_core/textures/items/ext/2-3.png index 17cf27d6..026bfadd 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/2-3.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/2-3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/3-0.png b/src/main/resources/assets/novaeng_core/textures/items/ext/3-0.png index 04934a42..9fe0fb4f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/3-0.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/3-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/3-0b.png b/src/main/resources/assets/novaeng_core/textures/items/ext/3-0b.png index 45658896..3c5de421 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/3-0b.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/3-0b.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/3-1.png b/src/main/resources/assets/novaeng_core/textures/items/ext/3-1.png index 0fa82538..b364a738 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/3-1.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/3-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/3-1b.png b/src/main/resources/assets/novaeng_core/textures/items/ext/3-1b.png index 01999682..da0cb0b9 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/3-1b.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/3-1b.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/3-2.png b/src/main/resources/assets/novaeng_core/textures/items/ext/3-2.png index 0fa82538..b364a738 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/3-2.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/3-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/3-2b.png b/src/main/resources/assets/novaeng_core/textures/items/ext/3-2b.png index 32a99ca6..bcc65819 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/3-2b.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/3-2b.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/3-3.png b/src/main/resources/assets/novaeng_core/textures/items/ext/3-3.png index 38bf03a0..941eef25 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/3-3.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/3-3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/3-3b.png b/src/main/resources/assets/novaeng_core/textures/items/ext/3-3b.png index d9820a34..6830fdb0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/3-3b.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/3-3b.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/base/1-1.png b/src/main/resources/assets/novaeng_core/textures/items/ext/base/1-1.png index 7a0b1f3a..8d6c1b73 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/base/1-1.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/base/1-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/base/1-2.png b/src/main/resources/assets/novaeng_core/textures/items/ext/base/1-2.png index 1a652701..fb021d18 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/base/1-2.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/base/1-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/base/1-3.png b/src/main/resources/assets/novaeng_core/textures/items/ext/base/1-3.png index bd903f85..c968175a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/base/1-3.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/base/1-3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/base/2-1.png b/src/main/resources/assets/novaeng_core/textures/items/ext/base/2-1.png index af474fdb..55529940 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/base/2-1.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/base/2-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/base/2-2.png b/src/main/resources/assets/novaeng_core/textures/items/ext/base/2-2.png index 7cce449d..01132b62 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/base/2-2.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/base/2-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/base/2-3.png b/src/main/resources/assets/novaeng_core/textures/items/ext/base/2-3.png index fdbab842..b5e96a9f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/base/2-3.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/base/2-3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/base/3-1.png b/src/main/resources/assets/novaeng_core/textures/items/ext/base/3-1.png index 9cc6733f..a20ab6c9 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/base/3-1.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/base/3-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/base/3-2.png b/src/main/resources/assets/novaeng_core/textures/items/ext/base/3-2.png index 60d104ff..138ab889 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/base/3-2.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/base/3-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/base/3-3.png b/src/main/resources/assets/novaeng_core/textures/items/ext/base/3-3.png index 7ef74f66..211e00c4 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/base/3-3.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/base/3-3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ext/s-16.png b/src/main/resources/assets/novaeng_core/textures/items/ext/s-16.png index 1a26d772..2eb6f3a9 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ext/s-16.png and b/src/main/resources/assets/novaeng_core/textures/items/ext/s-16.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/extension_card.png b/src/main/resources/assets/novaeng_core/textures/items/extension_card.png index 7d1d521a..8a8dd043 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/extension_card.png and b/src/main/resources/assets/novaeng_core/textures/items/extension_card.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/extension_card_ext.png b/src/main/resources/assets/novaeng_core/textures/items/extension_card_ext.png index 9c8c48f2..4a140e24 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/extension_card_ext.png and b/src/main/resources/assets/novaeng_core/textures/items/extension_card_ext.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/extension_card_heat_radiator.png b/src/main/resources/assets/novaeng_core/textures/items/extension_card_heat_radiator.png index 002520af..4d16bb05 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/extension_card_heat_radiator.png and b/src/main/resources/assets/novaeng_core/textures/items/extension_card_heat_radiator.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/gpu_t1.png b/src/main/resources/assets/novaeng_core/textures/items/gpu_t1.png index f37f1a76..1320b384 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/gpu_t1.png and b/src/main/resources/assets/novaeng_core/textures/items/gpu_t1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/gpu_t2.png b/src/main/resources/assets/novaeng_core/textures/items/gpu_t2.png index 3c268058..9e350a16 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/gpu_t2.png and b/src/main/resources/assets/novaeng_core/textures/items/gpu_t2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/gpu_t3.png b/src/main/resources/assets/novaeng_core/textures/items/gpu_t3.png index 35f90802..5a17a5f6 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/gpu_t3.png and b/src/main/resources/assets/novaeng_core/textures/items/gpu_t3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/horologium_compass.png b/src/main/resources/assets/novaeng_core/textures/items/horologium_compass.png new file mode 100644 index 00000000..b3e36e11 Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/horologium_compass.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/horologium_compass.png.mcmeta b/src/main/resources/assets/novaeng_core/textures/items/horologium_compass.png.mcmeta new file mode 100644 index 00000000..d048344d --- /dev/null +++ b/src/main/resources/assets/novaeng_core/textures/items/horologium_compass.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "interpolate": true, + "frametime": 4 + } +} diff --git a/src/main/resources/assets/novaeng_core/textures/items/magic_breaking_stone.png b/src/main/resources/assets/novaeng_core/textures/items/magic_breaking_stone.png new file mode 100644 index 00000000..03ca27cb Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/magic_breaking_stone.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/1-1.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/1-1.png index 981c817f..c5177bb2 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/1-1.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/1-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/1-2.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/1-2.png index bc9a0e0b..8980a1e0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/1-2.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/1-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/2-1.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/2-1.png index 63cfcaf1..7623856c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/2-1.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/2-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/2-2.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/2-2.png index a950251e..4d5fc849 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/2-2.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/2-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/3-1.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/3-1.png index f518af8e..941c711e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/3-1.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/3-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/3-2.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/3-2.png index 5579c97f..c8ad5f1c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/3-2.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/3-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/1.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/1.png index 2de1b58b..ede507ec 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/1.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/2.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/2.png index bf27a16f..88fd631c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/2.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/3.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/3.png index 332178cf..121cba43 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/3.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/4.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/4.png index 7a863acd..9d5750ac 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/4.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/4.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/5.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/5.png index 5eaba8a4..6dd8a0ad 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/5.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/5.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/6_0.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/6_0.png index 48c8514d..cb6c1f49 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/6_0.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/6_0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/6_1.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/6_1.png index 963f283f..efe63a98 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/6_1.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/6_1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/7.png b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/7.png index 51c4d1fb..bc97cfe4 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/matrix/base/7.png and b/src/main/resources/assets/novaeng_core/textures/items/matrix/base/7.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/modular_server_t1.png b/src/main/resources/assets/novaeng_core/textures/items/modular_server_t1.png index 93fba329..1769f7c5 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/modular_server_t1.png and b/src/main/resources/assets/novaeng_core/textures/items/modular_server_t1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/modular_server_t2.png b/src/main/resources/assets/novaeng_core/textures/items/modular_server_t2.png index 0df7a86e..51afbe33 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/modular_server_t2.png and b/src/main/resources/assets/novaeng_core/textures/items/modular_server_t2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/modular_server_t3.png b/src/main/resources/assets/novaeng_core/textures/items/modular_server_t3.png index bfa0d568..de785cba 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/modular_server_t3.png and b/src/main/resources/assets/novaeng_core/textures/items/modular_server_t3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/module_calculate_card_ext.png b/src/main/resources/assets/novaeng_core/textures/items/module_calculate_card_ext.png index 5a3d4e6f..9b5438f1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/module_calculate_card_ext.png and b/src/main/resources/assets/novaeng_core/textures/items/module_calculate_card_ext.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/psu_t1.png b/src/main/resources/assets/novaeng_core/textures/items/psu_t1.png index 41c873f7..304231d0 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/psu_t1.png and b/src/main/resources/assets/novaeng_core/textures/items/psu_t1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/psu_t2.png b/src/main/resources/assets/novaeng_core/textures/items/psu_t2.png index e9547615..42848e2e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/psu_t2.png and b/src/main/resources/assets/novaeng_core/textures/items/psu_t2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/psu_t3.png b/src/main/resources/assets/novaeng_core/textures/items/psu_t3.png index fdc19090..974d61f8 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/psu_t3.png and b/src/main/resources/assets/novaeng_core/textures/items/psu_t3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/1-0.png b/src/main/resources/assets/novaeng_core/textures/items/ram/1-0.png index c355fd3b..d55c6370 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/1-0.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/1-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/1-1.png b/src/main/resources/assets/novaeng_core/textures/items/ram/1-1.png index 9d4046ef..08fa263f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/1-1.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/1-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/1-2.png b/src/main/resources/assets/novaeng_core/textures/items/ram/1-2.png index 6dee57ba..7d573749 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/1-2.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/1-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/1-3.png b/src/main/resources/assets/novaeng_core/textures/items/ram/1-3.png index faf61c6c..d4049d7f 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/1-3.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/1-3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/2-0.png b/src/main/resources/assets/novaeng_core/textures/items/ram/2-0.png index 9d22b4b7..0c19d3e5 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/2-0.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/2-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/2-1.png b/src/main/resources/assets/novaeng_core/textures/items/ram/2-1.png index 2dad48f2..27c6fe82 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/2-1.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/2-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/2-2.png b/src/main/resources/assets/novaeng_core/textures/items/ram/2-2.png index 36bad09c..60c3af63 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/2-2.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/2-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/2-3.png b/src/main/resources/assets/novaeng_core/textures/items/ram/2-3.png index 5f751ffc..ff66fea1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/2-3.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/2-3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/2-4.png b/src/main/resources/assets/novaeng_core/textures/items/ram/2-4.png index fec4da1b..58c908b3 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/2-4.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/2-4.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/3-0.png b/src/main/resources/assets/novaeng_core/textures/items/ram/3-0.png index af802eae..dd61087b 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/3-0.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/3-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/3-1.png b/src/main/resources/assets/novaeng_core/textures/items/ram/3-1.png index f1d15969..8e173837 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/3-1.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/3-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/3-2.png b/src/main/resources/assets/novaeng_core/textures/items/ram/3-2.png index 0f3d2f61..6fe2ee7a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/3-2.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/3-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/3-3.png b/src/main/resources/assets/novaeng_core/textures/items/ram/3-3.png index 0f28b291..9a7ef430 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/3-3.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/3-3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/3-4.png b/src/main/resources/assets/novaeng_core/textures/items/ram/3-4.png index 2099a0dd..07e6f13c 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/3-4.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/3-4.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/4-0.png b/src/main/resources/assets/novaeng_core/textures/items/ram/4-0.png index 7d3f7c40..49d97434 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/4-0.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/4-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/4-1.png b/src/main/resources/assets/novaeng_core/textures/items/ram/4-1.png index 3acaec44..9656dbb7 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/4-1.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/4-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/4-2.png b/src/main/resources/assets/novaeng_core/textures/items/ram/4-2.png index 43d0e3e4..5846446e 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/4-2.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/4-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/4-3.png b/src/main/resources/assets/novaeng_core/textures/items/ram/4-3.png index 4a61227f..f811a4f1 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/4-3.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/4-3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/4-4.png b/src/main/resources/assets/novaeng_core/textures/items/ram/4-4.png index 717011d3..65550b14 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/4-4.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/4-4.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/5-0.png b/src/main/resources/assets/novaeng_core/textures/items/ram/5-0.png index fd80387b..0dea7c57 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/5-0.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/5-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/5-1.png b/src/main/resources/assets/novaeng_core/textures/items/ram/5-1.png index c7d55a4e..29f2224a 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/5-1.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/5-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/5-2.png b/src/main/resources/assets/novaeng_core/textures/items/ram/5-2.png index 6896b73e..c0b0c083 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/5-2.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/5-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/5-3.png b/src/main/resources/assets/novaeng_core/textures/items/ram/5-3.png index 525bb1f0..2c810614 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/5-3.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/5-3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/5-4.png b/src/main/resources/assets/novaeng_core/textures/items/ram/5-4.png index 0d93dadf..5e1a51fb 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/5-4.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/5-4.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/6-0.png b/src/main/resources/assets/novaeng_core/textures/items/ram/6-0.png index 2ca985f6..84b5b145 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/6-0.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/6-0.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/6-1.png b/src/main/resources/assets/novaeng_core/textures/items/ram/6-1.png index 0bd5b978..7243c9ba 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/6-1.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/6-1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/6-2.png b/src/main/resources/assets/novaeng_core/textures/items/ram/6-2.png index 772de96b..e52e7473 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/6-2.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/6-2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/6-3.png b/src/main/resources/assets/novaeng_core/textures/items/ram/6-3.png index 9d48217e..e6565480 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/6-3.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/6-3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram/6-4.png b/src/main/resources/assets/novaeng_core/textures/items/ram/6-4.png index 161bf8ec..1e22e575 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram/6-4.png and b/src/main/resources/assets/novaeng_core/textures/items/ram/6-4.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram_heat_radiator.png b/src/main/resources/assets/novaeng_core/textures/items/ram_heat_radiator.png index 126d000e..7566fd45 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram_heat_radiator.png and b/src/main/resources/assets/novaeng_core/textures/items/ram_heat_radiator.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram_t1.png b/src/main/resources/assets/novaeng_core/textures/items/ram_t1.png index 53efb704..b6a8b375 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram_t1.png and b/src/main/resources/assets/novaeng_core/textures/items/ram_t1.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram_t2.png b/src/main/resources/assets/novaeng_core/textures/items/ram_t2.png index d1522c9b..b8aa20ef 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram_t2.png and b/src/main/resources/assets/novaeng_core/textures/items/ram_t2.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram_t3.png b/src/main/resources/assets/novaeng_core/textures/items/ram_t3.png index 84bbc73f..5b7884da 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram_t3.png and b/src/main/resources/assets/novaeng_core/textures/items/ram_t3.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram_t4.png b/src/main/resources/assets/novaeng_core/textures/items/ram_t4.png index a732b171..372742c3 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram_t4.png and b/src/main/resources/assets/novaeng_core/textures/items/ram_t4.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/ram_t5.png b/src/main/resources/assets/novaeng_core/textures/items/ram_t5.png index 2a851fa2..d9b01e68 100644 Binary files a/src/main/resources/assets/novaeng_core/textures/items/ram_t5.png and b/src/main/resources/assets/novaeng_core/textures/items/ram_t5.png differ diff --git a/src/main/resources/assets/novaeng_core/textures/items/terminalis.png b/src/main/resources/assets/novaeng_core/textures/items/terminalis.png new file mode 100644 index 00000000..4a4a3a8e Binary files /dev/null and b/src/main/resources/assets/novaeng_core/textures/items/terminalis.png differ diff --git a/src/main/resources/assets/opticheck/lang/en_US.lang b/src/main/resources/assets/opticheck/lang/en_US.lang new file mode 100644 index 00000000..2b199cae --- /dev/null +++ b/src/main/resources/assets/opticheck/lang/en_US.lang @@ -0,0 +1,5 @@ +text.key.continue=Continue +text.key.link=Link +text.key.quit=Quit +text.tooltip.message=The author of this modpack recommends Optifine! Please install it using the Link below! +text.tooltip.title=&c&lOptifine couldn't be detected! diff --git a/src/main/resources/assets/opticheck/lang/zh_CN.lang b/src/main/resources/assets/opticheck/lang/zh_CN.lang new file mode 100644 index 00000000..247190d1 --- /dev/null +++ b/src/main/resources/assets/opticheck/lang/zh_CN.lang @@ -0,0 +1,5 @@ +text.key.continue=继续游戏 +text.key.link=前往下载 +text.key.quit=退出游戏 +text.tooltip.message=Nova Engineering - World 推荐安装高清修复!#n不安装高清修复的情况下部分方块可能出现渲染错误 +text.tooltip.title=&c&l未检测到高清修复! diff --git a/src/main/resources/assets/tconstruct/book/en_us/modifiers/magic_breaking.json b/src/main/resources/assets/tconstruct/book/en_us/modifiers/magic_breaking.json new file mode 100644 index 00000000..91b42ebe --- /dev/null +++ b/src/main/resources/assets/tconstruct/book/en_us/modifiers/magic_breaking.json @@ -0,0 +1,15 @@ +{ + "modifier": "magic_breaking", + "text": [ + { + "text": "你的伤害总能穿透一切防御" + } + ], + "effects": [ + "使得武器具有破魔性", + "只需要强化一次" + ], + "demoTool": [ + "tconstruct:broadsword" + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/tconstruct/book/zh_cn/modifiers/magic_breaking.json b/src/main/resources/assets/tconstruct/book/zh_cn/modifiers/magic_breaking.json new file mode 100644 index 00000000..91b42ebe --- /dev/null +++ b/src/main/resources/assets/tconstruct/book/zh_cn/modifiers/magic_breaking.json @@ -0,0 +1,15 @@ +{ + "modifier": "magic_breaking", + "text": [ + { + "text": "你的伤害总能穿透一切防御" + } + ], + "effects": [ + "使得武器具有破魔性", + "只需要强化一次" + ], + "demoTool": [ + "tconstruct:broadsword" + ] +} \ No newline at end of file diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties new file mode 100644 index 00000000..53554e8e --- /dev/null +++ b/src/main/resources/messages.properties @@ -0,0 +1,8 @@ +java.version.warning=Warning: Detected incompatible Java version! +java.version.warning.detail=Current version: %s +java.version.warning.recommend=Requires Java 8 Update 271 or higher +java.version.warning.risk=May cause unexpected errors or performance issues. It is recommended to upgrade JDK! +java.version.warning.title=Java version warning +java.version.warning.confirm=Continue despite risks? +java.version.blocked=incompatible Java version detected +mod.ecoae.warning=Repeatedly added MOD:ECOAEExtension \ No newline at end of file diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties new file mode 100644 index 00000000..1928a92b --- /dev/null +++ b/src/main/resources/messages_zh_CN.properties @@ -0,0 +1,8 @@ +java.version.warning=警告:检测到不兼容的Java版本! +java.version.warning.detail=当前版本: %s +java.version.warning.recommend=需要Java 8 Update 271或更高版本 +java.version.warning.risk=可能导致意外错误或性能问题,建议升级JDK! +java.version.warning.title=Java 版本警告 +java.version.warning.confirm=是否继续运行? +java.version.blocked=检测到不兼容的Java版本 +mod.ecoae.warning=重复添加的MOD:ECOAEExtension \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core.json b/src/main/resources/mixins.novaeng_core.json index 9b10fe3c..f1622296 100644 --- a/src/main/resources/mixins.novaeng_core.json +++ b/src/main/resources/mixins.novaeng_core.json @@ -1,16 +1,19 @@ { - "package": "github.kasuminova.novaeng.mixin.mmce", - "refmap": "mixins.novaeng_core.refmap.json", - "target": "@env(DEFAULT)", - "minVersion": "0.8", - "compatibilityLevel": "JAVA_8", - "client": [ - "MixinIngredientItemStackRenderer" - ], - "mixins": [ - "MixinCommonProxy", - "MixinMachineRegistry", - "MixinTaskExecutor", - "MixinTileMultiblockMachineController" - ] + "package": "github.kasuminova.novaeng.mixin.mmce", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + "MixinIngredientItemStackRenderer" + ], + "mixins": [ + "MixinCommonProxy", + "MixinMachineRecipe", + "MixinMachineRegistry", + "MixinMEPatternProvider", + "MixinRecipeAdapterBuilder", + "MixinTaskExecutor", + "MixinTileMultiblockMachineController" + ] } \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_ae2.json b/src/main/resources/mixins.novaeng_core_ae2.json index 904d345b..1f6abcc6 100644 --- a/src/main/resources/mixins.novaeng_core_ae2.json +++ b/src/main/resources/mixins.novaeng_core_ae2.json @@ -1,26 +1,28 @@ { - "package": "github.kasuminova.novaeng.mixin.ae2", - "refmap": "mixins.novaeng_core.refmap.json", - "target": "@env(DEFAULT)", - "minVersion": "0.8", - "compatibilityLevel": "JAVA_8", - "client": [ - "MixinAppEngClientPacketHandler", - "MixinGuiCraftingStatus", - "MixinGuiPatternTerm" - ], - "server": [ - "MixinPacketInventoryAction" - ], - "mixins": [ - "AccessorAbstractCellInventory", - "AccessorCellRegistry", - "AccessorContainerPatternEncoder", - "MixinAppEngServerPacketHandler", - "MixinCraftingCPUCluster", - "MixinCraftingCPUStatus", - "MixinCraftingGridCache", - "MixinTileChestFilter", - "MixinTileDriveFilter" - ] + "package": "github.kasuminova.novaeng.mixin.ae2", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + "MixinAppEngClientPacketHandler", + "MixinGuiCraftingStatus", + "MixinGuiPatternTerm" + ], + "server": [ + "MixinPacketInventoryAction" + ], + "mixins": [ + "AccessorAbstractCellInventory", + "AccessorCellRegistry", + "AccessorContainerPatternEncoder", + "MixinAppEngServerPacketHandler", + "MixinCraftingCPUCluster", + "MixinCraftingCPUClusterTwo", + "MixinCraftingCPUClusterTwo$AccessorTaskProgress", + "MixinCraftingCPUStatus", + "MixinCraftingGridCache", + "MixinTileChestFilter", + "MixinTileDriveFilter" + ] } \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_astralsorcery.json b/src/main/resources/mixins.novaeng_core_astralsorcery.json index d2ae1e0b..f78dd2fa 100644 --- a/src/main/resources/mixins.novaeng_core_astralsorcery.json +++ b/src/main/resources/mixins.novaeng_core_astralsorcery.json @@ -1,15 +1,16 @@ { - "package": "github.kasuminova.novaeng.mixin.astralsorcery", - "refmap": "mixins.novaeng_core.refmap.json", - "target": "@env(DEFAULT)", - "minVersion": "0.8", - "compatibilityLevel": "JAVA_8", - "mixins": [ - "MixinPlayerAttributeMap" - ], - "server": [ - "AccessorResearchManager", - "InvokerPerkEffectHelper", - "MixinPlayerProgress" - ] + "package": "github.kasuminova.novaeng.mixin.astralsorcery", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "MixinBlockCustomOre", + "MixinPlayerAttributeMap" + ], + "server": [ + "AccessorResearchManager", + "InvokerPerkEffectHelper", + "MixinPlayerProgress" + ] } \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_avaritia.json b/src/main/resources/mixins.novaeng_core_avaritia.json new file mode 100644 index 00000000..82b6c39b --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_avaritia.json @@ -0,0 +1,10 @@ +{ + "package": "github.kasuminova.novaeng.mixin.avaritia", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "MixinEntityImmortalItem" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_betterp2p.json b/src/main/resources/mixins.novaeng_core_betterp2p.json new file mode 100644 index 00000000..3635791e --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_betterp2p.json @@ -0,0 +1,11 @@ +{ + "package": "github.kasuminova.novaeng.mixin.betterp2p", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "MixinServerLinkP2PHandler", + "MixinServerUnlinkP2PHandler" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_botania.json b/src/main/resources/mixins.novaeng_core_botania.json new file mode 100644 index 00000000..2bc40381 --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_botania.json @@ -0,0 +1,11 @@ +{ + "package": "github.kasuminova.novaeng.mixin.botania", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "MixinTileRedStringContainer", + "MixinTileRuneAltar" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_codechickenlib.json b/src/main/resources/mixins.novaeng_core_codechickenlib.json new file mode 100644 index 00000000..c5bf44c4 --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_codechickenlib.json @@ -0,0 +1,14 @@ +{ + "package": "github.kasuminova.novaeng.mixin.codechickenlib", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + ], + "mixins": [ + ], + "server": [ + "MixinReflectionManager" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_cofhcore.json b/src/main/resources/mixins.novaeng_core_cofhcore.json index 05385284..591724a6 100644 --- a/src/main/resources/mixins.novaeng_core_cofhcore.json +++ b/src/main/resources/mixins.novaeng_core_cofhcore.json @@ -1,10 +1,13 @@ { - "package": "github.kasuminova.novaeng.mixin.cofh", - "refmap": "mixins.novaeng_core.refmap.json", - "target": "@env(DEFAULT)", - "minVersion": "0.8", - "compatibilityLevel": "JAVA_8", - "server": [ - "MixinTileCore" - ] + "package": "github.kasuminova.novaeng.mixin.cofh", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "server": [ + "MixinTileCore" + ], + "mixins": [ + "MixinTypeEntry" + ] } \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_electroblobs.json b/src/main/resources/mixins.novaeng_core_electroblobs.json new file mode 100644 index 00000000..0693e293 --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_electroblobs.json @@ -0,0 +1,13 @@ +{ + "package": "github.kasuminova.novaeng.mixin.electroblobs", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + ], + "mixins": [ + "AccessorForfeit", + "MixinForfeit" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_extrabotany.json b/src/main/resources/mixins.novaeng_core_extrabotany.json new file mode 100644 index 00000000..0f90ad92 --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_extrabotany.json @@ -0,0 +1,12 @@ +{ + "package": "github.kasuminova.novaeng.mixin.extrabotany", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + ], + "mixins": [ + "MixinTileManaLiquefaction" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_fluxnetworks.json b/src/main/resources/mixins.novaeng_core_fluxnetworks.json new file mode 100644 index 00000000..b4d29b0a --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_fluxnetworks.json @@ -0,0 +1,13 @@ +{ + "package": "github.kasuminova.novaeng.mixin.fluxnetworks", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + ], + "mixins": [ + "MixinBasicTransferHandler", + "MixinFluxNetworkServer" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_jetif.json b/src/main/resources/mixins.novaeng_core_jetif.json new file mode 100644 index 00000000..ea9a6137 --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_jetif.json @@ -0,0 +1,10 @@ +{ + "package": "github.kasuminova.novaeng.mixin.jetif", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + "MixinCompatFluxNetworks" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_legendarytooltips.json b/src/main/resources/mixins.novaeng_core_legendarytooltips.json new file mode 100644 index 00000000..2a89d886 --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_legendarytooltips.json @@ -0,0 +1,10 @@ +{ + "package": "github.kasuminova.novaeng.mixin.legendarytooltips", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + "MixinTooltipDecor" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_libvulpes.json b/src/main/resources/mixins.novaeng_core_libvulpes.json new file mode 100644 index 00000000..b6b7f4fe --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_libvulpes.json @@ -0,0 +1,12 @@ +{ + "package": "github.kasuminova.novaeng.mixin.libvulpes", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + ], + "mixins": [ + "MixinTileFluidHatch" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_lootoverhaul.json b/src/main/resources/mixins.novaeng_core_lootoverhaul.json new file mode 100644 index 00000000..5f6ac777 --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_lootoverhaul.json @@ -0,0 +1,12 @@ +{ + "package": "github.kasuminova.novaeng.mixin.lootoverhaul", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + ], + "mixins": [ + "MixinConfigIdFileGenerator" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_nco.json b/src/main/resources/mixins.novaeng_core_nco.json new file mode 100644 index 00000000..8bf3ebc5 --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_nco.json @@ -0,0 +1,12 @@ +{ + "package": "github.kasuminova.novaeng.mixin.nco", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + ], + "mixins": [ + "MixinFluidTileWrapper" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_opticheck.json b/src/main/resources/mixins.novaeng_core_opticheck.json new file mode 100644 index 00000000..c97f3904 --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_opticheck.json @@ -0,0 +1,10 @@ +{ + "package": "github.kasuminova.novaeng.mixin.opticheck", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + "MixinOptiCheckScreen" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_packagedauto.json b/src/main/resources/mixins.novaeng_core_packagedauto.json new file mode 100644 index 00000000..b2876557 --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_packagedauto.json @@ -0,0 +1,13 @@ +{ + "package": "github.kasuminova.novaeng.mixin.packagedauto", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + "MixinGuiUnpackager" + ], + "mixins": [ + "MixinPacketEjectTracker" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_psi.json b/src/main/resources/mixins.novaeng_core_psi.json new file mode 100644 index 00000000..f36d093a --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_psi.json @@ -0,0 +1,12 @@ +{ + "package": "github.kasuminova.novaeng.mixin.psi", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + ], + "mixins": [ + "MixinPieceTrickExplode" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_rftools.json b/src/main/resources/mixins.novaeng_core_rftools.json new file mode 100644 index 00000000..895c28df --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_rftools.json @@ -0,0 +1,12 @@ +{ + "package": "github.kasuminova.novaeng.mixin.rftools", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + ], + "mixins": [ + "MixinBuilderTileEntity" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_techguns.json b/src/main/resources/mixins.novaeng_core_techguns.json new file mode 100644 index 00000000..42b5c574 --- /dev/null +++ b/src/main/resources/mixins.novaeng_core_techguns.json @@ -0,0 +1,12 @@ +{ + "package": "github.kasuminova.novaeng.mixin.techguns", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": [ + ], + "mixins": [ + "MixinItemRenderHack" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.novaeng_core_vanilla.json b/src/main/resources/mixins.novaeng_core_vanilla.json index 900d908c..cf8a96e3 100644 --- a/src/main/resources/mixins.novaeng_core_vanilla.json +++ b/src/main/resources/mixins.novaeng_core_vanilla.json @@ -1,16 +1,19 @@ { - "package": "github.kasuminova.novaeng.mixin.minecraft", - "refmap": "mixins.novaeng_core.refmap.json", - "target": "@env(DEFAULT)", - "minVersion": "0.8", - "compatibilityLevel": "JAVA_8", - "mixins": [ - "MixinNettyPacketDecoder", - "forge.MixinSimpleIndexedCodec" - ], - "client": [ - "AccessorParticleManager", - "MixinFontRenderer", - "MixinNettyCompressionDecoder" - ] + "package": "github.kasuminova.novaeng.mixin.minecraft", + "refmap": "mixins.novaeng_core.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "MixinNettyPacketDecoder", + "MixinRecipeBookServer", + "forge.MixinSimpleIndexedCodec" + ], + "client": [ + "AccessorParticleManager", + "MixinFontRenderer", + "MixinNetHandlerPlayClient", + "MixinNettyCompressionDecoder", + "forge.MixinForgeHooksClient" + ] } \ No newline at end of file