diff --git a/.forgejo/workflows/release_publish.yaml.disabled b/.forgejo/workflows/release_publish.yaml.disabled new file mode 100644 index 0000000..858900f --- /dev/null +++ b/.forgejo/workflows/release_publish.yaml.disabled @@ -0,0 +1,48 @@ +on: + release: + types: [published] + +env: + godot_version: 4.2.1 + +jobs: + Auto-Build-App: + runs-on: docker + steps: + - name: Install Packages + run: | + apt-get update + apt-get install -y --no-install-recommends zip \ + wget \ + curl + - name: Check out repository code + uses: actions/checkout@v3 + - run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner." + - name: Download Godot + run: | + echo "Downloading Godot ${{ env.godot_version }}" + wget https://github.com/godotengine/godot/releases/download/${{ env.godot_version }}-stable/Godot_v${{ env.godot_version }}-stable_linux.x86_64.zip + unzip Godot_v${{ env.godot_version }}-stable_linux.x86_64.zip + rm Godot_v${{ env.godot_version }}-stable_linux.x86_64.zip + mv Godot_v${{ env.godot_version }}-stable_linux.x86_64 godot.x86_64 + chmod +x godot.x86_64 + - name: Run code + run: godot.x86_64 -s upload_new_release.gd + - run: echo "🖥️ The workflow is now ready to build code on the runner." + - name: Build App + run: | + ./gradlew build + ls ${{ gitea.workspace }} + - name: List files in the repository + run: | + ls -lh ${{ gitea.workspace }} + - name: Upload windows build + uses: actions/upload-artifact@v3 + with: + name: BuildFiles + path: | + ./build/libs/*.jar + !./build/libs/*-sources.jar + - run: echo "🍏 This job's status is ${{ job.status }}." + + diff --git a/assets.py b/assets.py new file mode 100644 index 0000000..eacca22 --- /dev/null +++ b/assets.py @@ -0,0 +1,13 @@ +import os + +root_dir = './src/main/resources/omni_power' # current directory +pattern = '*.json' # file extension or pattern +assets_txt = './src/main/resources/omni_power/assets.txt' # current directory + +files = [] +for dirpath, dirnames, filenames in os.walk(root_dir): + for filename in filenames: + if fnmatch.fnmatch(filename, pattern): + files.append(os.path.join(dirpath, filename)) + +print(files) \ No newline at end of file diff --git a/build.gradle b/build.gradle index b71a46b..3490624 100644 --- a/build.gradle +++ b/build.gradle @@ -75,6 +75,31 @@ dependencies { //quiltMod "quilt-mod:fluxapi:0.5.8r2" //quiltMod "dev.crmodders:fluxapi:${fluxapi_version}"//0.5.5 + + def dir = new File(project.projectDir, "src/main/resources/${id}"); + def dir_path = dir.getPath() + + def files = dir.listFiles().toList(); + List paths = new ArrayList(); + + while (files.size()>0){ + File file = files[0] + files.remove(0) + if (file.isDirectory()) + files.addAll(file.listFiles().toList()) + else + paths.add(file.getPath()) + } + + String assets_txt = new File(project.projectDir,"src/main/resources/${id}/assets.txt") + FileWriter writer = new FileWriter(assets_txt) + String txt = "" + for (String path in paths) { + String sb = path.replace(dir_path+"/","${id}:").replace(dir_path+"\\","${id}:"); + txt += sb+"\n"; + } + writer.write(txt) + writer.close() } processResources { @@ -121,6 +146,7 @@ applicationDefaultJvmArgs = [ 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 dependsOn "jar" diff --git a/gradle.properties b/gradle.properties index abfc569..6fff4bf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.parallel=true org.gradle.caching=false # Project Info -version=1.7.1 +version=1.7.2 group=net.pietru id=omni_power diff --git a/src/main/java/net/pietru/omni_power/OmniPower.java b/src/main/java/net/pietru/omni_power/OmniPower.java index 26faf76..c7fa464 100644 --- a/src/main/java/net/pietru/omni_power/OmniPower.java +++ b/src/main/java/net/pietru/omni_power/OmniPower.java @@ -8,12 +8,18 @@ import net.pietru.omni_power.blockevents.Power; import dev.crmodders.cosmicquilt.api.entrypoint.ModInitializer; import org.quiltmc.loader.api.ModContainer; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; +import java.io.*; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.ArrayList; +import java.util.Collection; +import java.util.Enumeration; import java.util.List; +import java.util.regex.Pattern; +import java.util.zip.ZipEntry; +import java.util.zip.ZipException; +import java.util.zip.ZipFile; public class OmniPower implements ModInitializer { public static final String MOD_ID = "omni_power"; @@ -32,14 +38,12 @@ public class OmniPower implements ModInitializer { load_power_event(); - - try { - for (String path : getResourceFiles("omni_power/block_events")){ - System.out.println("Loading "+path); - BlockEvents.loadBlockEventsFromAsset(Gdx.files.classpath(path)); - } - } catch (IOException e) { - throw new RuntimeException(e); + List paths = List.of(Gdx.files.internal(MOD_ID + "/assets.txt").readString().split("\n")); + for (String path : paths){ + if (path.contains("block_events")) { + System.out.println("Loading " + path); + BlockEvents.loadBlockEventsFromAsset(GameAssetLoader.loadAsset(path)); //Gdx.files.classpath(path) + } } System.out.println("Registered OmniPower Events"); @@ -64,34 +68,5 @@ public class OmniPower implements ModInitializer { System.out.println("If msg above says something Duplicate block event action key it might be intended behaviour..."); } } - - public List getResourceFiles(String path) throws IOException { - List filenames = new ArrayList<>(); - - try ( - InputStream in = getResourceAsStream(path); - BufferedReader br = new BufferedReader(new InputStreamReader(in))) { - String resource; - - while ((resource = br.readLine()) != null) { - if (resource.endsWith(".json")) - filenames.add(path+"/"+resource); - else - filenames.addAll(getResourceFiles(path+"/"+resource)); - } - } - - return filenames; - } - - private InputStream getResourceAsStream(String resource) { - final InputStream in = getContextClassLoader().getResourceAsStream(resource); - - return in == null ? getClass().getResourceAsStream(resource) : in; - } - - private ClassLoader getContextClassLoader() { - return Thread.currentThread().getContextClassLoader(); - } } diff --git a/src/main/resources/omni_power/assets.txt b/src/main/resources/omni_power/assets.txt new file mode 100644 index 0000000..49f2967 --- /dev/null +++ b/src/main/resources/omni_power/assets.txt @@ -0,0 +1,56 @@ +omni_power:assets.txt +omni_power:blocks\cable.json +omni_power:blocks\cable_adapter.json +omni_power:blocks\cable_merger.json +omni_power:blocks\door_cube.json +omni_power:blocks\lever.json +omni_power:block_events\block_events_cable_merger_off.json +omni_power:block_events\block_events_cable_merger_on.json +omni_power:block_events\block_events_cable_merger_slim_off.json +omni_power:block_events\block_events_cable_merger_slim_on.json +omni_power:block_events\block_events_door_cube_off.json +omni_power:block_events\block_events_door_cube_on.json +omni_power:block_events\block_events_lever_blue_off.json +omni_power:block_events\block_events_lever_blue_on.json +omni_power:block_events\block_events_lever_red_off.json +omni_power:block_events\block_events_lever_red_on.json +omni_power:block_events\adapter\cable_adapter_blue_off.json +omni_power:block_events\adapter\cable_adapter_blue_on.json +omni_power:block_events\adapter\cable_adapter_red_off.json +omni_power:block_events\adapter\cable_adapter_red_on.json +omni_power:models\blocks\model_cable_blue.json +omni_power:models\blocks\model_cable_blue_slim.json +omni_power:models\blocks\model_cable_merger.json +omni_power:models\blocks\model_cable_merger_powered.json +omni_power:models\blocks\model_cable_merger_slim.json +omni_power:models\blocks\model_cable_merger_slim_powered.json +omni_power:models\blocks\model_cable_red.json +omni_power:models\blocks\model_cable_red_slim.json +omni_power:models\blocks\model_door_cube.json +omni_power:models\blocks\model_door_cube_powered.json +omni_power:models\blocks\model_lever_blue.json +omni_power:models\blocks\model_lever_blue_powered.json +omni_power:models\blocks\model_lever_red.json +omni_power:models\blocks\model_lever_red_powered.json +omni_power:sounds\blocks\drop_004.ogg +omni_power:sounds\blocks\maximize_006.ogg +omni_power:sounds\blocks\minimize_006.ogg +omni_power:sounds\blocks\select_006.ogg +omni_power:sounds\blocks\switch_005.ogg +omni_power:sounds\blocks\switch_006.ogg +omni_power:textures\blocks\cable_adapter_blue.png +omni_power:textures\blocks\cable_adapter_red.png +omni_power:textures\blocks\cable_blue.png +omni_power:textures\blocks\cable_merger.png +omni_power:textures\blocks\cable_merger_2.png +omni_power:textures\blocks\cable_red.png +omni_power:textures\blocks\door.png +omni_power:textures\blocks\door_powered.png +omni_power:textures\blocks\emergency.png +omni_power:textures\blocks\flat.png +omni_power:textures\blocks\lever_off_blue.png +omni_power:textures\blocks\lever_off_red.png +omni_power:textures\blocks\lever_on_blue.png +omni_power:textures\blocks\lever_on_red.png +omni_power:models\blocks\adapter\model_cable_adapter_blue.json +omni_power:models\blocks\adapter\model_cable_adapter_red.json diff --git a/upload_new_release.gd b/upload_new_release.gd new file mode 100644 index 0000000..55d9307 --- /dev/null +++ b/upload_new_release.gd @@ -0,0 +1,8 @@ +#!/usr/bin/env -S godot -s +extends SceneTree + +func _init(): + var repo_link = https://git.percraft.net:444/api/v1/repos/pietru/CR_OmniPower_Mod/releases/latest + print("Hello!") + #'${{secrets.RELEASE_TOKEN}}' + quit() \ No newline at end of file