From 23f8e896719e40f9fafd22bbb78b2f7c60c26b91 Mon Sep 17 00:00:00 2001 From: Akegarasu Date: Sun, 9 Mar 2025 11:02:35 +0800 Subject: [PATCH] neoforge 1.21 port --- .gitignore | 2 +- build.gradle | 219 +++++++----------- gradle.properties | 48 ++-- gradle/wrapper/gradle-wrapper.properties | 6 +- src/generated/resources/.cache/cache | 14 -- .../blocks/chunk_loader.json | 0 .../blocks/energy_transmitter.json | 0 .../blocks/fluid_transmitter.json | 0 .../blocks/item_transmitter.json | 0 .../tags/block/mineable/pickaxe.json | 5 + .../minecraft/tags/block/needs_iron_tool.json | 5 + .../tags/blocks/mineable/pickaxe.json | 9 - .../CreateEnderTransmission.java | 42 ++-- .../TransmissionPackets.java | 39 ++++ .../AbstractMatterTransmitterBlockEntity.java | 59 ----- .../blocks/MatterTransmitterNetwork.java | 8 +- .../blocks/MatterWorldSavedData.java | 15 +- .../blocks/chunkLoader/LoaderBlock.java | 63 ----- .../blocks/chunkLoader/LoaderBlockEntity.java | 63 ----- .../blocks/chunkLoader/LoaderInstance.java | 13 -- .../EnergyTransmitterBlock.java | 40 ++-- .../EnergyTransmitterBlockEntity.java | 25 +- .../FluidTransmitterBlock.java | 57 ----- .../FluidTransmitterBlockEntity.java | 47 ---- .../FluidTransmitterInventoryHandler.java | 100 -------- .../SerializableSmartFluidTank.java | 25 -- .../itemTransmitter/ItemTransmitterBlock.java | 65 ------ .../ItemTransmitterBlockEntity.java | 36 --- .../ItemTransmitterInventoryHandler.java | 78 ------- .../entry/ChunkLoaderRecipeCondition.java | 43 ---- .../entry/TransmissionBlockEntities.java | 28 +-- .../entry/TransmissionBlocks.java | 103 ++++---- .../entry/TransmissionConfig.java | 8 +- .../entry/TransmissionPackets.java | 83 ------- .../entry/TransmissionTab.java | 43 ++-- .../FluidTransmitterOnContraptionMixin.java | 18 -- .../ConfigureTransmitterPacket.java | 44 ++-- .../transmitUtil/ITransmitter.java | 14 +- .../transmitUtil/TransmitterScreen.java | 4 +- src/main/resources/META-INF/mods.toml | 31 --- .../resources/META-INF/neoforge.mods.toml | 99 ++++++++ .../createendertransmission.mixins.json | 10 - .../energy_transmitter.json | 6 +- .../recipes/chunk_loader.json | 25 -- .../recipes/fluid_transmitter.json | 31 --- .../recipes/item_transmitter.json | 31 --- src/main/resources/pack.mcmeta | 4 +- 47 files changed, 421 insertions(+), 1287 deletions(-) delete mode 100644 src/generated/resources/.cache/cache rename src/generated/resources/data/createendertransmission/{loot_tables => loot_table}/blocks/chunk_loader.json (100%) rename src/generated/resources/data/createendertransmission/{loot_tables => loot_table}/blocks/energy_transmitter.json (100%) rename src/generated/resources/data/createendertransmission/{loot_tables => loot_table}/blocks/fluid_transmitter.json (100%) rename src/generated/resources/data/createendertransmission/{loot_tables => loot_table}/blocks/item_transmitter.json (100%) create mode 100644 src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json create mode 100644 src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json delete mode 100644 src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json create mode 100644 src/main/java/com/forsteri/createendertransmission/TransmissionPackets.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/blocks/AbstractMatterTransmitterBlockEntity.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/blocks/chunkLoader/LoaderBlock.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/blocks/chunkLoader/LoaderBlockEntity.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/blocks/chunkLoader/LoaderInstance.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/FluidTransmitterBlock.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/FluidTransmitterBlockEntity.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/FluidTransmitterInventoryHandler.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/SerializableSmartFluidTank.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/blocks/itemTransmitter/ItemTransmitterBlock.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/blocks/itemTransmitter/ItemTransmitterBlockEntity.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/blocks/itemTransmitter/ItemTransmitterInventoryHandler.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/entry/ChunkLoaderRecipeCondition.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/entry/TransmissionPackets.java delete mode 100644 src/main/java/com/forsteri/createendertransmission/mixin/FluidTransmitterOnContraptionMixin.java delete mode 100644 src/main/resources/META-INF/mods.toml create mode 100644 src/main/resources/META-INF/neoforge.mods.toml delete mode 100644 src/main/resources/createendertransmission.mixins.json rename src/main/resources/data/createendertransmission/{recipes => recipe/mechanical_crafting}/energy_transmitter.json (78%) delete mode 100644 src/main/resources/data/createendertransmission/recipes/chunk_loader.json delete mode 100644 src/main/resources/data/createendertransmission/recipes/fluid_transmitter.json delete mode 100644 src/main/resources/data/createendertransmission/recipes/item_transmitter.json diff --git a/.gitignore b/.gitignore index 2e7e376..5604f76 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ build/ # Forge Gradle -run/ +runs/ # InteliJ .idea/**/dictionaries diff --git a/build.gradle b/build.gradle index 6637d13..dc756c6 100644 --- a/build.gradle +++ b/build.gradle @@ -2,8 +2,16 @@ plugins { id 'eclipse' id 'idea' id 'maven-publish' - id 'net.neoforged.gradle' version '[6.0.18,6.2)' - id 'org.spongepowered.mixin' version '0.7.+' + id 'net.neoforged.gradle.userdev' version '7.0.165' +} + +tasks.named('wrapper', Wrapper).configure { + // Define wrapper values here so as to not have to always do so when updating gradlew.properties. + // Switching this to Wrapper.DistributionType.ALL will download the full gradle sources that comes with + // documentation attached on cursor hover of gradle classes and methods. However, this comes with increased + // file size for Gradle. If you do switch this to ALL, run the Gradle wrapper task twice afterwards. + // (Verify by checking gradle/wrapper/gradle-wrapper.properties to see if distributionUrl now points to `-all`) + distributionType = Wrapper.DistributionType.BIN } version = mod_version @@ -14,110 +22,58 @@ base { } // Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17. -java.toolchain.languageVersion = JavaLanguageVersion.of(17) +java.toolchain.languageVersion = JavaLanguageVersion.of(21) println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}" -minecraft { - // The mappings can be changed at any time and must be in the following format. - // Channel: Version: - // official MCVersion Official field/method names from Mojang mapping files - // parchment YYYY.MM.DD-MCVersion Open community-sourced parameter names and javadocs layered on top of official - // - // You must be aware of the Mojang license when using the 'official' or 'parchment' mappings. - // See more information here: https://github.com/NeoForged/NeoForm/blob/main/Mojang.md - // - // Parchment is an unofficial project maintained by ParchmentMC, separate from MinecraftForge - // Additional setup is needed to use their mappings: https://parchmentmc.org/docs/getting-started - // - // Use non-default mappings at your own risk. They may not always work. - // Simply re-run your setup task after changing the mappings to update your workspace. - mappings channel: mapping_channel, version: mapping_version - - // When true, this property will have all Eclipse/IntelliJ IDEA run configurations run the "prepareX" task for the given run configuration before launching the game. - // In most cases, it is not necessary to enable. - // enableEclipsePrepareRuns = true - // enableIdeaPrepareRuns = true - - // This property allows configuring Gradle's ProcessResources task(s) to run on IDE output locations before launching the game. - // It is REQUIRED to be set to true for this template to function. - // See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html - copyIdeResources = true - - // When true, this property will add the folder name of all declared run configurations to generated IDE run configurations. - // The folder name can be set on a run configuration using the "folderName" property. - // By default, the folder name of a run configuration is the name of the Gradle project containing it. - // generateRunFolders = true - - // This property enables access transformers for use in development. - // They will be applied to the Minecraft artifact. - // The access transformer file can be anywhere in the project. - // However, it must be at "META-INF/accesstransformer.cfg" in the final mod jar to be loaded by Forge. - // This default location is a best practice to automatically put the file in the right place in the final jar. - // See https://docs.neoforged.net/docs/1.20.x/advanced/accesstransformers/ for more information. - - // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') - - // Default run configurations. - // These can be tweaked, removed, or duplicated as needed. - runs { - // applies to all the run configs below - configureEach { - workingDirectory project.file('run') - - // Recommended logging data for a userdev environment - // The markers can be added/remove as needed separated by commas. - // "SCAN": For mods scan. - // "REGISTRIES": For firing of registry events. - // "REGISTRYDUMP": For getting the contents of all registries. - property 'forge.logging.markers', 'REGISTRIES' - - // Recommended logging level for the console - // You can set various levels here. - // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels - property 'forge.logging.console.level', 'debug' - - mods { - "${mod_id}" { - //noinspection GroovyAssignabilityCheck - source sourceSets.main - } - } - } - - client { - // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. - property 'forge.enabledGameTestNamespaces', mod_id - } - - server { - property 'forge.enabledGameTestNamespaces', mod_id - args '--nogui' - } - // This run config launches GameTestServer and runs all registered gametests, then exits. - // By default, the server will crash when no gametests are provided. - // The gametest system is also enabled by default for other run configs under the /test command. - gameTestServer { - property 'forge.enabledGameTestNamespaces', mod_id - } - - data { - // example of overriding the workingDirectory set in configureEach above - workingDirectory project.file('run-data') - - // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. - args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') - } +runs { + configureEach { + systemProperty 'forge.logging.markers', 'REGISTRIES' + systemProperty 'forge.logging.console.level', 'debug' + modSource project.sourceSets.main + } + client { + systemProperty 'forge.enabledGameTestNamespaces', project.mod_id + } + server { + systemProperty 'forge.enabledGameTestNamespaces', project.mod_id + programArgument '--nogui' + } + gameTestServer { + systemProperty 'forge.enabledGameTestNamespaces', project.mod_id + } + data { + programArguments.addAll '--mod', project.mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath() } } + // Include resources generated by data generators. sourceSets.main.resources { srcDir 'src/generated/resources' } repositories { - maven { url = "https://maven.createmod.net" } // Create, Ponder, Flywheel - maven { url = "https://maven.tterrag.com" } // Registrate - maven { url = "https://raw.githubusercontent.com/Fuzss/modresources/main/maven/" } // ForgeConfigAPIPort + maven { url = "https://maven.createmod.net" } // Ponder, Flywheel + maven { url = "https://mvn.devos.one/snapshots" } // Registrate + maven { url = "https://maven.blamejared.com" } // JEI, Vazkii's Mods + maven { url = "https://harleyoconnor.com/maven" } // Dynamic Trees + maven { url = "https://maven.theillusivec4.top/" } // Curios API + maven { url = "https://maven.squiddev.cc" } // CC: Tweaked + maven { url = "https://www.cursemaven.com" } + maven { url = "https://api.modrinth.com/maven" } + maven { url = "https://maven.saps.dev/releases" } // FTB Mods + maven { url = "https://maven.architectury.dev" } // Arch API + maven { url = "https://raw.githubusercontent.com/Fuzss/modresources/main/maven" } // NeoForge config api port, needed by ponder + maven { + url = "https://jm.gserv.me/repository/maven-public" // JourneyMap + content { + includeGroup "info.journeymap" + includeGroup "mysticdrew" + } + } +} + +dependencies { + implementation "net.neoforged:neoforge:${neo_version}" } dependencies { @@ -126,15 +82,15 @@ dependencies { // The "userdev" classifier will be requested and setup by NeoGradle. // If the group id is "net.minecraft" and the artifact id is one of ["client", "server", "joined"], // then special handling is done to allow a setup of a vanilla dependency without the use of an external repository. - minecraft "net.neoforged:forge:${minecraft_version}-${neo_version}" - annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' - implementation(fg.deobf("com.simibubi.create:create-${minecraft_version}:${create_version}:slim") { transitive = false }) - implementation(fg.deobf("net.createmod.ponder:Ponder-Forge-${minecraft_version}:${ponder_version}")) - compileOnly(fg.deobf("dev.engine-room.flywheel:flywheel-forge-api-${minecraft_version}:${flywheel_version}")) - runtimeOnly(fg.deobf("dev.engine-room.flywheel:flywheel-forge-${minecraft_version}:${flywheel_version}")) - implementation(fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}")) - compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:0.4.1")) - implementation("io.github.llamalad7:mixinextras-forge:0.4.1") +// minecraft "net.neoforged:forge:${minecraft_version}-${neo_version}" +// annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' + implementation "com.simibubi.create:create-${minecraft_version}:${create_version}:slim" + implementation "net.createmod.ponder:Ponder-NeoForge-${minecraft_version}:${ponder_version}" + compileOnly "dev.engine-room.flywheel:flywheel-neoforge-api-${minecraft_version}:${flywheel_version}" + runtimeOnly "dev.engine-room.flywheel:flywheel-neoforge-${minecraft_version}:${flywheel_version}" + implementation "com.tterrag.registrate:Registrate:${registrate_version}" +// compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:0.4.1")) +// implementation("io.github.llamalad7:mixinextras-forge:0.4.1") // Example mod dependency with JEI - using fg.deobf() ensures the dependency is remapped to your development mappings // The JEI API is declared for compile time use, while the full JEI artifact is used at runtime @@ -166,33 +122,16 @@ tasks.withType(ProcessResources).configureEach { ] inputs.properties replaceProperties - filesMatching(['META-INF/mods.toml', 'pack.mcmeta']) { - expand replaceProperties + [project: project] + filesMatching(['META-INF/neoforge.mods.toml']) { + expand replaceProperties } } -// Example for how to get properties into the manifest for reading at runtime. -tasks.named('jar', Jar).configure { - manifest { - attributes([ - 'Specification-Title' : mod_id, - 'Specification-Vendor' : mod_authors, - 'Specification-Version' : '1', // We are version 1 of ourselves - 'Implementation-Title' : project.name, - 'Implementation-Version' : project.jar.archiveVersion, - 'Implementation-Vendor' : mod_authors, - 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") - ]) - } - // This is the preferred method to reobfuscate your jar file - finalizedBy 'reobfJar' -} - -mixin { - add sourceSets.main, "mixins.${mod_id}.refmap.json" - config "${mod_id}.mixins.json" -} +//mixin { +// add sourceSets.main, "mixins.${mod_id}.refmap.json" +// config "${mod_id}.mixins.json" +//} // However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing: // tasks.named('publish').configure { @@ -200,18 +139,18 @@ mixin { // } // Example configuration to allow publishing using the maven-publish plugin -publishing { - publications { - register('mavenJava', MavenPublication) { - artifact jar - } - } - repositories { - maven { - url "file://${project.projectDir}/mcmodsrepo" - } - } -} +//publishing { +// publications { +// register('mavenJava', MavenPublication) { +// artifact jar +// } +// } +// repositories { +// maven { +// url "file://${project.projectDir}/mcmodsrepo" +// } +// } +//} tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation diff --git a/gradle.properties b/gradle.properties index e64372a..c67033c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,32 +1,26 @@ # Sets default memory used for gradle commands. Can be overridden by user or command line properties. # This is required to provide enough memory for the Minecraft decompilation process. -org.gradle.jvmargs = -Xmx3G -org.gradle.daemon = false - -minecraft_version = 1.20.1 -minecraft_version_range = [1.20,1.21) -neo_version = 47.1.25 -neo_version_range = [47.1,) -loader_version_range = [47,) - -create_version = 6.0.2-52 -ponder_version = 1.0.51 -flywheel_version = 1.0.1 -registrate_version = MC1.20-1.3.3 - -mapping_channel = official -mapping_version = 1.20.1 - - -mod_id = createendertransmission -mod_name = Create Ender Transmission -mod_license = All Right Reserved -mod_version = 2.1.0-1.20.1 -mod_group_id = com.forsteri.createendertransmission -mod_authors = Forsteri -pack_format_number = 15 - -mod_description = \ +org.gradle.jvmargs=-Xmx3G +org.gradle.daemon=false +minecraft_version=1.21.1 +minecraft_version_range=[1.21,1.21.1) +neo_version=21.1.125 +neo_version_range=[21.1.125,) +loader_version_range=[4,) +create_version=6.0.2-36 +ponder_version=1.0.44 +flywheel_version=1.0.1-11 +registrate_version=MC1.21-1.3.0+50 +parchment_minecraft_version=1.21.1 +parchment_mappings_version=2024.11.17 +mod_id=createendertransmission +mod_name=Create Ender Transmission +mod_license=All Right Reserved +mod_version=2.1.1-1.21.1 +mod_group_id=com.forsteri.createendertransmission +mod_authors=Forsteri +pack_format_number=15 +mod_description=\ "Non-dimensional Machanines \ \ Have you ever feel like you have lost your mind at formating networks?\ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c898b7a..683d2e4 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ +#Sat Mar 08 16:36:28 CST 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip -networkTimeout=10000 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists \ No newline at end of file +zipStorePath=wrapper/dists diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache deleted file mode 100644 index 9047352..0000000 --- a/src/generated/resources/.cache/cache +++ /dev/null @@ -1,14 +0,0 @@ -47e79cfb104f42863f77d2a3b1bc179c3b802e46 assets/createendertransmission/blockstates/chunk_loader.json -3f193031ff57139c60de6ff16358672c456b62b8 assets/createendertransmission/blockstates/energy_transmitter.json -a3336f56fa4745cfe65ac5d4a8f08890c46832f9 assets/createendertransmission/blockstates/fluid_transmitter.json -e76a29d4db469c18989e1791aa5650794cd427d4 assets/createendertransmission/blockstates/item_transmitter.json -1ab053d76666d79d66f147ab7ae87ea91c5e3652 assets/createendertransmission/lang/en_ud.json -e24ea590af61378c2b662636af24b4ef865cb11e assets/createendertransmission/lang/en_us.json -5823f4ad6706294636927e36e05ea03b42fb6e38 assets/createendertransmission/models/item/chunk_loader.json -8a216f80f28a5a7631c61144bee4054be62ab019 assets/createendertransmission/models/item/fluid_transmitter.json -57d3d1e2a519eddad552f8f988ea850f38b96bed assets/createendertransmission/models/item/item_transmitter.json -63392b5dff9eec1c3ab302dbc6ff8c5925cb9f65 data/createendertransmission/loot_tables/blocks/chunk_loader.json -fd286694e58d40689330b597720dcd9982787621 data/createendertransmission/loot_tables/blocks/energy_transmitter.json -82c169e54c2f4151fbb5224ddff498a898ef1d93 data/createendertransmission/loot_tables/blocks/fluid_transmitter.json -3f6e1d4082db943260623e69fb4c79b94843c9f4 data/createendertransmission/loot_tables/blocks/item_transmitter.json -a998ec1b4480797e046f4c89bdaa208bec79f1ad data/minecraft/tags/blocks/mineable/pickaxe.json diff --git a/src/generated/resources/data/createendertransmission/loot_tables/blocks/chunk_loader.json b/src/generated/resources/data/createendertransmission/loot_table/blocks/chunk_loader.json similarity index 100% rename from src/generated/resources/data/createendertransmission/loot_tables/blocks/chunk_loader.json rename to src/generated/resources/data/createendertransmission/loot_table/blocks/chunk_loader.json diff --git a/src/generated/resources/data/createendertransmission/loot_tables/blocks/energy_transmitter.json b/src/generated/resources/data/createendertransmission/loot_table/blocks/energy_transmitter.json similarity index 100% rename from src/generated/resources/data/createendertransmission/loot_tables/blocks/energy_transmitter.json rename to src/generated/resources/data/createendertransmission/loot_table/blocks/energy_transmitter.json diff --git a/src/generated/resources/data/createendertransmission/loot_tables/blocks/fluid_transmitter.json b/src/generated/resources/data/createendertransmission/loot_table/blocks/fluid_transmitter.json similarity index 100% rename from src/generated/resources/data/createendertransmission/loot_tables/blocks/fluid_transmitter.json rename to src/generated/resources/data/createendertransmission/loot_table/blocks/fluid_transmitter.json diff --git a/src/generated/resources/data/createendertransmission/loot_tables/blocks/item_transmitter.json b/src/generated/resources/data/createendertransmission/loot_table/blocks/item_transmitter.json similarity index 100% rename from src/generated/resources/data/createendertransmission/loot_tables/blocks/item_transmitter.json rename to src/generated/resources/data/createendertransmission/loot_table/blocks/item_transmitter.json diff --git a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json new file mode 100644 index 0000000..58da593 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -0,0 +1,5 @@ +{ + "values": [ + "createendertransmission:energy_transmitter" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json b/src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json new file mode 100644 index 0000000..58da593 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/block/needs_iron_tool.json @@ -0,0 +1,5 @@ +{ + "values": [ + "createendertransmission:energy_transmitter" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json deleted file mode 100644 index 0b14477..0000000 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "createendertransmission:chunk_loader", - "createendertransmission:energy_transmitter", - "createendertransmission:item_transmitter", - "createendertransmission:fluid_transmitter" - ] -} \ No newline at end of file diff --git a/src/main/java/com/forsteri/createendertransmission/CreateEnderTransmission.java b/src/main/java/com/forsteri/createendertransmission/CreateEnderTransmission.java index c519eb3..26998e3 100644 --- a/src/main/java/com/forsteri/createendertransmission/CreateEnderTransmission.java +++ b/src/main/java/com/forsteri/createendertransmission/CreateEnderTransmission.java @@ -7,45 +7,40 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.LevelAccessor; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.crafting.CraftingHelper; -import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.event.level.LevelEvent; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.ModLoadingContext; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.config.ModConfig; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegisterEvent; +import net.neoforged.fml.ModContainer; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.event.entity.player.PlayerEvent; +import net.neoforged.neoforge.event.level.LevelEvent; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.config.ModConfig; -// The value here should match an entry in the META-INF/mods.toml file +// The value here should match an entry in the META-INF/neoforge.mods.toml file @Mod(CreateEnderTransmission.MOD_ID) public class CreateEnderTransmission { public static final String MOD_ID = "createendertransmission"; - public CreateEnderTransmission() { - MinecraftForge.EVENT_BUS.register(this); + public CreateEnderTransmission(IEventBus modEventBus, ModContainer modContainer) { +// NeoForge.EVENT_BUS.register(this); - IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); +// IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); REGISTRATE.registerEventListeners(modEventBus); TransmissionBlocks.register(); TransmissionBlockEntities.register(); - TransmissionPackets.registerPackets(); + TransmissionPackets.register(); TransmissionLang.register(); TransmissionTab.register(modEventBus); - ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, TransmissionConfig.SPEC, "createendertransmission-server.toml"); - FMLJavaModLoadingContext.get().getModEventBus().addListener(this::registerRecipeSerializers); + modContainer.registerConfig(ModConfig.Type.COMMON, TransmissionConfig.SPEC, "createendertransmission-server.toml"); } public static MatterWorldSavedData savedData = null; - @Mod.EventBusSubscriber + @EventBusSubscriber public static class CommonEvents { @SubscribeEvent public static void playerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) { @@ -74,11 +69,4 @@ public static CreateRegistrate registrate() { public static final CreateRegistrate REGISTRATE = CreateRegistrate.create(CreateEnderTransmission.MOD_ID); - public void registerRecipeSerializers(RegisterEvent event) - { - if (event.getRegistryKey().equals(ForgeRegistries.Keys.RECIPE_SERIALIZERS)) - { - CraftingHelper.register(ChunkLoaderRecipeCondition.Serializer.INSTANCE); - } - } } diff --git a/src/main/java/com/forsteri/createendertransmission/TransmissionPackets.java b/src/main/java/com/forsteri/createendertransmission/TransmissionPackets.java new file mode 100644 index 0000000..c212f15 --- /dev/null +++ b/src/main/java/com/forsteri/createendertransmission/TransmissionPackets.java @@ -0,0 +1,39 @@ +package com.forsteri.createendertransmission; + +import com.forsteri.createendertransmission.transmitUtil.ConfigureTransmitterPacket; +import net.createmod.catnip.net.base.BasePacketPayload; +import net.createmod.catnip.net.base.CatnipPacketRegistry; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +import java.util.Locale; + +public enum TransmissionPackets implements BasePacketPayload.PacketTypeProvider { + CONFIGURE_TRANSMITTER(ConfigureTransmitterPacket.class, ConfigureTransmitterPacket.STREAM_CODEC); + + private final CatnipPacketRegistry.PacketType type; + + TransmissionPackets(Class clazz, StreamCodec codec) { + String name = this.name().toLowerCase(Locale.ROOT); + this.type = new CatnipPacketRegistry.PacketType<>( + new CustomPacketPayload.Type<>(ResourceLocation.fromNamespaceAndPath("createendertransmission", name)), + clazz, codec + ); + } + + @Override + @SuppressWarnings("unchecked") + public CustomPacketPayload.Type getType() { + return (CustomPacketPayload.Type) this.type.type(); + } + + public static void register() { + CatnipPacketRegistry packetRegistry = new CatnipPacketRegistry("createendertransmission", 1); + for (TransmissionPackets packet : TransmissionPackets.values()) { + packetRegistry.registerPacket(packet.type); + } + packetRegistry.registerAllPackets(); + } +} \ No newline at end of file diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/AbstractMatterTransmitterBlockEntity.java b/src/main/java/com/forsteri/createendertransmission/blocks/AbstractMatterTransmitterBlockEntity.java deleted file mode 100644 index 279a57d..0000000 --- a/src/main/java/com/forsteri/createendertransmission/blocks/AbstractMatterTransmitterBlockEntity.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.forsteri.createendertransmission.blocks; - -import com.simibubi.create.content.kinetics.base.KineticBlockEntity; -import com.forsteri.createendertransmission.CreateEnderTransmission; -import com.forsteri.createendertransmission.transmitUtil.ITransmitter; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.common.util.LazyOptional; -import org.jetbrains.annotations.NotNull; - -import java.util.Map; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.function.Supplier; - -public abstract class AbstractMatterTransmitterBlockEntity extends KineticBlockEntity implements ITransmitter { - public LazyOptional capability; - public AbstractMatterTransmitterBlockEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { - super(typeIn, pos, state); - capability = LazyOptional.of(() -> getCapability().apply(this::getInv)); - } - - protected abstract MatterTransmitterNetwork getNetwork(); - - protected abstract Function>, ?> getCapability(); - - public INBTSerializable getInv(){ - Map> channel = getNetwork().channels.get(getChannel()); - - if (channel.containsKey(getPassword())) - return channel.get(getPassword()); - - INBTSerializable inv = getNetwork().defaultInv.get(); - channel.put(getPassword(), inv); - - CreateEnderTransmission.savedData.setDirty(); - - return inv; - } - - protected abstract Predicate> getMatterCapPredicate(); - - @NotNull - @Override - public LazyOptional getCapability(@NotNull Capability cap, Direction side) { - if (getMatterCapPredicate().test(cap)) return capability.cast(); - return super.getCapability(cap, side); - } - - @Override - public void reloadSettings() { - ITransmitter.super.reloadSettings(); - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/MatterTransmitterNetwork.java b/src/main/java/com/forsteri/createendertransmission/blocks/MatterTransmitterNetwork.java index 4030484..cd109fc 100644 --- a/src/main/java/com/forsteri/createendertransmission/blocks/MatterTransmitterNetwork.java +++ b/src/main/java/com/forsteri/createendertransmission/blocks/MatterTransmitterNetwork.java @@ -1,10 +1,10 @@ package com.forsteri.createendertransmission.blocks; -import com.forsteri.createendertransmission.blocks.fluidTrasmitter.SerializableSmartFluidTank; +//import com.forsteri.createendertransmission.blocks.fluidTrasmitter.SerializableSmartFluidTank; import com.forsteri.createendertransmission.CreateEnderTransmission; import net.minecraft.nbt.CompoundTag; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.items.ItemStackHandler; +import net.neoforged.neoforge.common.util.INBTSerializable; +import net.neoforged.neoforge.items.ItemStackHandler; import java.util.ArrayList; import java.util.HashMap; @@ -20,7 +20,7 @@ protected void onContentsChanged(int slot) { CreateEnderTransmission.savedData.setDirty(); } }), - FLUID(() -> new SerializableSmartFluidTank(1000, contents -> CreateEnderTransmission.savedData.setDirty())) +// FLUID(() -> new SerializableSmartFluidTank(1000, contents -> CreateEnderTransmission.savedData.setDirty())) ; public final List>> channels; diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/MatterWorldSavedData.java b/src/main/java/com/forsteri/createendertransmission/blocks/MatterWorldSavedData.java index 39ce97e..cea5241 100644 --- a/src/main/java/com/forsteri/createendertransmission/blocks/MatterWorldSavedData.java +++ b/src/main/java/com/forsteri/createendertransmission/blocks/MatterWorldSavedData.java @@ -1,16 +1,17 @@ package com.forsteri.createendertransmission.blocks; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.MinecraftServer; import net.minecraft.world.level.saveddata.SavedData; -import net.minecraftforge.common.util.INBTSerializable; +import net.neoforged.neoforge.common.util.INBTSerializable; import org.jetbrains.annotations.NotNull; import java.util.*; public class MatterWorldSavedData extends SavedData { @Override - public @NotNull CompoundTag save(@NotNull CompoundTag pTag) { + public @NotNull CompoundTag save(@NotNull CompoundTag pTag, HolderLookup.@NotNull Provider registries) { for (MatterTransmitterNetwork network : MatterTransmitterNetwork.values()) { CompoundTag networkTag = new CompoundTag(); List>> channels = network.channels; @@ -22,16 +23,16 @@ public class MatterWorldSavedData extends SavedData { networkTag.put(String.valueOf(i), channelTag); for (Map.Entry> entry : channel.entrySet()) - channelTag.put(entry.getKey(), entry.getValue().serializeNBT()); + channelTag.put(entry.getKey(), entry.getValue().serializeNBT(registries)); } } return pTag; } - private static MatterWorldSavedData load(CompoundTag nbt) { + private static MatterWorldSavedData load(CompoundTag tag, HolderLookup.Provider lookupProvider) { for (MatterTransmitterNetwork network : MatterTransmitterNetwork.values()) { - CompoundTag networkTag = nbt.getCompound(network.name().toLowerCase()); + CompoundTag networkTag = tag.getCompound(network.name().toLowerCase()); List>> channels = network.channels; for (int i = 0; i < 10; i++) { Map> channel = channels.get(i); @@ -46,7 +47,7 @@ private static MatterWorldSavedData load(CompoundTag nbt) { if (!channel.containsKey(key)) { channel.put(key, network.defaultInv.get()); } - channel.get(key).deserializeNBT(compoundTag); + channel.get(key).deserializeNBT(lookupProvider, compoundTag); } ); } @@ -58,6 +59,6 @@ private static MatterWorldSavedData load(CompoundTag nbt) { public static MatterWorldSavedData load(MinecraftServer server) { return server.overworld() .getDataStorage() - .computeIfAbsent(MatterWorldSavedData::load, MatterWorldSavedData::new, "ender_transmission_matter_transmission"); + .computeIfAbsent(new Factory<>(MatterWorldSavedData::new, MatterWorldSavedData::load), "ender_transmission_matter_transmission"); } } diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/chunkLoader/LoaderBlock.java b/src/main/java/com/forsteri/createendertransmission/blocks/chunkLoader/LoaderBlock.java deleted file mode 100644 index 00b8df1..0000000 --- a/src/main/java/com/forsteri/createendertransmission/blocks/chunkLoader/LoaderBlock.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.forsteri.createendertransmission.blocks.chunkLoader; - -import com.forsteri.createendertransmission.entry.TransmissionBlockEntities; -import com.simibubi.create.content.equipment.wrench.IWrenchable; -import com.simibubi.create.content.kinetics.base.KineticBlock; -import com.simibubi.create.foundation.block.IBE; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; - -public class LoaderBlock extends KineticBlock implements IBE, IWrenchable { - public LoaderBlock(Properties properties) { - super(properties); - } - public SpeedLevel getMinimumRequiredSpeedLevel() { - return SpeedLevel.MEDIUM; - } - - @Override - public Direction.Axis getRotationAxis(BlockState state) { - return Direction.Axis.Y; - } - - @Override - public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) { - return face == Direction.DOWN; - } - - @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving){ - super.onRemove(state, worldIn, pos, newState, isMoving); - - if (worldIn.isClientSide) { - return; - } - - ServerLevel serverLevel = (ServerLevel) worldIn; - - for (int i = -2; i <= 2; i++) { - for (int j = -2; j <= 2; j++) { - serverLevel.setChunkForced( - new ChunkPos(pos).x + i, - new ChunkPos(pos).z + j, - false - ); - } - } - } - @Override - public Class getBlockEntityClass() { - return LoaderBlockEntity.class; - } - - @Override - public BlockEntityType getBlockEntityType() { - return TransmissionBlockEntities.CHUNK_LOADER_TILE.get(); - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/chunkLoader/LoaderBlockEntity.java b/src/main/java/com/forsteri/createendertransmission/blocks/chunkLoader/LoaderBlockEntity.java deleted file mode 100644 index 6e8cb95..0000000 --- a/src/main/java/com/forsteri/createendertransmission/blocks/chunkLoader/LoaderBlockEntity.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.forsteri.createendertransmission.blocks.chunkLoader; - -import com.simibubi.create.content.kinetics.base.KineticBlockEntity; -import com.simibubi.create.foundation.utility.CreateLang; -import com.forsteri.createendertransmission.CreateEnderTransmission; -import net.createmod.catnip.lang.LangBuilder; -import net.minecraft.ChatFormatting; -import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.Component; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; - -import java.util.List; - - -public class LoaderBlockEntity extends KineticBlockEntity { - public LoaderBlockEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { - super(typeIn, pos, state); - } - - @Override - public void tick() { - super.tick(); - assert level != null; - if (level.isClientSide) { - return; - } - - ServerLevel serverLevel = (ServerLevel) this.level; - - for (int i = -2; i <= 2; i++) { - for (int j = -2; j <= 2; j++) { - serverLevel.setChunkForced( - new ChunkPos(getBlockPos()).x + i, - new ChunkPos(getBlockPos()).z + j, - Math.abs(this.getSpeed()) >= 16 * 8 * Math.max(Math.abs(i), Math.abs(j)) - ); - } - } - } - - @Override - public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - boolean superAdded = super.addToGoggleTooltip(tooltip, isPlayerSneaking); - - if (!superAdded) return false; - - if (!isSpeedRequirementFulfilled()) return true; - - int radius = (int) Math.abs(getSpeed()) / 128 * 2 + 1; - - CreateLang.builder().space().addTo(tooltip); - - new LangBuilder(CreateEnderTransmission.MOD_ID).add(Component.translatable( - CreateEnderTransmission.MOD_ID + ".chunk_loader.loaded", - radius * radius - )).style(ChatFormatting.GREEN).forGoggles(tooltip); - - return true; - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/chunkLoader/LoaderInstance.java b/src/main/java/com/forsteri/createendertransmission/blocks/chunkLoader/LoaderInstance.java deleted file mode 100644 index 702fdb0..0000000 --- a/src/main/java/com/forsteri/createendertransmission/blocks/chunkLoader/LoaderInstance.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.forsteri.createendertransmission.blocks.chunkLoader; - -import com.simibubi.create.AllPartialModels; -import com.simibubi.create.content.kinetics.base.SingleAxisRotatingVisual; -import dev.engine_room.flywheel.api.visualization.VisualizationContext; -import dev.engine_room.flywheel.lib.model.Models; -import net.minecraft.core.Direction; - -public class LoaderInstance extends SingleAxisRotatingVisual { - public LoaderInstance(VisualizationContext context, LoaderBlockEntity blockEntity, float partialTick) { - super(context, blockEntity, partialTick, Direction.DOWN, Models.partial(AllPartialModels.SHAFT_HALF)); - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/energyTransmitter/EnergyTransmitterBlock.java b/src/main/java/com/forsteri/createendertransmission/blocks/energyTransmitter/EnergyTransmitterBlock.java index 91450d5..266cf1e 100644 --- a/src/main/java/com/forsteri/createendertransmission/blocks/energyTransmitter/EnergyTransmitterBlock.java +++ b/src/main/java/com/forsteri/createendertransmission/blocks/energyTransmitter/EnergyTransmitterBlock.java @@ -13,7 +13,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; +import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -22,9 +22,9 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.api.distmarker.OnlyIn; +import net.neoforged.fml.loading.FMLLoader; import org.jetbrains.annotations.NotNull; import javax.annotation.ParametersAreNonnullByDefault; @@ -47,23 +47,23 @@ public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state return face.getAxis() == state.getValue(FACING).getAxis(); } - @SuppressWarnings("deprecation") @Override - public @NotNull InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn, - BlockHitResult hit) { - ItemStack held = player.getMainHandItem(); - if (AllItems.WRENCH.isIn(held)) - return InteractionResult.PASS; - if (held.getItem() instanceof BlockItem blockItem) { - if (blockItem.getBlock() instanceof KineticBlock && hasShaftTowards(worldIn, pos, state, hit.getDirection())) - return InteractionResult.PASS; + public @NotNull ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + if (AllItems.WRENCH.isIn(stack)) + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + if (stack.getItem() instanceof BlockItem blockItem) { + if (blockItem.getBlock() instanceof KineticBlock && hasShaftTowards(level, pos, state, hitResult.getDirection())) + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; } - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, - () -> () -> withBlockEntityDo(worldIn, pos, te -> this.displayScreen(te, player))); - return InteractionResult.SUCCESS; + if (FMLLoader.getDist() == Dist.CLIENT) { + withBlockEntityDo(level, pos, te -> this.displayScreen(te, player)); + } + + return ItemInteractionResult.SUCCESS; } + @OnlyIn(value = Dist.CLIENT) protected void displayScreen(EnergyTransmitterBlockEntity te, Player player) { if (player instanceof LocalPlayer) @@ -71,10 +71,10 @@ protected void displayScreen(EnergyTransmitterBlockEntity te, Player player) { } @Override - public void onRemove(BlockState p_60515_, Level p_60516_, BlockPos p_60517_, BlockState p_60518_, boolean p_60519_) { - if(getBlockEntity(p_60516_, p_60517_) != null) - Objects.requireNonNull(getBlockEntity(p_60516_, p_60517_)).getConnectedTransmitters().remove(getBlockEntity(p_60516_, p_60517_)); - super.onRemove(p_60515_, p_60516_, p_60517_, p_60518_, p_60519_); + public void onRemove(BlockState pState, Level pLevel, BlockPos p_60517_, BlockState p_60518_, boolean p_60519_) { + if (getBlockEntity(pLevel, p_60517_) != null) + Objects.requireNonNull(getBlockEntity(pLevel, p_60517_)).getConnectedTransmitters().remove(getBlockEntity(pLevel, p_60517_)); + super.onRemove(pState, pLevel, p_60517_, p_60518_, p_60519_); } @Override diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/energyTransmitter/EnergyTransmitterBlockEntity.java b/src/main/java/com/forsteri/createendertransmission/blocks/energyTransmitter/EnergyTransmitterBlockEntity.java index b64a0da..780bff8 100644 --- a/src/main/java/com/forsteri/createendertransmission/blocks/energyTransmitter/EnergyTransmitterBlockEntity.java +++ b/src/main/java/com/forsteri/createendertransmission/blocks/energyTransmitter/EnergyTransmitterBlockEntity.java @@ -20,7 +20,7 @@ public EnergyTransmitterBlockEntity(BlockEntityType typeIn, BlockPos pos, Blo @Override public boolean isCustomConnection(KineticBlockEntity other, BlockState state, BlockState otherState) { - if(other instanceof EnergyTransmitterBlockEntity otherTransmitter){ + if (other instanceof EnergyTransmitterBlockEntity otherTransmitter) { return otherTransmitter.getChannel() == getChannel() && otherTransmitter.getLevel() == getLevel() && otherTransmitter.getPassword().equals(getPassword()); @@ -39,7 +39,7 @@ public List addPropagationLocations(IRotate block, BlockState state, L return super.addPropagationLocations(block, state, neighbours); } - public List getConnectedTransmitters(){ + public List getConnectedTransmitters() { Map> channel = EnergyNetwork.ENERGY.channels.get(getChannel()); channel.values().removeIf(List::isEmpty); @@ -47,35 +47,28 @@ public List getConnectedTransmitters(){ channel.forEach((password, transmitters) -> transmitters.removeIf(blockEntity -> !(blockEntity instanceof EnergyTransmitterBlockEntity transmitter) || - transmitter.getChannel() != getChannel() || !transmitter.getPassword().equals(password) - )); + transmitter.getChannel() != getChannel() || !transmitter.getPassword().equals(password) + )); channel.values().forEach(list -> list.removeIf(BlockEntity::isRemoved)); if (channel.containsKey(getPassword())) { - List list = channel - .get(getPassword()); + List list = channel.get(getPassword()); - if(!list.contains(this)) + if (!list.contains(this)) list.add(this); - - - return list; } ArrayList list = new ArrayList<>(List.of(this)); - channel.put( - this.getPassword(), - list - ); + channel.put(this.getPassword(), list); return list; } @Override - public void reloadSettings(){ + public void reloadSettings() { getConnectedTransmitters().remove(this); if (level == null) return; @@ -89,7 +82,7 @@ public void reloadSettings(){ } @Override - public void afterReload(){ + public void afterReload() { if (level == null) return; // if (hasNetwork()) diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/FluidTransmitterBlock.java b/src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/FluidTransmitterBlock.java deleted file mode 100644 index 161cb1e..0000000 --- a/src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/FluidTransmitterBlock.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.forsteri.createendertransmission.blocks.fluidTrasmitter; - -import com.forsteri.createendertransmission.entry.TransmissionBlockEntities; -import com.forsteri.createendertransmission.entry.TransmissionBlocks; -import com.simibubi.create.content.equipment.wrench.IWrenchable; -import com.simibubi.create.foundation.block.IBE; -import com.forsteri.createendertransmission.transmitUtil.TransmitterScreen; -import net.createmod.catnip.gui.ScreenOpener; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.core.BlockPos; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; -import org.jetbrains.annotations.NotNull; - -import javax.annotation.ParametersAreNonnullByDefault; - -@ParametersAreNonnullByDefault -public class FluidTransmitterBlock extends Block implements IBE, IWrenchable { - - public FluidTransmitterBlock(Properties properties) { - super(properties); - } - - @SuppressWarnings("deprecation") - @Override - public @NotNull InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn, - BlockHitResult hit) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, - () -> () -> withBlockEntityDo(worldIn, pos, te -> this.displayScreen(te, player))); - return InteractionResult.SUCCESS; - } - - @OnlyIn(value = Dist.CLIENT) - protected void displayScreen(FluidTransmitterBlockEntity te, Player player) { - if (player instanceof LocalPlayer) - ScreenOpener.open(new TransmitterScreen(te, TransmissionBlocks.FLUID_TRANSMITTER_BLOCK.asStack())); - } - - @Override - public Class getBlockEntityClass() { - return FluidTransmitterBlockEntity.class; - } - - @Override - public BlockEntityType getBlockEntityType() { - return TransmissionBlockEntities.FLUID_TRANSMITTER_TILE_ENTITY.get(); - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/FluidTransmitterBlockEntity.java b/src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/FluidTransmitterBlockEntity.java deleted file mode 100644 index b3744bb..0000000 --- a/src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/FluidTransmitterBlockEntity.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.forsteri.createendertransmission.blocks.fluidTrasmitter; - -import com.forsteri.createendertransmission.blocks.AbstractMatterTransmitterBlockEntity; -import com.forsteri.createendertransmission.blocks.MatterTransmitterNetwork; -import com.forsteri.createendertransmission.transmitUtil.ITransmitter; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.common.util.LazyOptional; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.function.Supplier; - -public class FluidTransmitterBlockEntity extends AbstractMatterTransmitterBlockEntity implements ITransmitter { - public FluidTransmitterBlockEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { - super(typeIn, pos, state); - } - - @Override - protected MatterTransmitterNetwork getNetwork() { - return MatterTransmitterNetwork.FLUID; - } - - @Override - protected Function>, ?> getCapability() { - return FluidTransmitterInventoryHandler::new; - } - - @Override - protected Predicate> getMatterCapPredicate() { - return this::isFluidHandlerCap; - } - - @NotNull - @Override - public LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - if (isFluidHandlerCap(cap)) return capability.cast(); - return super.getCapability(cap, side); - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/FluidTransmitterInventoryHandler.java b/src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/FluidTransmitterInventoryHandler.java deleted file mode 100644 index f5f63fb..0000000 --- a/src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/FluidTransmitterInventoryHandler.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.forsteri.createendertransmission.blocks.fluidTrasmitter; - -import com.simibubi.create.foundation.fluid.CombinedTankWrapper; -import net.createmod.catnip.data.Iterate; -import net.minecraft.nbt.CompoundTag; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.items.wrapper.EmptyHandler; -import org.jetbrains.annotations.NotNull; - -import java.util.function.Supplier; - -public class FluidTransmitterInventoryHandler extends CombinedTankWrapper { - - protected final Supplier> superWrapper; - - public FluidTransmitterInventoryHandler(Supplier> handlers) { - super((IFluidHandler) handlers.get()); - superWrapper = handlers; - } - - public IFluidHandler superWrapper() { - return ((IFluidHandler) superWrapper.get()); - } - - protected IFluidHandler getHandlerFromIndex(int index) { - if (index != 0) - return (IFluidHandler) EmptyHandler.INSTANCE; - return superWrapper(); - } - - @Override - public @NotNull FluidStack drain(FluidStack resource, FluidAction action) { - if (resource.isEmpty()) - return resource; - - FluidStack drained = FluidStack.EMPTY; - resource = resource.copy(); - - IFluidHandler iFluidHandler = superWrapper(); - FluidStack drainedFromCurrent = iFluidHandler.drain(resource, action); - int amount = drainedFromCurrent.getAmount(); - resource.shrink(amount); - - if (!drainedFromCurrent.isEmpty() && (drained.isEmpty() || drainedFromCurrent.isFluidEqual(drained))) - drained = new FluidStack(drainedFromCurrent.getFluid(), amount + drained.getAmount(), - drainedFromCurrent.getTag()); - - return drained; - } - - @Override - public @NotNull FluidStack drain(int maxDrain, FluidAction action) { - FluidStack drained = FluidStack.EMPTY; - - IFluidHandler iFluidHandler = superWrapper(); - FluidStack drainedFromCurrent = iFluidHandler.drain(maxDrain, action); - int amount = drainedFromCurrent.getAmount(); - - if (!drainedFromCurrent.isEmpty() && (drained.isEmpty() || drainedFromCurrent.isFluidEqual(drained))) - drained = new FluidStack(drainedFromCurrent.getFluid(), amount + drained.getAmount(), - drainedFromCurrent.getTag()); - - return drained; - } - - @Override - public int fill(FluidStack resource, FluidAction action) { - if (resource.isEmpty()) - return 0; - - int filled = 0; - resource = resource.copy(); - - boolean fittingHandlerFound = false; - for (boolean searchPass : Iterate.trueAndFalse) { - IFluidHandler iFluidHandler = superWrapper(); - - for (int i = 0; i < iFluidHandler.getTanks(); i++) - if (searchPass && iFluidHandler.getFluidInTank(i) - .isFluidEqual(resource)) - fittingHandlerFound = true; - - if (searchPass && !fittingHandlerFound) - continue; - - int filledIntoCurrent = iFluidHandler.fill(resource, action); - resource.shrink(filledIntoCurrent); - filled += filledIntoCurrent; - - if (resource.isEmpty()) - break; - if (fittingHandlerFound && (enforceVariety || filledIntoCurrent != 0)) - break; - } - - return filled; - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/SerializableSmartFluidTank.java b/src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/SerializableSmartFluidTank.java deleted file mode 100644 index 84f02fc..0000000 --- a/src/main/java/com/forsteri/createendertransmission/blocks/fluidTrasmitter/SerializableSmartFluidTank.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.forsteri.createendertransmission.blocks.fluidTrasmitter; - -import com.simibubi.create.foundation.fluid.SmartFluidTank; -import net.minecraft.nbt.CompoundTag; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.fluids.FluidStack; - -import java.util.function.Consumer; - -public class SerializableSmartFluidTank extends SmartFluidTank implements INBTSerializable { - public SerializableSmartFluidTank(int capacity, Consumer updateCallback) { - super(capacity, updateCallback); - } - - @Override - public CompoundTag serializeNBT() { - return writeToNBT(new CompoundTag()); - } - - @Override - public void deserializeNBT(CompoundTag nbt) { - FluidStack fluid = FluidStack.loadFluidStackFromNBT(nbt); - setFluid(fluid); - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/itemTransmitter/ItemTransmitterBlock.java b/src/main/java/com/forsteri/createendertransmission/blocks/itemTransmitter/ItemTransmitterBlock.java deleted file mode 100644 index 915a20c..0000000 --- a/src/main/java/com/forsteri/createendertransmission/blocks/itemTransmitter/ItemTransmitterBlock.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.forsteri.createendertransmission.blocks.itemTransmitter; - -import com.forsteri.createendertransmission.entry.TransmissionBlockEntities; -import com.forsteri.createendertransmission.entry.TransmissionBlocks; -import com.simibubi.create.content.equipment.wrench.IWrenchable; -import com.simibubi.create.foundation.block.IBE; -import com.forsteri.createendertransmission.transmitUtil.TransmitterScreen; -import net.createmod.catnip.gui.ScreenOpener; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.core.BlockPos; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; -import org.jetbrains.annotations.NotNull; - -import javax.annotation.ParametersAreNonnullByDefault; - -@ParametersAreNonnullByDefault -public class ItemTransmitterBlock extends Block implements IBE, IWrenchable { - public ItemTransmitterBlock(Properties properties) { - super(properties); - } - - @Override - public Class getBlockEntityClass() { - return ItemTransmitterBlockEntity.class; - } - - @Override - public BlockEntityType getBlockEntityType() { - return TransmissionBlockEntities.ITEM_TRANSMITTER_TILE_ENTITY.get(); - } - - @SuppressWarnings("deprecation") - @Override - public @NotNull InteractionResult use(BlockState state, Level worldIn, BlockPos pos, Player player, InteractionHand handIn, - BlockHitResult hit) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, - () -> () -> withBlockEntityDo(worldIn, pos, te -> this.displayScreen(te, player))); - return InteractionResult.SUCCESS; - } - - @OnlyIn(value = Dist.CLIENT) - protected void displayScreen(ItemTransmitterBlockEntity te, Player player) { - if (player instanceof LocalPlayer) - ScreenOpener.open(new TransmitterScreen(te, TransmissionBlocks.ITEM_TRANSMITTER_BLOCK.asStack())); - } - - @SuppressWarnings("deprecation") - @Override - public @NotNull VoxelShape getShape(BlockState p_60555_, BlockGetter p_60556_, BlockPos p_60557_, CollisionContext p_60558_) { - return Block.box(1, 0, 1, 15, 14, 15); - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/itemTransmitter/ItemTransmitterBlockEntity.java b/src/main/java/com/forsteri/createendertransmission/blocks/itemTransmitter/ItemTransmitterBlockEntity.java deleted file mode 100644 index a1515a4..0000000 --- a/src/main/java/com/forsteri/createendertransmission/blocks/itemTransmitter/ItemTransmitterBlockEntity.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.forsteri.createendertransmission.blocks.itemTransmitter; - -import com.forsteri.createendertransmission.blocks.AbstractMatterTransmitterBlockEntity; -import com.forsteri.createendertransmission.blocks.MatterTransmitterNetwork; -import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.INBTSerializable; - -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.function.Supplier; - -public class ItemTransmitterBlockEntity extends AbstractMatterTransmitterBlockEntity { - - public ItemTransmitterBlockEntity(BlockEntityType typeIn, BlockPos pos, BlockState state) { - super(typeIn, pos, state); - } - - @Override - protected MatterTransmitterNetwork getNetwork() { - return MatterTransmitterNetwork.ITEM; - } - - @Override - protected Function>, ?> getCapability() { - return ItemTransmitterInventoryHandler::new; - } - - @Override - protected Predicate> getMatterCapPredicate() { - return this::isItemHandlerCap; - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/blocks/itemTransmitter/ItemTransmitterInventoryHandler.java b/src/main/java/com/forsteri/createendertransmission/blocks/itemTransmitter/ItemTransmitterInventoryHandler.java deleted file mode 100644 index 6464fac..0000000 --- a/src/main/java/com/forsteri/createendertransmission/blocks/itemTransmitter/ItemTransmitterInventoryHandler.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.forsteri.createendertransmission.blocks.itemTransmitter; - -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.items.ItemStackHandler; -import org.jetbrains.annotations.NotNull; - -import javax.annotation.Nonnull; -import java.util.function.Supplier; - -public class ItemTransmitterInventoryHandler extends ItemStackHandler { - protected final Supplier> superWrapper; - - public ItemTransmitterInventoryHandler(Supplier> superWrapper) { - super(); - this.superWrapper = superWrapper; - } - - public ItemStackHandler superWrapper() { - return ((ItemStackHandler) superWrapper.get()); - } - - @Override - public @NotNull ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate) { - return superWrapper().insertItem(slot, stack, simulate); - } - - @Override - public @NotNull ItemStack extractItem(int slot, int amount, boolean simulate) { - return superWrapper().extractItem(slot, amount, simulate); - } - - @Override - public int getSlots() { - return superWrapper().getSlots(); - } - - @Override - @Nonnull - public ItemStack getStackInSlot(int slot) - { - return superWrapper().getStackInSlot(slot); - } - - @Override - public void setStackInSlot(int slot, @NotNull ItemStack stack) { - superWrapper().setStackInSlot(slot, stack); - } - - @Override - public void setSize(int size) { - superWrapper().setSize(size); - } - - @Override - public boolean isItemValid(int slot, @NotNull ItemStack stack) { - return superWrapper().isItemValid(slot, stack); - } - - @Override - public CompoundTag serializeNBT() - { - return superWrapper().serializeNBT(); - } - - @Override - public void deserializeNBT(CompoundTag nbt) - { - superWrapper().deserializeNBT(nbt); - } - - @Override - protected void validateSlotIndex(int slot) { - if (slot < 0 || slot >= superWrapper().getSlots()) - throw new RuntimeException("Slot " + slot + " not in valid range - [0," + stacks.size() + ")"); - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/entry/ChunkLoaderRecipeCondition.java b/src/main/java/com/forsteri/createendertransmission/entry/ChunkLoaderRecipeCondition.java deleted file mode 100644 index 67e4fa2..0000000 --- a/src/main/java/com/forsteri/createendertransmission/entry/ChunkLoaderRecipeCondition.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.forsteri.createendertransmission.entry; - -import com.google.gson.JsonObject; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.common.crafting.conditions.ICondition; -import net.minecraftforge.common.crafting.conditions.IConditionSerializer; - -public class ChunkLoaderRecipeCondition implements ICondition{ - - public static ResourceLocation ID = new ResourceLocation("createendertransmission", "allow_chunk_loader"); - - @Override - public ResourceLocation getID() { - return ID; - } - - @Override - public boolean test(IContext context) { - return TransmissionConfig.CHUNK_LOADER.get(); - } - - public static class Serializer implements IConditionSerializer - { - public static final ChunkLoaderRecipeCondition.Serializer INSTANCE = new ChunkLoaderRecipeCondition.Serializer(); - - @Override - public void write(JsonObject json, ChunkLoaderRecipeCondition value) - { - } - - @Override - public ChunkLoaderRecipeCondition read(JsonObject json) - { - return new ChunkLoaderRecipeCondition(); - } - - @Override - public ResourceLocation getID() - { - return ChunkLoaderRecipeCondition.ID; - } - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/entry/TransmissionBlockEntities.java b/src/main/java/com/forsteri/createendertransmission/entry/TransmissionBlockEntities.java index ebe6b94..9cf77f5 100644 --- a/src/main/java/com/forsteri/createendertransmission/entry/TransmissionBlockEntities.java +++ b/src/main/java/com/forsteri/createendertransmission/entry/TransmissionBlockEntities.java @@ -1,28 +1,18 @@ package com.forsteri.createendertransmission.entry; +//import com.forsteri.createendertransmission.blocks.itemTransmitter.ItemTransmitterBlockEntity; import com.simibubi.create.content.kinetics.base.ShaftVisual; import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import com.simibubi.create.foundation.data.CreateRegistrate; import com.tterrag.registrate.util.entry.BlockEntityEntry; import com.forsteri.createendertransmission.CreateEnderTransmission; -import com.forsteri.createendertransmission.blocks.chunkLoader.LoaderBlockEntity; -import com.forsteri.createendertransmission.blocks.chunkLoader.LoaderInstance; import com.forsteri.createendertransmission.blocks.energyTransmitter.EnergyTransmitterBlockEntity; -import com.forsteri.createendertransmission.blocks.fluidTrasmitter.FluidTransmitterBlockEntity; -import com.forsteri.createendertransmission.blocks.itemTransmitter.ItemTransmitterBlockEntity; public class TransmissionBlockEntities { private static final CreateRegistrate REGISTRATE = CreateEnderTransmission .registrate(); - public static final BlockEntityEntry CHUNK_LOADER_TILE = REGISTRATE - .blockEntity("chunk_loader", LoaderBlockEntity::new) - .visual(() -> LoaderInstance::new, false) - .validBlocks(TransmissionBlocks.CHUNK_LOADER_BLOCK) - .renderer(() -> SmartBlockEntityRenderer::new) - .register(); - public static final BlockEntityEntry ENERGY_TRANSMITTER_TILE = REGISTRATE .blockEntity("energy_transmitter", EnergyTransmitterBlockEntity::new) .visual(() -> ShaftVisual::new, false) @@ -30,15 +20,15 @@ public class TransmissionBlockEntities { .renderer(() -> SmartBlockEntityRenderer::new) .register(); - public static final BlockEntityEntry ITEM_TRANSMITTER_TILE_ENTITY = REGISTRATE - .blockEntity("item_transmitter", ItemTransmitterBlockEntity::new) - .validBlocks(TransmissionBlocks.ITEM_TRANSMITTER_BLOCK) - .register(); +// public static final BlockEntityEntry ITEM_TRANSMITTER_TILE_ENTITY = REGISTRATE +// .blockEntity("item_transmitter", ItemTransmitterBlockEntity::new) +// .validBlocks(TransmissionBlocks.ITEM_TRANSMITTER_BLOCK) +// .register(); - public static final BlockEntityEntry FLUID_TRANSMITTER_TILE_ENTITY = REGISTRATE - .blockEntity("fluid_transmitter", FluidTransmitterBlockEntity::new) - .validBlocks(TransmissionBlocks.FLUID_TRANSMITTER_BLOCK) - .register(); +// public static final BlockEntityEntry FLUID_TRANSMITTER_TILE_ENTITY = REGISTRATE +// .blockEntity("fluid_transmitter", FluidTransmitterBlockEntity::new) +// .validBlocks(TransmissionBlocks.FLUID_TRANSMITTER_BLOCK) +// .register(); public static void register(){} } diff --git a/src/main/java/com/forsteri/createendertransmission/entry/TransmissionBlocks.java b/src/main/java/com/forsteri/createendertransmission/entry/TransmissionBlocks.java index 3a3fa3f..e2af742 100644 --- a/src/main/java/com/forsteri/createendertransmission/entry/TransmissionBlocks.java +++ b/src/main/java/com/forsteri/createendertransmission/entry/TransmissionBlocks.java @@ -1,18 +1,18 @@ package com.forsteri.createendertransmission.entry; import com.forsteri.createendertransmission.CreateEnderTransmission; -import com.forsteri.createendertransmission.blocks.chunkLoader.LoaderBlock; import com.forsteri.createendertransmission.blocks.energyTransmitter.EnergyTransmitterBlock; -import com.forsteri.createendertransmission.blocks.fluidTrasmitter.FluidTransmitterBlock; -import com.forsteri.createendertransmission.blocks.itemTransmitter.ItemTransmitterBlock; +//import com.forsteri.createendertransmission.blocks.itemTransmitter.ItemTransmitterBlock; import com.simibubi.create.api.stress.BlockStressValues; +import com.simibubi.create.foundation.data.SharedProperties; import com.simibubi.create.foundation.data.BlockStateGen; import com.simibubi.create.foundation.data.CreateRegistrate; import com.tterrag.registrate.util.entry.BlockEntry; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import net.minecraft.client.renderer.RenderType; +import net.minecraft.tags.BlockTags; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraftforge.client.model.generators.ConfiguredModel; +import net.neoforged.neoforge.client.model.generators.ConfiguredModel; import static com.simibubi.create.foundation.data.ModelGen.customItemModel; import static com.simibubi.create.foundation.data.TagGen.pickaxeOnly; @@ -20,81 +20,58 @@ @SuppressWarnings("removal") public class TransmissionBlocks { - private static final CreateRegistrate REGISTRATE = CreateEnderTransmission - .registrate() - .setCreativeTab(TransmissionTab.TAB); + private static final CreateRegistrate REGISTRATE = CreateEnderTransmission.registrate(); +// .setCreativeTab(TransmissionTab.TAB); static { assert REGISTRATE != null; } - public static final BlockEntry CHUNK_LOADER_BLOCK = - REGISTRATE.block("chunk_loader", LoaderBlock::new) - .initialProperties(() -> net.minecraft.world.level.block.Blocks.DIAMOND_BLOCK) - .properties(BlockBehaviour.Properties::noOcclusion) - .properties(p -> p.strength(10.0F, 1200.0F)) - .properties(BlockBehaviour.Properties::requiresCorrectToolForDrops) - .transform(pickaxeOnly()) - .blockstate((context, provider) -> provider.getVariantBuilder(context.getEntry()).forAllStates(state -> - ConfiguredModel.builder().modelFile(provider.models() - .getExistingFile(provider.modLoc("block/" + context.getName() + "/block"))).build())) - .item() - .model((context, provider) -> provider.withExistingParent(context.getName(), provider.modLoc("block/" + context.getName() + "/block"))) - .build() - .addLayer(() -> RenderType::cutoutMipped) - .onRegister((block) -> { - BlockStressValues.IMPACTS.register(block, () -> 16); - }) - .register(); public static final BlockEntry ENERGY_TRANSMITTER_BLOCK = REGISTRATE.block("energy_transmitter", EnergyTransmitterBlock::new) - .initialProperties(() -> net.minecraft.world.level.block.Blocks.DIAMOND_BLOCK) - .properties(BlockBehaviour.Properties::noOcclusion) - .properties(p -> p.strength(10.0F, 1200.0F)) - .properties(BlockBehaviour.Properties::requiresCorrectToolForDrops) + .initialProperties(SharedProperties::copperMetal) + .tag(BlockTags.NEEDS_IRON_TOOL) .transform(pickaxeOnly()) .blockstate(BlockStateGen.directionalBlockProvider(true)) .item() .model(NonNullBiConsumer.noop()) .transform(customItemModel()) .addLayer(() -> RenderType::cutoutMipped) - .onRegister((block) -> { - BlockStressValues.IMPACTS.register(block, () -> 8.0); - }) .register(); - public static final BlockEntry ITEM_TRANSMITTER_BLOCK = - REGISTRATE.block("item_transmitter", ItemTransmitterBlock::new) - .initialProperties(() -> net.minecraft.world.level.block.Blocks.DIAMOND_BLOCK) - .properties(BlockBehaviour.Properties::noOcclusion) - .properties(p -> p.strength(10.0F, 1200.0F)) - .properties(BlockBehaviour.Properties::requiresCorrectToolForDrops) - .transform(pickaxeOnly()) - .blockstate((context, provider) -> provider.getVariantBuilder(context.getEntry()).forAllStates(state -> - ConfiguredModel.builder().modelFile(provider.models() - .getExistingFile(provider.modLoc("block/" + context.getName() + "/block"))).build())) - .item() - .model((context, provider) -> provider.withExistingParent(context.getName(), provider.modLoc("block/" + context.getName() + "/block"))) - .build() - .addLayer(() -> RenderType::cutoutMipped) - .register(); +// public static final BlockEntry ITEM_TRANSMITTER_BLOCK = +// REGISTRATE.block("item_transmitter", ItemTransmitterBlock::new) +// .initialProperties(() -> net.minecraft.world.level.block.Blocks.DIAMOND_BLOCK) +// .properties(BlockBehaviour.Properties::noOcclusion) +// .properties(p -> p.strength(10.0F, 1200.0F)) +// .properties(BlockBehaviour.Properties::requiresCorrectToolForDrops) +// .transform(pickaxeOnly()) +// .blockstate((context, provider) -> provider.getVariantBuilder(context.getEntry()).forAllStates(state -> +// ConfiguredModel.builder().modelFile(provider.models() +// .getExistingFile(provider.modLoc("block/" + context.getName() + "/block"))).build())) +// .item() +// .model((context, provider) -> provider.withExistingParent(context.getName(), provider.modLoc("block/" + context.getName() + "/block"))) +// .build() +// .addLayer(() -> RenderType::cutoutMipped) +// .register(); - public static final BlockEntry FLUID_TRANSMITTER_BLOCK = - REGISTRATE.block("fluid_transmitter", FluidTransmitterBlock::new) - .initialProperties(() -> net.minecraft.world.level.block.Blocks.DIAMOND_BLOCK) - .properties(BlockBehaviour.Properties::noOcclusion) - .properties(p -> p.strength(10.0F, 1200.0F)) - .properties(BlockBehaviour.Properties::requiresCorrectToolForDrops) - .transform(pickaxeOnly()) - .blockstate((context, provider) -> provider.getVariantBuilder(context.getEntry()).forAllStates(state -> - ConfiguredModel.builder().modelFile(provider.models() - .getExistingFile(provider.modLoc("block/" + context.getName() + "/block"))).build())) - .item() - .model((context, provider) -> provider.withExistingParent(context.getName(), provider.modLoc("block/" + context.getName() + "/block"))) - .build() - .addLayer(() -> RenderType::cutoutMipped) - .register(); +// public static final BlockEntry FLUID_TRANSMITTER_BLOCK = +// REGISTRATE.block("fluid_transmitter", FluidTransmitterBlock::new) +// .initialProperties(() -> net.minecraft.world.level.block.Blocks.DIAMOND_BLOCK) +// .properties(BlockBehaviour.Properties::noOcclusion) +// .properties(p -> p.strength(10.0F, 1200.0F)) +// .properties(BlockBehaviour.Properties::requiresCorrectToolForDrops) +// .transform(pickaxeOnly()) +// .blockstate((context, provider) -> provider.getVariantBuilder(context.getEntry()).forAllStates(state -> +// ConfiguredModel.builder().modelFile(provider.models() +// .getExistingFile(provider.modLoc("block/" + context.getName() + "/block"))).build())) +// .item() +// .model((context, provider) -> provider.withExistingParent(context.getName(), provider.modLoc("block/" + context.getName() + "/block"))) +// .build() +// .addLayer(() -> RenderType::cutoutMipped) +// .register(); - public static void register(){} + public static void register() { + } } diff --git a/src/main/java/com/forsteri/createendertransmission/entry/TransmissionConfig.java b/src/main/java/com/forsteri/createendertransmission/entry/TransmissionConfig.java index 773c59b..536ab72 100644 --- a/src/main/java/com/forsteri/createendertransmission/entry/TransmissionConfig.java +++ b/src/main/java/com/forsteri/createendertransmission/entry/TransmissionConfig.java @@ -1,11 +1,11 @@ package com.forsteri.createendertransmission.entry; -import net.minecraftforge.common.ForgeConfigSpec; +import net.neoforged.neoforge.common.ModConfigSpec; public class TransmissionConfig { - public static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); - public static ForgeConfigSpec SPEC; - public static final ForgeConfigSpec.BooleanValue CHUNK_LOADER; + public static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); + public static ModConfigSpec SPEC; + public static final ModConfigSpec.BooleanValue CHUNK_LOADER; static { BUILDER.push("Create Ender Transmission Config"); diff --git a/src/main/java/com/forsteri/createendertransmission/entry/TransmissionPackets.java b/src/main/java/com/forsteri/createendertransmission/entry/TransmissionPackets.java deleted file mode 100644 index b414565..0000000 --- a/src/main/java/com/forsteri/createendertransmission/entry/TransmissionPackets.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.forsteri.createendertransmission.entry; - -import com.simibubi.create.foundation.networking.SimplePacketBase; -import com.forsteri.createendertransmission.CreateEnderTransmission; -import com.forsteri.createendertransmission.transmitUtil.ConfigureTransmitterPacket; -import net.minecraft.core.BlockPos; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.Level; -import net.minecraftforge.network.NetworkDirection; -import net.minecraftforge.network.NetworkEvent; -import net.minecraftforge.network.NetworkRegistry; -import net.minecraftforge.network.PacketDistributor; -import net.minecraftforge.network.simple.SimpleChannel; - -import java.util.function.BiConsumer; -import java.util.function.Function; -import java.util.function.Supplier; - -public enum TransmissionPackets { - - CONFIGURE_TRANSMITTER(ConfigureTransmitterPacket.class, ConfigureTransmitterPacket::new, NetworkDirection.PLAY_TO_SERVER); - public static final ResourceLocation CHANNEL_NAME = new ResourceLocation(CreateEnderTransmission.MOD_ID, "main"); - public static final int NETWORK_VERSION = 1; - public static final String NETWORK_VERSION_STR = String.valueOf(NETWORK_VERSION); - public static SimpleChannel channel; - - private final TransmissionPackets.LoadedPacket packet; - - TransmissionPackets(Class type, Function factory, - NetworkDirection direction) { - packet = new TransmissionPackets.LoadedPacket<>(type, factory, direction); - } - - public static void registerPackets() { - channel = NetworkRegistry.ChannelBuilder.named(CHANNEL_NAME) - .serverAcceptedVersions(NETWORK_VERSION_STR::equals) - .clientAcceptedVersions(NETWORK_VERSION_STR::equals) - .networkProtocolVersion(() -> NETWORK_VERSION_STR) - .simpleChannel(); - for (TransmissionPackets packet : values()) - packet.packet.register(); - } - - @SuppressWarnings("unused") - public static void sendToNear(Level world, BlockPos pos, int range, Object message) { - channel.send( - PacketDistributor.NEAR.with(PacketDistributor.TargetPoint.p(pos.getX(), pos.getY(), pos.getZ(), range, world.dimension())), - message); - } - - @SuppressWarnings("FieldMayBeFinal") - private static class LoadedPacket { - private static int index = 0; - - private BiConsumer encoder; - private Function decoder; - private BiConsumer> handler; - private Class type; - private NetworkDirection direction; - - private LoadedPacket(Class type, Function factory, NetworkDirection direction) { - encoder = T::write; - decoder = factory; - handler = (packet, contextSupplier) -> { - NetworkEvent.Context context = contextSupplier.get(); - if (packet.handle(context)) { - context.setPacketHandled(true); - } - }; - this.type = type; - this.direction = direction; - } - - private void register() { - channel.messageBuilder(type, index++, direction) - .encoder(encoder) - .decoder(decoder) - .consumerMainThread(handler) - .add(); - } - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/entry/TransmissionTab.java b/src/main/java/com/forsteri/createendertransmission/entry/TransmissionTab.java index c51120c..0749e6e 100644 --- a/src/main/java/com/forsteri/createendertransmission/entry/TransmissionTab.java +++ b/src/main/java/com/forsteri/createendertransmission/entry/TransmissionTab.java @@ -1,35 +1,42 @@ package com.forsteri.createendertransmission.entry; import com.forsteri.createendertransmission.CreateEnderTransmission; +import com.tterrag.registrate.util.entry.RegistryEntry; import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.RegistryObject; +import net.neoforged.neoforge.registries.DeferredRegister; +import net.minecraft.world.item.CreativeModeTab; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.bus.api.SubscribeEvent; public class TransmissionTab { private static final DeferredRegister REGISTER = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, CreateEnderTransmission.MOD_ID); + public static void register(IEventBus modEventBus) { REGISTER.register(modEventBus); } - public static final RegistryObject TAB = - REGISTER.register("ender_transmission", - () -> CreativeModeTab.builder() - .title(Component.translatable("itemGroup.ender_transmission")) - .withTabsBefore(ResourceLocation.of("create:palettes", ':')) - .icon(() -> new ItemStack(TransmissionBlocks.CHUNK_LOADER_BLOCK.get())) - .displayItems( - (parameters, output) -> - output.acceptAll( - CreateEnderTransmission.REGISTRATE.getAll(Registries.ITEM).stream().map( - regObj -> new ItemStack(regObj.get()) - ).toList() - ) - ) - .build()); +// public static final RegistryEntry TAB = +// REGISTER.register("ender_transmission", +// () -> CreativeModeTab.builder() +// .title(Component.translatable("itemGroup.ender_transmission")) +// .withTabsBefore(ResourceLocation.fromNamespaceAndPath("create:palettes", ":")) +// .icon(() -> new ItemStack(TransmissionBlocks.ENERGY_TRANSMITTER_BLOCK.get())) +// .displayItems( +// (parameters, output) -> +// output.acceptAll( +// CreateEnderTransmission.REGISTRATE.getAll(Registries.ITEM).stream().map( +// regObj -> new ItemStack(regObj.get()) +// ).toList() +// ) +// ) +// .build()); +// +// public static final RegistryEntry TAB = REGISTRATE.defaultCreativeTab("ender_transmission", +// c -> c.icon(() -> new ItemStack(Registration.DIAMOND_DRILL_ITEM.get())) +// ).register(); } diff --git a/src/main/java/com/forsteri/createendertransmission/mixin/FluidTransmitterOnContraptionMixin.java b/src/main/java/com/forsteri/createendertransmission/mixin/FluidTransmitterOnContraptionMixin.java deleted file mode 100644 index 7e45ff7..0000000 --- a/src/main/java/com/forsteri/createendertransmission/mixin/FluidTransmitterOnContraptionMixin.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.forsteri.createendertransmission.mixin; - -import com.simibubi.create.api.contraption.storage.fluid.MountedFluidStorage; -import com.forsteri.createendertransmission.blocks.fluidTrasmitter.FluidTransmitterBlockEntity; -import net.minecraft.world.level.block.entity.BlockEntity; -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 = MountedFluidStorage.class, remap = false) -public class FluidTransmitterOnContraptionMixin { - @Inject(method = "canUseAsStorage", at = @At("HEAD"), cancellable = true) - private static void canUseAsStorage(BlockEntity be, CallbackInfoReturnable cir) { - if (be instanceof FluidTransmitterBlockEntity) - cir.setReturnValue(true); - } -} diff --git a/src/main/java/com/forsteri/createendertransmission/transmitUtil/ConfigureTransmitterPacket.java b/src/main/java/com/forsteri/createendertransmission/transmitUtil/ConfigureTransmitterPacket.java index 51ade9c..e6fa07d 100644 --- a/src/main/java/com/forsteri/createendertransmission/transmitUtil/ConfigureTransmitterPacket.java +++ b/src/main/java/com/forsteri/createendertransmission/transmitUtil/ConfigureTransmitterPacket.java @@ -1,10 +1,15 @@ package com.forsteri.createendertransmission.transmitUtil; +import com.forsteri.createendertransmission.TransmissionPackets; import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.foundation.networking.BlockEntityConfigurationPacket; +import io.netty.buffer.ByteBuf; import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.FriendlyByteBuf; + +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; + +import net.minecraft.server.level.ServerPlayer; public class ConfigureTransmitterPacket extends BlockEntityConfigurationPacket { @@ -17,31 +22,16 @@ public ConfigureTransmitterPacket(BlockPos pos, int channel, String password) { this.password = password; } - public ConfigureTransmitterPacket(FriendlyByteBuf buffer) { - super(buffer); - } + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + BlockPos.STREAM_CODEC, packet -> packet.pos, + ByteBufCodecs.VAR_INT, packet -> packet.channel, + ByteBufCodecs.STRING_UTF8, packet -> packet.password, + ConfigureTransmitterPacket::new + ); @Override - protected void writeSettings(FriendlyByteBuf buffer) { - CompoundTag tag = new CompoundTag(); - tag.putInt("channel", channel); - tag.putString("password", password); - buffer.writeNbt(tag); - } - - @Override - protected void readSettings(FriendlyByteBuf buffer) { - CompoundTag tag = buffer.readNbt(); - if (tag != null) { - channel = tag.getInt("channel"); - password = tag.getString("password"); - } - - } - - @Override - protected void applySettings(KineticBlockEntity tileEntity) { - if( + protected void applySettings(ServerPlayer serverPlayer, KineticBlockEntity tileEntity) { + if ( tileEntity.getPersistentData().getInt("channel") != channel || !tileEntity.getPersistentData().getString("password").equals(password) ) { @@ -54,4 +44,8 @@ protected void applySettings(KineticBlockEntity tileEntity) { } } + @Override + public PacketTypeProvider getTypeProvider() { + return TransmissionPackets.CONFIGURE_TRANSMITTER; + } } diff --git a/src/main/java/com/forsteri/createendertransmission/transmitUtil/ITransmitter.java b/src/main/java/com/forsteri/createendertransmission/transmitUtil/ITransmitter.java index 99144c2..a50d003 100644 --- a/src/main/java/com/forsteri/createendertransmission/transmitUtil/ITransmitter.java +++ b/src/main/java/com/forsteri/createendertransmission/transmitUtil/ITransmitter.java @@ -1,17 +1,19 @@ package com.forsteri.createendertransmission.transmitUtil; -import net.minecraftforge.common.extensions.IForgeBlockEntity; +import net.neoforged.neoforge.common.extensions.IBlockEntityExtension; -public interface ITransmitter extends IForgeBlockEntity { - default void reloadSettings(){} +public interface ITransmitter extends IBlockEntityExtension { + default void reloadSettings() { + } - default void afterReload(){} + default void afterReload() { + } - default int getChannel(){ + default int getChannel() { return getPersistentData().getInt("channel"); } - default String getPassword(){ + default String getPassword() { return getPersistentData().getString("password"); } } diff --git a/src/main/java/com/forsteri/createendertransmission/transmitUtil/TransmitterScreen.java b/src/main/java/com/forsteri/createendertransmission/transmitUtil/TransmitterScreen.java index fd21f03..fb36d02 100644 --- a/src/main/java/com/forsteri/createendertransmission/transmitUtil/TransmitterScreen.java +++ b/src/main/java/com/forsteri/createendertransmission/transmitUtil/TransmitterScreen.java @@ -1,6 +1,5 @@ package com.forsteri.createendertransmission.transmitUtil; -import com.forsteri.createendertransmission.entry.TransmissionPackets; import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllIcons; @@ -11,6 +10,7 @@ import com.simibubi.create.foundation.utility.CreateLang; import net.createmod.catnip.gui.AbstractSimiScreen; import net.createmod.catnip.gui.element.GuiGameElement; +import net.createmod.catnip.platform.CatnipServices; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.Component; @@ -99,6 +99,6 @@ protected void init() { @Override public void removed() { super.removed(); - TransmissionPackets.channel.sendToServer(new ConfigureTransmitterPacket(te.getBlockPos(), areaChannel.getState(), areaTestInput.getValue())); + CatnipServices.NETWORK.sendToServer(new ConfigureTransmitterPacket(te.getBlockPos(), areaChannel.getState(), areaTestInput.getValue())); } } diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml deleted file mode 100644 index d71babc..0000000 --- a/src/main/resources/META-INF/mods.toml +++ /dev/null @@ -1,31 +0,0 @@ -modLoader="javafml" -loaderVersion="${loader_version_range}" -license="${mod_license}" -[[mods]] - modId="${mod_id}" - version="${mod_version}" - displayName="${mod_name}" - authors="${mod_authors}" - -description='''${mod_description}''' - -[[dependencies.${mod_id}]] - modId="forge" - mandatory=true - versionRange="${neo_version_range}" - ordering="NONE" - side="BOTH" - -[[dependencies.${mod_id}]] - modId="minecraft" - mandatory=true - versionRange="${minecraft_version_range}" - ordering="NONE" - side="BOTH" - -[[dependencies.${mod_id}]] - modId="create" - mandatory=true - versionRange="[0.5.0.e,)" - ordering="NONE" - side="BOTH" \ No newline at end of file diff --git a/src/main/resources/META-INF/neoforge.mods.toml b/src/main/resources/META-INF/neoforge.mods.toml new file mode 100644 index 0000000..38f549f --- /dev/null +++ b/src/main/resources/META-INF/neoforge.mods.toml @@ -0,0 +1,99 @@ +# This is an example neoforge.mods.toml file. It contains the data relating to the loading mods. +# There are several mandatory fields (#mandatory), and many more that are optional (#optional). +# The overall format is standard TOML format, v0.5.0. +# Note that there are a couple of TOML lists in this file. +# Find more information on toml format here: https://github.com/toml-lang/toml +# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml +modLoader="javafml" #mandatory + +# A version range to match for said mod loader - for regular FML @Mod it will be the FML version. This is currently 2. +loaderVersion="${loader_version_range}" #mandatory + +# The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties. +# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here. +license="${mod_license}" + +# A URL to refer people to when problems occur with this mod +#issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional + +# A list of mods - how many allowed here is determined by the individual mod loader +[[mods]] #mandatory + +# The modid of the mod +modId="${mod_id}" #mandatory + +# The version number of the mod +version="${mod_version}" #mandatory + +# A display name for the mod +displayName="${mod_name}" #mandatory + +# A URL to query for updates for this mod. See the JSON update specification https://docs.neoforged.net/docs/misc/updatechecker/ +#updateJSONURL="https://change.me.example.invalid/updates.json" #optional + +# A URL for the "homepage" for this mod, displayed in the mod UI +#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional + +# A file name (in the root of the mod JAR) containing a logo for display +#logoFile="examplemod.png" #optional + +# A text field displayed in the mod UI +#credits="" #optional + +# A text field displayed in the mod UI +authors="${mod_authors}" #optional + +# The description text for the mod (multi line!) (#mandatory) +description='''${mod_description}''' + +# The [[mixins]] block allows you to declare your mixin config to FML so that it gets loaded. +#[[mixins]] +#config="${mod_id}.mixins.json" + +# The [[accessTransformers]] block allows you to declare where your AT file is. +# If this block is omitted, a fallback attempt will be made to load an AT from META-INF/accesstransformer.cfg +#[[accessTransformers]] +#file="META-INF/accesstransformer.cfg" + +# The coremods config file path is not configurable and is always loaded from META-INF/coremods.json + +# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional. +[[dependencies.${mod_id}]] #optional +# the modid of the dependency +modId="neoforge" #mandatory +# The type of the dependency. Can be one of "required", "optional", "incompatible" or "discouraged" (case insensitive). +# 'required' requires the mod to exist, 'optional' does not +# 'incompatible' will prevent the game from loading when the mod exists, and 'discouraged' will show a warning +type="required" #mandatory +# Optional field describing why the dependency is required or why it is incompatible +# reason="..." +# The version range of the dependency +versionRange="${neo_version_range}" #mandatory +# An ordering relationship for the dependency. +# BEFORE - This mod is loaded BEFORE the dependency +# AFTER - This mod is loaded AFTER the dependency +ordering="NONE" +# Side this dependency is applied on - BOTH, CLIENT, or SERVER +side="BOTH" + +# Here's another dependency +[[dependencies.${mod_id}]] +modId="minecraft" +type="required" +# This version range declares a minimum of the current minecraft version up to but not including the next major version +versionRange="${minecraft_version_range}" +ordering="NONE" +side="BOTH" + +# Features are specific properties of the game environment, that you may want to declare you require. This example declares +# that your mod requires GL version 3.2 or higher. Other features will be added. They are side aware so declaring this won't +# stop your mod loading on the server for example. +#[features.${mod_id}] +#openGLVersion="[3.2,)" + +[[dependencies.${mod_id}]] + modId="create" + mandatory=true + versionRange="[0.5.0.e,)" + ordering="NONE" + side="BOTH" \ No newline at end of file diff --git a/src/main/resources/createendertransmission.mixins.json b/src/main/resources/createendertransmission.mixins.json deleted file mode 100644 index 0e789ff..0000000 --- a/src/main/resources/createendertransmission.mixins.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "required": true, - "package": "com.forsteri.createendertransmission.mixin", - "compatibilityLevel": "JAVA_17", - "mixins": [ - "FluidTransmitterOnContraptionMixin" - ], - "client": [], - "minVersion": "0.8" -} \ No newline at end of file diff --git a/src/main/resources/data/createendertransmission/recipes/energy_transmitter.json b/src/main/resources/data/createendertransmission/recipe/mechanical_crafting/energy_transmitter.json similarity index 78% rename from src/main/resources/data/createendertransmission/recipes/energy_transmitter.json rename to src/main/resources/data/createendertransmission/recipe/mechanical_crafting/energy_transmitter.json index e46c339..d3fb9df 100644 --- a/src/main/resources/data/createendertransmission/recipes/energy_transmitter.json +++ b/src/main/resources/data/createendertransmission/recipe/mechanical_crafting/energy_transmitter.json @@ -1,5 +1,6 @@ { "type": "create:mechanical_crafting", + "category": "misc", "pattern": [ "OOSOO", "OMPMO", @@ -25,7 +26,8 @@ } }, "result": { - "item": "createendertransmission:energy_transmitter" + "id": "createendertransmission:energy_transmitter", + "count": 1 }, - "acceptMirrored": true + "accept_mirrored": true } \ No newline at end of file diff --git a/src/main/resources/data/createendertransmission/recipes/chunk_loader.json b/src/main/resources/data/createendertransmission/recipes/chunk_loader.json deleted file mode 100644 index ca773ca..0000000 --- a/src/main/resources/data/createendertransmission/recipes/chunk_loader.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "#D#", - "###" - ], - "key": { - "#": { - "item": "minecraft:obsidian" - }, - "D": { - "item": "minecraft:beacon" - } - }, - "result": { - "item": "createendertransmission:chunk_loader", - "count": 1 - }, - "conditions": [ - { - "type": "createendertransmission:allow_chunk_loader" - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/createendertransmission/recipes/fluid_transmitter.json b/src/main/resources/data/createendertransmission/recipes/fluid_transmitter.json deleted file mode 100644 index 7b72e4c..0000000 --- a/src/main/resources/data/createendertransmission/recipes/fluid_transmitter.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "create:mechanical_crafting", - "pattern": [ - "OOSOO", - "OMPMO", - "OMEMO", - "OMPMO", - "OOSOO" - ], - "key": { - "S": { - "item": "create:mechanical_pump" - }, - "O": { - "item": "minecraft:obsidian" - }, - "P": { - "item": "create:precision_mechanism" - }, - "E": { - "item": "minecraft:ender_eye" - }, - "M": { - "item": "minecraft:ender_pearl" - } - }, - "result": { - "item": "createendertransmission:fluid_transmitter" - }, - "acceptMirrored": true -} \ No newline at end of file diff --git a/src/main/resources/data/createendertransmission/recipes/item_transmitter.json b/src/main/resources/data/createendertransmission/recipes/item_transmitter.json deleted file mode 100644 index c4b2904..0000000 --- a/src/main/resources/data/createendertransmission/recipes/item_transmitter.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "create:mechanical_crafting", - "pattern": [ - "OOSOO", - "OMPMO", - "OMEMO", - "OMPMO", - "OOSOO" - ], - "key": { - "S": { - "item": "create:chute" - }, - "O": { - "item": "minecraft:obsidian" - }, - "P": { - "item": "create:precision_mechanism" - }, - "E": { - "item": "minecraft:ender_eye" - }, - "M": { - "item": "minecraft:ender_pearl" - } - }, - "result": { - "item": "createendertransmission:item_transmitter" - }, - "acceptMirrored": true -} \ No newline at end of file diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 8ce03d6..fc51c18 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -1,8 +1,8 @@ { "pack": { "description": { - "text": "${mod_id} resources" + "text": "endertransmission resources" }, - "pack_format": ${pack_format_number} + "pack_format": 15 } } \ No newline at end of file