diff --git a/platform/minecraft/gradle/dependencies/1.21.1/dependencies.gradle b/platform/minecraft/gradle/dependencies/1.21.1/dependencies.gradle index 82a6cf937..094a6f8c4 100644 --- a/platform/minecraft/gradle/dependencies/1.21.1/dependencies.gradle +++ b/platform/minecraft/gradle/dependencies/1.21.1/dependencies.gradle @@ -31,8 +31,8 @@ dependencies { // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/dependency_management.html - antlr 'org.antlr:antlr4:4.13.1' - testImplementation 'com.github.javaparser:javaparser-symbol-solver-core:3.26.4' + antlr 'org.antlr:antlr4:4.13.1' + testImplementation 'com.github.javaparser:javaparser-symbol-solver-core:3.26.4' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' @@ -66,4 +66,6 @@ dependencies { compileOnly "org.appliedenergistics:appliedenergistics2:19.2.15:api" implementation "curse.maven:building-gadgets-298187:6850515" + + implementation "com.hollingsworth.ars_nouveau:ars_nouveau-1.21.1:5.12.1.1381" } diff --git a/platform/minecraft/gradle/repositories.gradle b/platform/minecraft/gradle/repositories.gradle index c1e83bdfe..7252e858f 100644 --- a/platform/minecraft/gradle/repositories.gradle +++ b/platform/minecraft/gradle/repositories.gradle @@ -44,4 +44,15 @@ repositories { url 'https://maven.covers1624.net/' // https://nexus.covers1624.net/#browse/browse:cofh-releases } + + maven { + name = 'GeckoLib' + url 'https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/' + content { + includeGroup("software.bernie.geckolib") + } + } + repositories { + maven { url = 'https://maven.minecraftforge.net/' } + } } diff --git a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/compat/SFMArsCompat.java b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/compat/SFMArsCompat.java new file mode 100644 index 000000000..03025b47a --- /dev/null +++ b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/compat/SFMArsCompat.java @@ -0,0 +1,11 @@ +package ca.teamdman.sfm.common.compat; + +import ca.teamdman.sfm.common.registry.SFMDeferredRegister; +import ca.teamdman.sfm.common.resourcetype.ResourceType; +import ca.teamdman.sfm.common.resourcetype.SourceResourceType; + +public class SFMArsCompat { + public static void registerResourceTypes(SFMDeferredRegister> types) { + types.register("source", SourceResourceType::new); + } +} \ No newline at end of file diff --git a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/compat/SFMModCompat.java b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/compat/SFMModCompat.java index 2ed488a5d..a74b6e762 100644 --- a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/compat/SFMModCompat.java +++ b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/compat/SFMModCompat.java @@ -16,6 +16,8 @@ public static boolean isAE2Loaded() { return isModLoaded("ae2"); } + public static boolean isArsLoaded() {return isModLoaded("ars_nouveau");} + public static boolean isModLoaded(String modid) { return ModList.get().getModContainerById(modid).isPresent(); } diff --git a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/registry/registration/SFMResourceTypes.java b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/registry/registration/SFMResourceTypes.java index 1fa91aec9..e57cc3f33 100644 --- a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/registry/registration/SFMResourceTypes.java +++ b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/registry/registration/SFMResourceTypes.java @@ -2,6 +2,7 @@ import ca.teamdman.sfm.SFM; import ca.teamdman.sfm.common.capability.SFMBlockCapabilityKind; +import ca.teamdman.sfm.common.compat.SFMArsCompat; import ca.teamdman.sfm.common.compat.SFMMekanismCompat; import ca.teamdman.sfm.common.compat.SFMModCompat; import ca.teamdman.sfm.common.registry.SFMDeferredRegister; @@ -49,6 +50,10 @@ public class SFMResourceTypes { if (SFMModCompat.isMekanismLoaded()) { SFMMekanismCompat.registerResourceTypes(REGISTERER); } + + if (SFMModCompat.isArsLoaded()) { + SFMArsCompat.registerResourceTypes(REGISTERER); + } } public static int getResourceTypeCount() { diff --git a/platform/minecraft/src/main/java/ca/teamdman/sfm/common/resourcetype/SourceResourceType.java b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/resourcetype/SourceResourceType.java new file mode 100644 index 000000000..d1441576b --- /dev/null +++ b/platform/minecraft/src/main/java/ca/teamdman/sfm/common/resourcetype/SourceResourceType.java @@ -0,0 +1,55 @@ +package ca.teamdman.sfm.common.resourcetype; + +import ca.teamdman.sfm.common.blockentity.BufferBlockEntityContents; +import ca.teamdman.sfm.common.capability.SFMBlockCapabilityKind; +import ca.teamdman.sfm.common.util.SFMResourceLocation; +import com.hollingsworth.arsnouveau.api.source.ISourceCap; +import com.hollingsworth.arsnouveau.setup.registry.CapabilityRegistry; + +public class SourceResourceType extends IntegerResourceType { + public static final SFMBlockCapabilityKind CAP = new SFMBlockCapabilityKind<>( + CapabilityRegistry.SOURCE_CAPABILITY + ); + + public SourceResourceType() { + super(CAP, SFMResourceLocation.fromNamespaceAndPath("ars_nouveau", "source")); + } + + @Override + public ISourceCap createHandlerForBufferBlock(BufferBlockEntityContents contents) { + return null; + } + + @Override + public Integer getStackInSlot(ISourceCap iSourceCap, int slot) { + return iSourceCap.getSource(); + } + + @Override + public Integer extract(ISourceCap iSourceCap, int slot, long amount, boolean simulate) { + int finalAmount = amount > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int) amount; + + return iSourceCap.extractSource(finalAmount, simulate); + } + + @Override + public int getSlots(ISourceCap handler) { + return 1; + } + + @Override + public long getMaxStackSizeForSlot(ISourceCap iSourceCap, int slot) { + return iSourceCap.getSourceCapacity(); + } + + @Override + public Integer insert(ISourceCap iSourceCap, int slot, Integer stack, boolean simulate) { + int accepted = iSourceCap.receiveSource(stack, simulate); + return stack - accepted; + } + + @Override + public boolean matchesCapabilityHandler(Object o) { + return o instanceof ISourceCap; + } +} diff --git a/platform/minecraft/src/main/resources/META-INF/neoforge.mods.toml b/platform/minecraft/src/main/resources/META-INF/neoforge.mods.toml index c7aee3c06..5924e66e7 100644 --- a/platform/minecraft/src/main/resources/META-INF/neoforge.mods.toml +++ b/platform/minecraft/src/main/resources/META-INF/neoforge.mods.toml @@ -96,3 +96,8 @@ side="BOTH" modId = "mekanism" type="optional" versionRange = "[10.3.2,)" + +[[dependencies.${ mod_id }]] +modId = "ars_nouveau" +type="optional" +versionRange = "[5.10.0,)" \ No newline at end of file