From 795204e41bb29336bba7df186031ce6634ef1771 Mon Sep 17 00:00:00 2001 From: pietru Date: Sat, 2 Nov 2024 12:45:41 +0100 Subject: [PATCH] update for 0.3.4 --- build.gradle | 127 ++++++++++++------ gradle.properties | 9 +- .../pietru/omni_power/blockevents/Power.java | 26 ++-- .../pietru/omni_power/ui/CustomScreen.java | 12 +- 4 files changed, 112 insertions(+), 62 deletions(-) diff --git a/build.gradle b/build.gradle index 7b75ce3..a92360d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,16 +1,14 @@ plugins { - id "application" + id "java-library" id "maven-publish" } repositories { ivy { name "Cosmic Reach" - url "https://github.com/CRModders/CosmicArchive/raw/main/versions/pre-alpha" + url "https://github.com/CRModders/CosmicArchive/raw/main/versions" patternLayout { - //artifact "/Cosmic Reach-[revision].jar" - artifact "/[revision]/[classifier]/Cosmic Reach-[revision].jar" - artifact "/[revision]/[classifier]/Cosmic Reach-Server-[revision].jar" + artifact "[classifier]/[revision]/client/Cosmic-Reach-[revision].jar" } // This is required in Gradle 6.0+ as metadata file (ivy.xml) is mandatory metadataSources { @@ -22,6 +20,23 @@ repositories { } } + ivy { + name "Cosmic Reach" + url "https://github.com/CRModders/CosmicArchive/raw/main/versions" + patternLayout { + artifact "[classifier]/[revision]/server/Cosmic-Reach-Server-[revision].jar" + } + // This is required in Gradle 6.0+ as metadata file (ivy.xml) is mandatory + metadataSources { + artifact() + } + + content { + includeModule "finalforeach", "cosmicreach-server" + } + } + + maven { name "crmReleases" url "https://maven.crmodders.dev/releases" @@ -59,20 +74,39 @@ repositories { configurations { - cosmicreach // Config to provide the Cosmic Reach project - compileOnly.extendsFrom(cosmicreach) // Allows cosmic reach to be used in the codebase + // Config to provide the Cosmic Reach project + cosmicreach + // Config to provide the Cosmic Reach project + cosmicreachServer + + // Allows cosmic reach to be used in the codebase + compileOnly.extendsFrom(cosmicreach) + compileOnly.extendsFrom(cosmicreachServer) + + + + internal { + visible = false + canBeConsumed = false + canBeResolved = false + } + compileClasspath.extendsFrom(internal) + runtimeClasspath.extendsFrom(internal) + testCompileClasspath.extendsFrom(internal) + testRuntimeClasspath.extendsFrom(internal) - quiltMod // Config to be able to load Quilt Mods - implementation.extendsFrom(quiltMod) } dependencies { // Cosmic Reach jar - cosmicreach "finalforeach:cosmicreach:${cosmic_reach_version}:${jar_type}" + cosmicreach "finalforeach:cosmicreach:${cosmic_reach_version}:pre-alpha" + cosmicreachServer "finalforeach:cosmicreach-server:${cosmic_reach_server_version? cosmic_reach_server_version: cosmic_reach_version}:pre-alpha" // Cosmic Quilt - implementation "org.codeberg.CRModders:cosmic-quilt:${cosmic_quilt_version}" + internal "org.codeberg.CRModders:cosmic-quilt:${cosmic_quilt_version}" + // Modmenu +// internal "org.codeberg.CRModders:modmenu:${modmenu_version}" //quiltMod "quilt-mod:fluxapi:0.5.8r2" //quiltMod "dev.crmodders:fluxapi:${fluxapi_version}"//0.5.5 @@ -105,7 +139,7 @@ dependencies { processResources { def resourceTargets = [ // Locations of where to inject the properties - "quilt.mod.json" + "quilt.mod.json" ] // Left item is the name in the target, right is the varuable name @@ -125,46 +159,53 @@ processResources { } -application { - // As Quilt is our loader, use its main class at: - mainClass = "org.quiltmc.loader.impl.launch.knot.KnotClient" -} - -// Sets up all the Quilt Mods -//def String getQuiltModLocations(Configuration config) { -// StringBuilder sb = new StringBuilder() -// for (obj in config.allDependencies) { -// sb.append(File.pathSeparator + config.files(obj)[0]) -// } -// return sb.toString() -//} - -applicationDefaultJvmArgs = [ - //"-Dloader.skipMcProvider=true", // Stops Quilt from attempting to find mappings, and all the other Minecraft stuff - "-Dloader.development=true", // Allows stuff to be found through the classpath - "-Dloader.gameJarPath=" + configurations.cosmicreach.asPath, // Defines path to Cosmic Reach -// "-Dloader.addMods=" + -// jar.archiveFile.get().asFile + // Add the jar of this project -// getQuiltModLocations(configurations.quiltMod) // Adds the jars of any Quilt mods added -] - - -run { - // To run this project in the game, depend on the creation of jar task +tasks.register("runClient", JavaExec) { + // We need to build the jar before we can actually run dependsOn "jar" + // We need to use Quilt's main class so that we can actually modify the game + mainClass = "dev.crmodders.cosmicquilt.loader.knot.KnotClient" + // Tells this task the dependencies needed for it to run properly. + classpath sourceSets.main.runtimeClasspath + + // Allows stuff to be found through the classpath + jvmArgs "-Dloader.development=true" + // Tells the loader where the game jar is located + jvmArgs "-Dloader.gameJarPath=" + configurations.cosmicreach.asPath + // Change the run directory File runningDir = new File("run/") if (!runningDir.exists()) runningDir.mkdirs() - tasks.run.workingDir = runningDir + workingDir = runningDir +} + +tasks.register("runServer", JavaExec) { + // We need to build the jar before we can actually run + dependsOn "jar" + + standardInput = System.in + // We need to use Quilt's main class so that we can actually modify the game + mainClass = "dev.crmodders.cosmicquilt.loader.knot.KnotServer" + // Tells this task the dependencies needed for it to run properly. + classpath sourceSets.main.runtimeClasspath + + // Allows stuff to be found through the classpath + jvmArgs "-Dloader.development=true" + // Tells the loader where the game jar is located + jvmArgs "-Dloader.gameJarPath=" + configurations.cosmicreachServer.asPath + + // Change the run directory + File runningDir = new File("run/") + if (!runningDir.exists()) + runningDir.mkdirs() + workingDir = runningDir } - java { - withSourcesJar() - // withJavadocJar() // If docs are included with the project, this line can be un-commented + withSourcesJar() + // withJavadocJar() // If docs are included with the project, this line can be un-commented // Sets the Java version sourceCompatibility = JavaVersion.VERSION_17 @@ -177,7 +218,7 @@ publishing { groupId = group artifactId = id - from components.java + from components.java } } diff --git a/gradle.properties b/gradle.properties index 7d51bbe..5dc41ed 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,8 +9,9 @@ group=net.pietru id=omni_power # Dependency Versions -cosmic_reach_version=0.3.2-pre2 -cosmic_quilt_version=2.0.2 -jar_type=client +cosmic_reach_version=0.3.4 +# If unspecified, will use the version above +cosmic_reach_server_version=0.3.4 +cosmic_quilt_version=2.3.1 -#fluxapi_version=0.6.0 \ No newline at end of file +# modmenu_version=1.0.7 \ No newline at end of file diff --git a/src/main/java/net/pietru/omni_power/blockevents/Power.java b/src/main/java/net/pietru/omni_power/blockevents/Power.java index 82a7358..f133103 100644 --- a/src/main/java/net/pietru/omni_power/blockevents/Power.java +++ b/src/main/java/net/pietru/omni_power/blockevents/Power.java @@ -2,6 +2,8 @@ package net.pietru.omni_power.blockevents; import com.badlogic.gdx.utils.Array; import finalforeach.cosmicreach.blockentities.BlockEntity; +import finalforeach.cosmicreach.blockevents.BlockEventArgs; +import finalforeach.cosmicreach.blockevents.ScheduledTrigger; import finalforeach.cosmicreach.blockevents.actions.ActionId; import finalforeach.cosmicreach.blockevents.actions.IBlockAction; import finalforeach.cosmicreach.blocks.BlockPosition; @@ -11,6 +13,7 @@ import finalforeach.cosmicreach.world.Zone; import net.pietru.omni_power.OmniPower; import net.pietru.omni_power.api.IPowerClient; import net.pietru.omni_power.api.IPowerProducer; +import org.spongepowered.asm.mixin.Shadow; import java.util.HashMap; import java.util.Map; @@ -28,11 +31,9 @@ public class Power implements IBlockAction { } @Override - public void act(BlockState blockState, BlockEventTrigger blockEventTrigger, Zone zone, Map args) { - this.act(zone, (BlockPosition)args.get("blockPos")); - } - - public void act(Zone zone, BlockPosition sourcePos) { + public void act(BlockEventArgs args) { + Zone zone = args.zone; + BlockPosition sourcePos = args.blockPos; boolean source_be = false; BlockEntity source_entity = null; if (block_entities){ @@ -56,7 +57,7 @@ public class Power implements IBlockAction { continue; } if (to_check!=sourcePos || this.self_run){ - runTrigger(this.triggerId,to_check,zone); + runTrigger(this.triggerId,to_check,args); } if (block_entities && source_be){ BlockEntity target_entity = to_check.chunk.getBlockEntity(to_check.localX,to_check.localY,to_check.localZ); @@ -72,7 +73,9 @@ public class Power implements IBlockAction { } } - private void runTrigger(String triggerId, BlockPosition triggerPos, Zone zone) { + private void runTrigger(String triggerId, BlockPosition triggerPos, BlockEventArgs args) { + + Zone zone = args.zone; if (triggerPos != null) { BlockState targetBlockState = triggerPos.getBlockState(); if (targetBlockState == null) { @@ -84,11 +87,14 @@ public class Power implements IBlockAction { return; } - Map args = new HashMap<>(); - args.put("blockPos", triggerPos); + BlockEventArgs newArgs = new BlockEventArgs(); + newArgs.blockPos = triggerPos; + newArgs.zone = zone; + newArgs.srcBlockState = targetBlockState; + newArgs.srcIdentity = args.srcIdentity; for (BlockEventTrigger t : customTrigger) { - t.act(targetBlockState, zone, args); + t.act(newArgs); } } } diff --git a/src/main/java/net/pietru/omni_power/ui/CustomScreen.java b/src/main/java/net/pietru/omni_power/ui/CustomScreen.java index 57b0df2..4a51548 100644 --- a/src/main/java/net/pietru/omni_power/ui/CustomScreen.java +++ b/src/main/java/net/pietru/omni_power/ui/CustomScreen.java @@ -7,6 +7,7 @@ import com.badlogic.gdx.scenes.scene2d.utils.NinePatchDrawable; import com.badlogic.gdx.utils.JsonValue; import finalforeach.cosmicreach.GameAssetLoader; import finalforeach.cosmicreach.gamestates.InGame; +import finalforeach.cosmicreach.items.ISlotContainerParent; import finalforeach.cosmicreach.items.ItemSlot; import finalforeach.cosmicreach.items.containers.SlotContainer; import finalforeach.cosmicreach.items.screens.BaseItemScreen; @@ -28,7 +29,8 @@ public class CustomScreen extends BaseItemScreen { SlotContainer container; CustomUIBlockEntity blockEntity; - public CustomScreen(final CustomUIBlockEntity be, final String ui_id) { + public CustomScreen(ISlotContainerParent parent,final CustomUIBlockEntity be, final String ui_id) { + super(parent); if (!OmniPower.uis.containsKey(ui_id)) { System.out.println("Omni Power [ERROR] Tried accessing/opening non existent ui data."); @@ -51,7 +53,7 @@ public class CustomScreen extends BaseItemScreen { for (int i = 0; i