diff --git a/build.gradle.kts b/build.gradle.kts index 9934ec963..7864de6c2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,8 +5,8 @@ import net.modificationstation.stationapi.gradle.SubprojectHelpers.addDependency plugins { id("maven-publish") - id("fabric-loom") version "1.9-SNAPSHOT" - id("babric-loom-extension") version "1.9.2" + id("net.fabricmc.fabric-loom-remap") version "1.15.+" + id("ploceus") version "1.15-SNAPSHOT" } // https://stackoverflow.com/a/40101046 - Even with kotlin, gradle can't get it's shit together. @@ -15,21 +15,41 @@ inline fun Project.configure(name: String, configuration: C.() -> Un } allprojects { - apply(plugin = "maven-publish") - apply(plugin = "fabric-loom") - apply(plugin = "babric-loom-extension") + if (project != rootProject) { + apply(plugin = "maven-publish") + apply(plugin = "net.fabricmc.fabric-loom-remap") + apply(plugin = "ploceus") + } + + pluginManager.withPlugin("ploceus") { + val ploceus = extensions.getByName("ploceus") + ploceus.setIntermediaryGeneration(2) + + dependencies { + "minecraft"("com.mojang:minecraft:${project.properties["minecraft_version"]}") + "mappings"(ploceus.mappings("net.glasslauncher:biny-ornithe:b1.7.3+build.${project.properties["biny_mappings"]}:mergedv2")) + "clientExceptions"(ploceus.raven(project.properties["client_raven_build"].toString(), "client")) + "serverExceptions"(ploceus.raven(project.properties["server_raven_build"].toString(), "server")) + "clientSignatures"(ploceus.sparrow(project.properties["client_sparrow_build"].toString(), "client")) + "serverSignatures"(ploceus.sparrow(project.properties["server_sparrow_build"].toString(), "server")) + "clientNests"(ploceus.nests(project.properties["client_nests_build"].toString(), "client")) + "serverNests"(ploceus.nests(project.properties["server_nests_build"].toString(), "server")) + "modImplementation"("net.fabricmc:fabric-loader:${project.properties["loader_version"]}") + } + } - java.sourceCompatibility = JavaVersion.VERSION_17 - java.targetCompatibility = JavaVersion.VERSION_17 + java.sourceCompatibility = JavaVersion.VERSION_25 + java.targetCompatibility = JavaVersion.VERSION_25 repositories { maven(url = "https://maven.minecraftforge.net/") - maven(url = "https://maven.glass-launcher.net/babric") - maven(url = "https://maven.glass-launcher.net/snapshots") maven(url = "https://maven.glass-launcher.net/releases") + maven(url = "https://maven.glass-launcher.net/snapshots") + maven(url = "https://mvn.devos.one/releases") + maven(url = "https://maven.wispforest.io") maven(url = "https://jitpack.io/") - maven("https://libraries.minecraft.net") { + maven(url = "https://libraries.minecraft.net") { name = "Mojang" content { includeModule("com.mojang", "datafixerupper") // https://github.com/Mojang/DataFixerUpper @@ -55,7 +75,10 @@ allprojects { all { exclude(group = "org.ow2.asm", module = "asm-debug-all") exclude(group = "org.ow2.asm", module = "asm-all") - exclude(group = "babric") + // Force correct Guava version to avoid conflicts + resolutionStrategy { + force("com.google.guava:guava:33.5.0-jre") + } } } @@ -63,23 +86,22 @@ allprojects { implementation("org.slf4j:slf4j-api:1.8.0-beta4") implementation("org.apache.logging.log4j:log4j-slf4j18-impl:2.17.2") - implementation("org.apache.logging.log4j:log4j-core:2.17.2") - implementation("com.google.guava:guava:33.2.1-jre") + implementation("org.apache.logging.log4j:log4j-core:2.17.2"){ + exclude(group = "com.google.guava", module = "guava") + } + implementation("net.ornithemc:logger-config:1.0.0") { + exclude(group = "com.google.guava", module = "guava") + } + implementation("com.google.guava:guava:33.5.0-jre") implementation("com.google.code.gson:gson:2.9.0") //to change the versions see the gradle.properties file - minecraft("com.mojang:minecraft:${project.properties["minecraft_version"]}") - - mappings("net.glasslauncher:biny:${project.properties["yarn_mappings"]}:v2") + //minecraft and mappings are added in the ploceus withPlugin block above - modImplementation("net.fabricmc:fabric-loader:${project.properties["loader_version"]}") - - "transitiveImplementation"(implementation("org.apache.commons:commons-lang3:3.12.0") as Dependency) + "transitiveImplementation"(implementation("org.apache.commons:commons-lang3:3.17.0") as Dependency) "transitiveImplementation"(implementation("commons-io:commons-io:2.11.0") as Dependency) "transitiveImplementation"(implementation("net.jodah:typetools:${project.properties["typetools_version"]}") as Dependency) "transitiveImplementation"(implementation("com.github.mineLdiver:UnsafeEvents:${project.properties["unsafeevents_version"]}") as Dependency) - "transitiveImplementation"(implementation("it.unimi.dsi:fastutil:${project.properties["fastutil_version"]}") as Dependency) - "transitiveImplementation"(implementation("com.github.ben-manes.caffeine:caffeine:${project.properties["caffeine_version"]}") as Dependency) "transitiveImplementation"(implementation("com.mojang:datafixerupper:${project.properties["dfu_version"]}") as Dependency) "transitiveImplementation"(implementation("maven.modrinth:spasm:${project.properties["spasm_version"]}") as Dependency) "transitiveImplementation"(implementation("me.carleslc:Simple-Yaml:1.8.4") as Dependency) @@ -89,23 +111,24 @@ allprojects { // convenience stuff // adds some useful annotations for data classes. does not add any dependencies - compileOnly("org.projectlombok:lombok:1.18.30") - annotationProcessor("org.projectlombok:lombok:1.18.30") - testCompileOnly("org.projectlombok:lombok:1.18.30") - testAnnotationProcessor("org.projectlombok:lombok:1.18.30") + compileOnly("org.projectlombok:lombok:1.18.42") + annotationProcessor("org.projectlombok:lombok:1.18.42") + testCompileOnly("org.projectlombok:lombok:1.18.42") + testAnnotationProcessor("org.projectlombok:lombok:1.18.42") // adds some useful annotations for miscellaneous uses. does not add any dependencies, though people without the lib will be missing some useful context hints. implementation("org.jetbrains:annotations:23.0.0") - modLocalRuntime("net.glasslauncher.mods:ModMenu:${project.properties["modmenu_version"]}") - modLocalRuntime("maven.modrinth:retrocommands:${project.properties["rc_version"]}") { - isTransitive = false - } +// modLocalRuntime("net.glasslauncher.mods:ModMenu:${project.properties["modmenu_version"]}") +// modLocalRuntime("maven.modrinth:retrocommands:${project.properties["rc_version"]}") { +// isTransitive = false +// } annotationProcessor("io.github.llamalad7:mixinextras-fabric:0.4.1") // Optional bugfix mod for testing qol. Remove the // to enable. //modLocalRuntime "maven.modrinth:mojangfix:${project.properties["mojangfix_version"]}" + } sourceSets { @@ -138,7 +161,7 @@ allprojects { // Include license inside of the mod jar configure("jar") { - from(rootProject.file("LICENSE")) { + from("LICENSE") { rename { "${it}_${project.properties["archivesBaseName"]}" } } } @@ -259,10 +282,11 @@ subprojects { dependencies { include("net.jodah:typetools:${project.properties["typetools_version"]}") include("com.github.mineLdiver:UnsafeEvents:${project.properties["unsafeevents_version"]}") - include("it.unimi.dsi:fastutil:${project.properties["fastutil_version"]}") - include("com.github.ben-manes.caffeine:caffeine:${project.properties["caffeine_version"]}") include("com.mojang:datafixerupper:${project.properties["dfu_version"]}") include("maven.modrinth:spasm:${project.properties["spasm_version"]}") + include("com.google.guava:guava:33.5.0-jre") + include("com.google.guava:failureaccess:1.0.3") + include("org.apache.commons:commons-lang3:3.17.0") } // Makes java shut up @@ -272,6 +296,11 @@ configure("compileTestJava") { options.forkOptions.executable = System.getProperty("java.home") + "/bin/javac" + (if (System.getProperty("os.name").startsWith("Windows")) ".exe" else "") } +// Don't fail test task when no tests are discovered (these are mod test classes, not unit tests) +tasks.withType { + failOnNoDiscoveredTests = false +} + publishing { publications { getByName("mavenJava", MavenPublication::class) { @@ -302,4 +331,4 @@ tasks.register("testJar") { // Gradle I swear to fuck stop trying to do bullshit to the maven - calm tasks.withType { enabled = false -} +} \ No newline at end of file diff --git a/buildSrc/src/main/java/net/fabricmc/loom/util/GroovyXmlUtil.java b/buildSrc/src/main/java/net/fabricmc/loom/util/GroovyXmlUtil.java index 7547153ef..b4a3b2a19 100644 --- a/buildSrc/src/main/java/net/fabricmc/loom/util/GroovyXmlUtil.java +++ b/buildSrc/src/main/java/net/fabricmc/loom/util/GroovyXmlUtil.java @@ -25,7 +25,7 @@ package net.fabricmc.loom.util; import groovy.util.Node; -import groovy.xml.QName; +import groovy.namespace.QName; public final class GroovyXmlUtil { private GroovyXmlUtil() { } @@ -49,11 +49,6 @@ private static boolean isSameName(Object nodeName, String givenName) { return qName.matches(givenName); } - // New groovy 3 (gradle 7) class - if (nodeName instanceof groovy.namespace.QName qName) { - return qName.matches(givenName); - } - throw new UnsupportedOperationException("Cannot determine if " + nodeName.getClass() + " is the same as a String"); } } diff --git a/gradle.properties b/gradle.properties index 57c5e5a38..92c8e1b90 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,8 +10,16 @@ fabric.loom.multiProjectOptimisation=true # Fabric Properties # check these on https://fabricmc.net/use minecraft_version = b1.7.3 - yarn_mappings = b1.7.3+e1fe071 - loader_version = 0.16.9 + biny_mappings = 57cc158 + loader_version = 0.18.4 + +# Ploceus Properties + client_raven_build = 2 + server_raven_build = 2 + client_sparrow_build = 2 + server_sparrow_build = 2 + client_nests_build = 7 + server_nests_build = 4 # Library Properties typetools_version = 0.8.3 @@ -22,11 +30,11 @@ fabric.loom.multiProjectOptimisation=true spasm_version = 0.2.2 # Mod Properties - mod_version = 2.0.0-alpha.6.2 + mod_version = 2.0.0-alpha.6.2+gen2 maven_group = net.modificationstation archives_base_name = StationAPI # Test properties - gcapi_version = 3.2.5 + gcapi_version = 3.3.0+gen2 modmenu_version = 1.8.5-beta.11 rc_version = 0.5.4 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e18bc253b..19a6bdeb8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle.kts b/settings.gradle.kts index 9a8c39772..8e45b10cc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,9 +1,18 @@ pluginManagement { repositories { - maven(url = "https://maven.glass-launcher.net/babric") - maven(url = "https://maven.fabricmc.net/") - maven(url = "https://jitpack.io/") - mavenCentral() + maven { + name = "Fabric" + url = uri("https://maven.fabricmc.net/") + } + maven { + name = "Ornithe Releases" + url = uri("https://maven.ornithemc.net/releases") + } + maven { + name = "Ornithe Snapshots" + url = uri("https://maven.ornithemc.net/snapshots") + } + mavenLocal() gradlePluginPortal() } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 7e18c43c5..5709c630e 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -20,7 +20,7 @@ "environment": "*", "depends": { - "java": ">=17", + "java": ">=25", "fabricloader": "*", "minecraft": "1.0.0-beta.7.3", "station-api-configuration": "*", diff --git a/src/test/java/net/modificationstation/sltest/item/DullPickaxeItem.java b/src/test/java/net/modificationstation/sltest/item/DullPickaxeItem.java index a17ed9aca..c690c42f0 100644 --- a/src/test/java/net/modificationstation/sltest/item/DullPickaxeItem.java +++ b/src/test/java/net/modificationstation/sltest/item/DullPickaxeItem.java @@ -4,7 +4,6 @@ import net.minecraft.entity.EntityRegistry; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolMaterial; import net.minecraft.world.World; import net.modificationstation.stationapi.api.block.BlockState; import net.modificationstation.stationapi.api.template.item.TemplatePickaxeItem; diff --git a/src/test/java/net/modificationstation/sltest/item/ItemListener.java b/src/test/java/net/modificationstation/sltest/item/ItemListener.java index 4a0fb4446..0ad64bc45 100644 --- a/src/test/java/net/modificationstation/sltest/item/ItemListener.java +++ b/src/test/java/net/modificationstation/sltest/item/ItemListener.java @@ -3,7 +3,6 @@ import net.mine_diver.unsafeevents.listener.EventListener; import net.minecraft.block.material.Material; import net.minecraft.item.Item; -import net.minecraft.item.ToolMaterial; import net.modificationstation.sltest.block.Blocks; import net.modificationstation.sltest.block.VariationBlock; import net.modificationstation.stationapi.api.event.registry.ItemRegistryEvent; @@ -23,12 +22,12 @@ public class ItemListener { @EventListener public void registerItems(ItemRegistryEvent event) { ToolLevel moddedNode = new TagToolLevel(TagKey.of(BlockRegistry.KEY, NAMESPACE.id("needs_tool_level_modded"))); - ToolLevel.GRAPH.putEdge(ToolMaterial.STONE.getToolLevel(), moddedNode); - ToolLevel.GRAPH.putEdge(moddedNode, ToolMaterial.IRON.getToolLevel()); + ToolLevel.GRAPH.putEdge(Item.ToolMaterial.STONE.getToolLevel(), moddedNode); + ToolLevel.GRAPH.putEdge(moddedNode, Item.ToolMaterial.IRON.getToolLevel()); ToolLevel siblingNode = new TagToolLevel(TagKey.of(BlockRegistry.KEY, NAMESPACE.id("needs_tool_level_sibling"))).equivalentToImmediateSiblings(); - ToolLevel.GRAPH.putEdge(ToolMaterial.STONE.getToolLevel(), siblingNode); - ToolLevel.GRAPH.putEdge(siblingNode, ToolMaterial.IRON.getToolLevel()); - ToolLevel.GRAPH.removeEdge(ToolMaterial.STONE.getToolLevel(), ToolMaterial.IRON.getToolLevel()); + ToolLevel.GRAPH.putEdge(Item.ToolMaterial.STONE.getToolLevel(), siblingNode); + ToolLevel.GRAPH.putEdge(siblingNode, Item.ToolMaterial.IRON.getToolLevel()); + ToolLevel.GRAPH.removeEdge(Item.ToolMaterial.STONE.getToolLevel(), Item.ToolMaterial.IRON.getToolLevel()); testItem = new ModdedItem(NAMESPACE.id("test_item")); //8475 testMaterial = ToolMaterialFactory.create("testMaterial", 3, Integer.MAX_VALUE, Float.MAX_VALUE, Integer.MAX_VALUE - 2).toolLevel(siblingNode); @@ -48,7 +47,7 @@ public void registerItems(ItemRegistryEvent event) { } public static Item testItem; - public static ToolMaterial testMaterial; + public static Item.ToolMaterial testMaterial; public static Item testPickaxe; public static Item testNBTItem; public static Item testModelItem; diff --git a/src/test/java/net/modificationstation/sltest/item/ModdedItem.java b/src/test/java/net/modificationstation/sltest/item/ModdedItem.java index 4a248a7ea..50364fc1f 100644 --- a/src/test/java/net/modificationstation/sltest/item/ModdedItem.java +++ b/src/test/java/net/modificationstation/sltest/item/ModdedItem.java @@ -3,7 +3,7 @@ import lombok.Value; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.util.hit.HitResultType; +import net.minecraft.util.hit.HitResult; import net.minecraft.world.World; import net.modificationstation.sltest.SLTest; import net.modificationstation.stationapi.api.client.item.CustomTooltipProvider; @@ -38,7 +38,7 @@ public ItemStack use(ItemStack item, World level, PlayerEntity player) { public int hmmSho; @Override - public double getReach(ItemStack stack, PlayerEntity player, HitResultType type, double currentReach) { + public double getReach(ItemStack stack, PlayerEntity player, HitResult.HitResultType type, double currentReach) { return switch (type) { case BLOCK -> 50; case ENTITY -> 10; diff --git a/src/test/java/net/modificationstation/sltest/item/ModdedPickaxeItem.java b/src/test/java/net/modificationstation/sltest/item/ModdedPickaxeItem.java index d23299c73..72766f0ed 100644 --- a/src/test/java/net/modificationstation/sltest/item/ModdedPickaxeItem.java +++ b/src/test/java/net/modificationstation/sltest/item/ModdedPickaxeItem.java @@ -4,7 +4,6 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolMaterial; import net.minecraft.world.World; import net.modificationstation.stationapi.api.dispenser.ItemDispenseContext; import net.modificationstation.stationapi.api.item.CustomDispenseBehavior; diff --git a/src/test/java/net/modificationstation/sltest/item/PacifistSwordItem.java b/src/test/java/net/modificationstation/sltest/item/PacifistSwordItem.java index 6dc700bb6..601de23bb 100644 --- a/src/test/java/net/modificationstation/sltest/item/PacifistSwordItem.java +++ b/src/test/java/net/modificationstation/sltest/item/PacifistSwordItem.java @@ -4,7 +4,6 @@ import net.minecraft.entity.EntityRegistry; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.util.Identifier; import net.modificationstation.stationapi.api.template.item.TemplateSwordItem; diff --git a/src/test/java/net/modificationstation/sltest/mixin/MixinLevel.java b/src/test/java/net/modificationstation/sltest/mixin/MixinLevel.java index 64200a553..14751e2ac 100644 --- a/src/test/java/net/modificationstation/sltest/mixin/MixinLevel.java +++ b/src/test/java/net/modificationstation/sltest/mixin/MixinLevel.java @@ -14,7 +14,7 @@ @Mixin(World.class) public abstract class MixinLevel { - @Shadow public abstract BiomeSource method_1781(); + @Shadow public abstract BiomeSource getBiomeSource(); /*@Inject( method = "(Lnet/minecraft/level/dimension/DimensionData;Ljava/lang/String;J)V", @@ -27,7 +27,7 @@ private void onInit(WorldStorage string, String l, long par3, CallbackInfo ci) { int[] pixels = ((DataBufferInt) buffer.getRaster().getDataBuffer()).getData(); int start = -(side >> 1); - BiomeSource biomeSource = method_1781(); + BiomeSource biomeSource = getBiomeSource(); Biome[] biomes = biomeSource.getBiomesInArea(new Biome[side * side], start, start, side, side); for (int i = 0; i < pixels.length; i++) { diff --git a/station-achievements-v0/build.gradle.kts b/station-achievements-v0/build.gradle.kts index 38079fee0..178751bb8 100644 --- a/station-achievements-v0/build.gradle.kts +++ b/station-achievements-v0/build.gradle.kts @@ -1,5 +1,5 @@ -import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion +import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies base.archivesName.set("station-achievements-v0") version = getSubprojectVersion(project, "1.0.0") diff --git a/station-api-base/src/main/java/net/modificationstation/stationapi/api/util/Identifier.java b/station-api-base/src/main/java/net/modificationstation/stationapi/api/util/Identifier.java index a9c451bce..69749f584 100644 --- a/station-api-base/src/main/java/net/modificationstation/stationapi/api/util/Identifier.java +++ b/station-api-base/src/main/java/net/modificationstation/stationapi/api/util/Identifier.java @@ -1,13 +1,14 @@ package net.modificationstation.stationapi.api.util; -import com.github.benmanes.caffeine.cache.Cache; -import com.github.benmanes.caffeine.cache.Caffeine; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; import lombok.Getter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.concurrent.ExecutionException; import java.util.function.Function; import java.util.function.UnaryOperator; @@ -27,7 +28,7 @@ public final class Identifier implements Comparable<@NotNull Identifier> { private record IdentifierCacheKey(@NotNull Namespace namespace, @NotNull String id) {} @NotNull - private static final Cache<@NotNull IdentifierCacheKey, @NotNull Identifier> CACHE = Caffeine.newBuilder().softValues().build(); + private static final Cache<@NotNull IdentifierCacheKey, @NotNull Identifier> CACHE = CacheBuilder.newBuilder().softValues().build(); @NotNull private static final Function<@NotNull IdentifierCacheKey, @NotNull Identifier> IDENTIFIER_FACTORY = Identifier::new; @@ -46,7 +47,12 @@ private record IdentifierCacheKey(@NotNull Namespace namespace, @NotNull String } public static @NotNull Identifier of(@NotNull final Namespace namespace, @NotNull final String id) { - return CACHE.get(new IdentifierCacheKey(namespace, id), IDENTIFIER_FACTORY); + final var key = new IdentifierCacheKey(namespace, id); + try { + return CACHE.get(key, () -> IDENTIFIER_FACTORY.apply(key)); + } catch (ExecutionException e) { + throw new RuntimeException(e); + } } public static @Nullable Identifier tryParse(@NotNull final String string) { diff --git a/station-api-base/src/main/java/net/modificationstation/stationapi/api/util/Namespace.java b/station-api-base/src/main/java/net/modificationstation/stationapi/api/util/Namespace.java index 39dcdce41..1c5e5aac9 100644 --- a/station-api-base/src/main/java/net/modificationstation/stationapi/api/util/Namespace.java +++ b/station-api-base/src/main/java/net/modificationstation/stationapi/api/util/Namespace.java @@ -1,8 +1,8 @@ package net.modificationstation.stationapi.api.util; -import com.github.benmanes.caffeine.cache.Cache; -import com.github.benmanes.caffeine.cache.Caffeine; import com.google.common.base.Suppliers; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; import it.unimi.dsi.fastutil.objects.Object2ReferenceMap; import it.unimi.dsi.fastutil.objects.Object2ReferenceOpenHashMap; import it.unimi.dsi.fastutil.objects.Reference2ReferenceMap; @@ -28,10 +28,10 @@ import java.nio.file.*; import java.util.Collections; import java.util.Map; +import java.util.concurrent.ExecutionException; import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Stream; -import java.util.zip.ZipError; @Slf4j public final class Namespace implements Comparable<@NotNull Namespace> { @@ -39,7 +39,7 @@ public final class Namespace implements Comparable<@NotNull Namespace> { private static final Map CREATE_FILESYSTEM_ARGS = Collections.singletonMap("create", "true"); @NotNull - private static final Cache<@NotNull String, @NotNull Namespace> CACHE = Caffeine.newBuilder().softValues().build(); + private static final Cache<@NotNull String, @NotNull Namespace> CACHE = CacheBuilder.newBuilder().softValues().build(); @NotNull private static final Function<@NotNull String, @NotNull Namespace> NAMESPACE_FACTORY = Namespace::new; @@ -57,7 +57,11 @@ public final class Namespace implements Comparable<@NotNull Namespace> { } public static @NotNull Namespace of(@NotNull final String namespace) { - return CACHE.get(namespace, NAMESPACE_FACTORY); + try { + return CACHE.get(namespace, () -> NAMESPACE_FACTORY.apply(namespace)); + } catch (ExecutionException e) { + throw new RuntimeException(e); + } } @ApiStatus.Experimental @@ -93,7 +97,7 @@ public final class Namespace implements Comparable<@NotNull Namespace> { created = true; } catch (FileSystemAlreadyExistsException ignore2) { fs = FileSystems.getFileSystem(jarUri); - } catch (IOException | ZipError e) { + } catch (IOException e) { throw new IOException("Error accessing " + uri + ": " + e, e); } callerRoot = fs.getPath("/").toUri(); diff --git a/station-api-base/src/main/java/net/modificationstation/stationapi/api/util/function/Curry.java b/station-api-base/src/main/java/net/modificationstation/stationapi/api/util/function/Curry.java deleted file mode 100644 index 2d6efa0c1..000000000 --- a/station-api-base/src/main/java/net/modificationstation/stationapi/api/util/function/Curry.java +++ /dev/null @@ -1,89 +0,0 @@ -package net.modificationstation.stationapi.api.util.function; - -import org.apache.commons.lang3.function.TriFunction; - -import java.util.function.BiFunction; -import java.util.function.Function; - -/** - * @deprecated Use cyclops instead - */ -@Deprecated -public class Curry { - - // Bi - - public static Function> curry(BiFunction function) { - return a -> _$(function, a); - } - - public static Function> incurry(BiFunction function) { - return b -> $_(function, b); - } - - public static BiFunction uncurry2(Function> curry) { - return (a, b) -> curry.apply(a).apply(b); - } - - public static BiFunction unincurry2(Function> incurry) { - return (a, b) -> incurry.apply(b).apply(a); - } - - // Tri - - public static Function>> curry(TriFunction function) { - return a -> b -> __$(function, a, b); - } - - public static Function>> incurry(TriFunction function) { - return c -> b -> $__(function, b, c); - } - - public static TriFunction uncurry3(Function>> curry) { - return (a, b, c) -> curry.apply(a).apply(b).apply(c); - } - - public static TriFunction unincurry3(Function>> incurry) { - return (a, b, c) -> incurry.apply(c).apply(b).apply(a); - } - - // arg defaults - // _ - arg to drop - // $ - arg to keep - - // Bi - - public static Function _$(BiFunction function, A a) { - return b -> function.apply(a, b); - } - - public static Function $_(BiFunction function, B b) { - return a -> function.apply(a, b); - } - - // Tri - - public static BiFunction _$$(TriFunction function, A a) { - return (b, c) -> function.apply(a, b, c); - } - - public static BiFunction $_$(TriFunction function, B b) { - return (a, c) -> function.apply(a, b, c); - } - - public static BiFunction $$_(TriFunction function, C c) { - return (a, b) -> function.apply(a, b, c); - } - - public static Function __$(TriFunction function, A a, B b) { - return c -> function.apply(a, b, c); - } - - public static Function _$_(TriFunction function, A a, C c) { - return b -> function.apply(a, b, c); - } - - public static Function $__(TriFunction function, B b, C c) { - return a -> function.apply(a, b, c); - } -} diff --git a/station-audio-loader-v0/src/main/java/net/modificationstation/stationapi/mixin/audio/BlockSoundGroupMixin.java b/station-audio-loader-v0/src/main/java/net/modificationstation/stationapi/mixin/audio/BlockSoundGroupMixin.java index a7891bb0c..cc4bdf881 100644 --- a/station-audio-loader-v0/src/main/java/net/modificationstation/stationapi/mixin/audio/BlockSoundGroupMixin.java +++ b/station-audio-loader-v0/src/main/java/net/modificationstation/stationapi/mixin/audio/BlockSoundGroupMixin.java @@ -4,7 +4,7 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import com.llamalad7.mixinextras.sugar.Share; import com.llamalad7.mixinextras.sugar.ref.LocalIntRef; -import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.block.Block; import net.modificationstation.stationapi.api.util.Identifier; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Final; @@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -@Mixin(BlockSoundGroup.class) +@Mixin(Block.BlockSoundGroup.class) class BlockSoundGroupMixin { @Shadow @Final public String soundName; @@ -23,7 +23,7 @@ class BlockSoundGroupMixin { }, at = @At( value = "FIELD", - target = "Lnet/minecraft/sound/BlockSoundGroup;soundName:Ljava/lang/String;", + target = "Lnet/minecraft/block/Block$BlockSoundGroup;soundName:Ljava/lang/String;", opcode = Opcodes.GETFIELD ) ) diff --git a/station-blockitems-v0/src/main/resources/fabric.mod.json b/station-blockitems-v0/src/main/resources/fabric.mod.json index 3bfcac5b4..114c16f7c 100644 --- a/station-blockitems-v0/src/main/resources/fabric.mod.json +++ b/station-blockitems-v0/src/main/resources/fabric.mod.json @@ -2,7 +2,6 @@ "schemaVersion": 1, "id": "station-blockitems-v0", "version": "${version}", - "name": "Station BlockItems (v0)", "description": "API for custom block items.", "authors": [ @@ -13,10 +12,8 @@ "sources": "https://github.com/ModificationStation/StationAPI", "issues": "https://github.com/ModificationStation/StationAPI/issues" }, - "license": "MIT", "icon": "assets/station-blockitems-v0/icon.png", - "environment": "*", "entrypoints": { "stationapi:event_bus": [ @@ -29,16 +26,14 @@ "mixins": [ "station-blockitems-v0.mixins.json" ], - "depends": { "fabricloader": "*", "minecraft": "1.0.0-beta.7.3" }, - "custom": { "modmenu:api": true, "loom:injected_interfaces": { - "net/minecraft/class_17": [ + "net/minecraft/unmapped/C_81592558": [ "net/modificationstation/stationapi/api/block/StationBlockItemsBlock" ] } diff --git a/station-blocks-v0/src/main/resources/fabric.mod.json b/station-blocks-v0/src/main/resources/fabric.mod.json index 6247cd80d..11bf15874 100644 --- a/station-blocks-v0/src/main/resources/fabric.mod.json +++ b/station-blocks-v0/src/main/resources/fabric.mod.json @@ -2,7 +2,6 @@ "schemaVersion": 1, "id": "station-blocks-v0", "version": "${version}", - "name": "Station Blocks (v0)", "description": "Essential systems for modded blocks.", "authors": [ @@ -13,26 +12,22 @@ "sources": "https://github.com/ModificationStation/StationAPI", "issues": "https://github.com/ModificationStation/StationAPI/issues" }, - "license": "MIT", "icon": "assets/station-blocks-v0/icon.png", - "environment": "*", "mixins": [ "station-blocks-v0.mixins.json" ], - "depends": { "fabricloader": "*", "minecraft": "1.0.0-beta.7.3" }, - "custom": { "modmenu:api": true, "loom:injected_interfaces": { - "net/minecraft/class_17": [ + "net/minecraft/unmapped/C_81592558": [ "net/modificationstation/stationapi/api/block/StationBlock" ] } } -} \ No newline at end of file +} diff --git a/station-effects-api-v0/src/main/resources/fabric.mod.json b/station-effects-api-v0/src/main/resources/fabric.mod.json index 66c23707c..fd7bd0482 100644 --- a/station-effects-api-v0/src/main/resources/fabric.mod.json +++ b/station-effects-api-v0/src/main/resources/fabric.mod.json @@ -2,7 +2,6 @@ "schemaVersion": 1, "id": "station-effects-api-v0", "version": "${version}", - "name": "Station Entities (v0)", "description": "Provides essential systems for modded entities.", "authors": [ @@ -13,10 +12,8 @@ "sources": "https://github.com/ModificationStation/StationAPI", "issues": "https://github.com/ModificationStation/StationAPI/issues" }, - "license": "MIT", "icon": "assets/station-effects-api-v0/icon.png", - "environment": "*", "entrypoints": { "stationapi:event_bus": [ @@ -26,18 +23,16 @@ "mixins": [ "station-effects-api-v0.mixins.json" ], - "depends": { "fabricloader": "*", "minecraft": "1.0.0-beta.7.3" }, - "custom": { "modmenu:api": true, "loom:injected_interfaces": { - "net/minecraft/class_57": [ + "net/minecraft/unmapped/C_42232651": [ "net/modificationstation/stationapi/api/entity/StationEffectsEntity" ] } } -} \ No newline at end of file +} diff --git a/station-entities-v0/src/main/java/net/modificationstation/stationapi/api/server/entity/EntitySpawnDataProvider.java b/station-entities-v0/src/main/java/net/modificationstation/stationapi/api/server/entity/EntitySpawnDataProvider.java index cb915c566..ff16645db 100644 --- a/station-entities-v0/src/main/java/net/modificationstation/stationapi/api/server/entity/EntitySpawnDataProvider.java +++ b/station-entities-v0/src/main/java/net/modificationstation/stationapi/api/server/entity/EntitySpawnDataProvider.java @@ -11,6 +11,7 @@ import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; +import java.io.IOException; public interface EntitySpawnDataProvider extends StationSpawnDataProvider { @@ -32,7 +33,11 @@ default Packet getSpawnData() { } if (syncTrackerAtSpawn()) { var stream = new ByteArrayOutputStream(); - entity.getDataTracker().writeAllEntries(new DataOutputStream(stream)); + try { + entity.getDataTracker().writeAllEntries(new DataOutputStream(stream)); + } catch (IOException e) { + throw new RuntimeException(e); + } message.bytes = stream.toByteArray(); } writeToMessage(message); diff --git a/station-entities-v0/src/main/java/net/modificationstation/stationapi/api/server/entity/MobSpawnDataProvider.java b/station-entities-v0/src/main/java/net/modificationstation/stationapi/api/server/entity/MobSpawnDataProvider.java index 9a993c181..b573d1121 100644 --- a/station-entities-v0/src/main/java/net/modificationstation/stationapi/api/server/entity/MobSpawnDataProvider.java +++ b/station-entities-v0/src/main/java/net/modificationstation/stationapi/api/server/entity/MobSpawnDataProvider.java @@ -8,6 +8,7 @@ import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; +import java.io.IOException; import static net.modificationstation.stationapi.api.StationAPI.NAMESPACE; import static net.modificationstation.stationapi.api.util.Identifier.of; @@ -30,7 +31,11 @@ default Packet getSpawnData() { (byte)((int)(mob.pitch * 256.0F / 360.0F)) }; ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - mob.getDataTracker().writeAllEntries(new DataOutputStream(outputStream)); + try { + mob.getDataTracker().writeAllEntries(new DataOutputStream(outputStream)); + } catch (IOException e) { + throw new RuntimeException(e); + } byte[] data = outputStream.toByteArray(); message.bytes = Bytes.concat(rotations, data); writeToMessage(message); diff --git a/station-entities-v0/src/main/java/net/modificationstation/stationapi/impl/client/network/EntityClientNetworkHandler.java b/station-entities-v0/src/main/java/net/modificationstation/stationapi/impl/client/network/EntityClientNetworkHandler.java index 7a68c8ef7..71bc94ea0 100644 --- a/station-entities-v0/src/main/java/net/modificationstation/stationapi/impl/client/network/EntityClientNetworkHandler.java +++ b/station-entities-v0/src/main/java/net/modificationstation/stationapi/impl/client/network/EntityClientNetworkHandler.java @@ -6,7 +6,6 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.data.DataTracker; -import net.minecraft.entity.data.DataTrackerEntry; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.world.ClientWorld; import net.minecraft.world.World; @@ -27,6 +26,7 @@ import java.io.ByteArrayInputStream; import java.io.DataInputStream; +import java.io.IOException; import java.lang.invoke.MethodHandles; import java.util.Arrays; import java.util.List; @@ -78,8 +78,13 @@ private static void handleEntitySpawn(PlayerEntity player, MessagePacket message hasOwner.setOwner(networkHandler.invokeGetEntity(message.ints[4])); entity.setVelocityClient((double) message.shorts[0] / 8000.0D, (double) message.shorts[1] / 8000.0D, (double) message.shorts[2] / 8000.0D); } - if (message.bytes != null) - entity.getDataTracker().writeUpdatedEntries(DataTracker.readEntries(new DataInputStream(new ByteArrayInputStream(message.bytes)))); + if (message.bytes != null) { + try { + entity.getDataTracker().writeUpdatedEntries(DataTracker.readEntries(new DataInputStream(new ByteArrayInputStream(message.bytes)))); + } catch (IOException e) { + throw new RuntimeException(e); + } + } if (entity instanceof StationSpawnDataProvider provider) provider.readFromMessage(message); } @@ -111,7 +116,12 @@ private static void handleMobSpawn(PlayerEntity player, MessagePacket message) { mob.interpolateOnly = true; world.forceEntity(message.ints[0], mob); //noinspection unchecked - List data = DataTracker.readEntries(new DataInputStream(new ByteArrayInputStream(Arrays.copyOfRange(message.bytes, 2, message.bytes.length)))); + List data = null; + try { + data = DataTracker.readEntries(new DataInputStream(new ByteArrayInputStream(Arrays.copyOfRange(message.bytes, 2, message.bytes.length)))); + } catch (IOException e) { + throw new RuntimeException(e); + } if (data != null) mob.getDataTracker().writeUpdatedEntries(data); if (mob instanceof StationSpawnDataProvider provider) diff --git a/station-entities-v0/src/main/java/net/modificationstation/stationapi/mixin/entity/server/TrackedEntityMixin.java b/station-entities-v0/src/main/java/net/modificationstation/stationapi/mixin/entity/server/TrackedEntityMixin.java index e609e1245..0b7e4ccf3 100644 --- a/station-entities-v0/src/main/java/net/modificationstation/stationapi/mixin/entity/server/TrackedEntityMixin.java +++ b/station-entities-v0/src/main/java/net/modificationstation/stationapi/mixin/entity/server/TrackedEntityMixin.java @@ -10,6 +10,8 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import java.io.IOException; + @Mixin(EntityTrackerEntry.class) class TrackedEntityMixin { @Shadow diff --git a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/util/collection/EmptyPaletteStorage.java b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/util/collection/EmptyPaletteStorage.java index 9fe82e64b..31d2664f4 100644 --- a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/util/collection/EmptyPaletteStorage.java +++ b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/api/util/collection/EmptyPaletteStorage.java @@ -1,6 +1,6 @@ package net.modificationstation.stationapi.api.util.collection; -import org.apache.commons.lang3.Validate; +import com.google.common.base.Preconditions; import java.util.Arrays; import java.util.function.IntConsumer; @@ -18,20 +18,20 @@ public EmptyPaletteStorage(int size) { @Override public int swap(int index, int value) { - Validate.inclusiveBetween(0L, this.size - 1, index); - Validate.inclusiveBetween(0L, 0L, value); + Preconditions.checkArgument(index >= 0 && index < this.size); + Preconditions.checkArgument(value == 0); return 0; } @Override public void set(int index, int value) { - Validate.inclusiveBetween(0L, this.size - 1, index); - Validate.inclusiveBetween(0L, 0L, value); + Preconditions.checkArgument(index >= 0 && index < this.size); + Preconditions.checkArgument(value == 0); } @Override public int get(int index) { - Validate.inclusiveBetween(0L, this.size - 1, index); + Preconditions.checkArgument(index >= 0 && index < this.size); return 0; } diff --git a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/server/network/ChunkSectionTracker.java b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/server/network/ChunkSectionTracker.java index 3d6075651..22a0f220c 100644 --- a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/server/network/ChunkSectionTracker.java +++ b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/server/network/ChunkSectionTracker.java @@ -10,7 +10,7 @@ import net.modificationstation.stationapi.impl.packet.FlattenedMultiBlockChangeS2CPacket; import net.modificationstation.stationapi.impl.util.math.ChunkSectionPos; import net.modificationstation.stationapi.mixin.flattening.server.ServerPlayerViewAccessor; -import net.modificationstation.stationapi.mixin.flattening.server.class_514Accessor; +import net.modificationstation.stationapi.mixin.flattening.server.ChunkMap$TrackedChunkAccessor; import java.util.List; @@ -79,7 +79,7 @@ public void sendQueue() { int z = (this.chunkZ << 4) + this.minZ; chunkTracker.sendPacketToPlayers(new FlattenedBlockChangeS2CPacket(x, y, z, world)); if (Block.BLOCKS_WITH_ENTITY[world.getBlockId(x, y, z)]) { - ((class_514Accessor) chunkTracker).invokeSendBlockEntityUpdate(world.getBlockEntity(x, y, z)); + ((ChunkMap$TrackedChunkAccessor) chunkTracker).invokeSendBlockEntityUpdate(world.getBlockEntity(x, y, z)); } } else if (this.updatesCount == 10) { this.minY = this.minY / 2 * 2; @@ -94,7 +94,7 @@ public void sendQueue() { //noinspection unchecked List list = world.getBlockEntities(x, y, z, x + sizeX, y + sizeY, z + sizeZ); for (int i = 0; i < list.size(); ++i) { - ((class_514Accessor) chunkTracker).invokeSendBlockEntityUpdate(list.get(i)); + ((ChunkMap$TrackedChunkAccessor) chunkTracker).invokeSendBlockEntityUpdate(list.get(i)); } } else { chunkTracker.sendPacketToPlayers(new FlattenedMultiBlockChangeS2CPacket(this.chunkX, this.chunkZ, sectionIndex, this.updates, this.updatesCount, world)); @@ -104,7 +104,7 @@ public void sendQueue() { int n10 = this.chunkZ * 16 + (this.updatesCount >> 8 & 0xF); if (!Block.BLOCKS_WITH_ENTITY[world.getBlockId(n, n9, n10)]) continue; System.out.println("Sending!"); - ((class_514Accessor) chunkTracker).invokeSendBlockEntityUpdate(world.getBlockEntity(n, n9, n10)); + ((ChunkMap$TrackedChunkAccessor) chunkTracker).invokeSendBlockEntityUpdate(world.getBlockEntity(n, n9, n10)); } } this.updatesCount = 0; diff --git a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/chunk/FlattenedWorldChunkLoader.java b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/chunk/FlattenedWorldChunkLoader.java index 2e6b637be..2a8383752 100644 --- a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/chunk/FlattenedWorldChunkLoader.java +++ b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/chunk/FlattenedWorldChunkLoader.java @@ -28,7 +28,7 @@ public FlattenedWorldChunkLoader(File dimFolder) { } @Override - public Chunk loadChunk(World arg, int i, int j) { + public Chunk loadChunk(World arg, int i, int j) throws IOException { DataInputStream dataInputStream = RegionIo.getChunkInputStream(dimFolder, i, j); if (dataInputStream == null) return null; @@ -54,7 +54,7 @@ public Chunk loadChunk(World arg, int i, int j) { } @Override - public void saveChunk(World world, Chunk oldChunk) { + public void saveChunk(World world, Chunk oldChunk) throws IOException { if (!(oldChunk instanceof FlattenedChunk chunk)) throw new IllegalStateException(getClass().getSimpleName() + " can't save chunk of type \"" + oldChunk.getClass().getName() + "\"!"); world.checkSessionLock(); DataOutputStream dataOutputStream = RegionIo.getChunkOutputStream(dimFolder, chunk.x, chunk.z); diff --git a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/storage/FlattenedWorldStorage.java b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/storage/FlattenedWorldStorage.java index 560050ce1..8db108843 100644 --- a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/storage/FlattenedWorldStorage.java +++ b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/impl/world/storage/FlattenedWorldStorage.java @@ -6,7 +6,6 @@ import it.unimi.dsi.fastutil.ints.IntSet; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.*; import net.minecraft.client.gui.screen.LoadingDisplay; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtIo; @@ -53,7 +52,7 @@ public List getAll() { for (File worldPath : Objects.requireNonNull(this.dir.listFiles())) { String worldFolder; WorldProperties data; - if (!worldPath.isDirectory() || (data = this.method_1004(worldFolder = worldPath.getName())) == null) continue; + if (!worldPath.isDirectory() || (data = this.getProperties(worldFolder = worldPath.getName())) == null) continue; NbtCompound worldTag = getWorldTag(worldFolder); boolean requiresUpdating = data.getVersion() != 19132 || NbtHelper.requiresUpdating(worldTag); String worldName = data.getName(); @@ -81,7 +80,7 @@ public NbtCompound getWorldTag(String worldFolder) { } @Override - public WorldStorage method_1009(String string, boolean bl) { + public WorldStorage get(String string, boolean bl) { return new FlattenedDimensionFile(this.dir, string, bl); } @@ -95,10 +94,14 @@ public boolean needsConversion(String string) { @Override public boolean convert(String worldFolder, LoadingDisplay progress) { - return convertWorld(worldFolder, (type, compound) -> NbtHelper.addDataVersions(NbtHelper.update(type, compound)), progress); + try { + return convertWorld(worldFolder, (type, compound) -> NbtHelper.addDataVersions(NbtHelper.update(type, compound)), progress); + } catch (IOException e) { + throw new RuntimeException(e); + } } - public boolean convertWorld(String worldFolder, BiFunction convertFunction, LoadingDisplay progress) { + public boolean convertWorld(String worldFolder, BiFunction convertFunction, LoadingDisplay progress) throws IOException { RegionIo.flush(); LOGGER.info("Creating a backup of world \"" + worldFolder + "\"..."); File worldFile = new File(dir, worldFolder); @@ -153,7 +156,7 @@ private void scanDimensionDir(File dimensionFolder, List regions) { Arrays.stream(regionFiles).map(RegionFile::new).forEach(regions::add); } - private void convertChunks(List regions, BiFunction convertFunction, LoadingDisplay progress) { + private void convertChunks(List regions, BiFunction convertFunction, LoadingDisplay progress) throws IOException { List existingChunks = new ArrayList<>(); int totalChunks = 0; for (RegionFile region : regions) { diff --git a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/client/InGameHudMixin.java b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/client/InGameHudMixin.java index ea908cd99..6c394d4a7 100644 --- a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/client/InGameHudMixin.java +++ b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/client/InGameHudMixin.java @@ -9,7 +9,6 @@ import net.minecraft.client.gui.hud.InGameHud; import net.minecraft.client.util.ScreenScaler; import net.minecraft.util.hit.HitResult; -import net.minecraft.util.hit.HitResultType; import net.modificationstation.stationapi.api.block.BlockState; import net.modificationstation.stationapi.api.state.property.Property; import net.modificationstation.stationapi.api.tag.TagKey; @@ -39,7 +38,7 @@ abstract class InGameHudMixin extends DrawContext { private void stationapi_renderHud(float bl, boolean i, int j, int par4, CallbackInfo ci, ScreenScaler scaler, int var6, int var7, TextRenderer var8) { HitResult hit = minecraft.crosshairTarget; int offset = 22; - if (hit != null && hit.type == HitResultType.BLOCK) { + if (hit != null && hit.type == HitResult.HitResultType.BLOCK) { BlockState state = minecraft.world.getBlockState(hit.blockX, hit.blockY, hit.blockZ); String text = "Block: " + state.getBlock().getTranslatedName(); diff --git a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/class_514Accessor.java b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/ChunkMap$TrackedChunkAccessor.java similarity index 87% rename from station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/class_514Accessor.java rename to station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/ChunkMap$TrackedChunkAccessor.java index 6b6a68d85..c11df77c0 100644 --- a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/class_514Accessor.java +++ b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/ChunkMap$TrackedChunkAccessor.java @@ -6,7 +6,7 @@ import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(ChunkMap.TrackedChunk.class) -public interface class_514Accessor { +public interface ChunkMap$TrackedChunkAccessor { @Invoker void invokeSendBlockEntityUpdate(BlockEntity tileEntity); } diff --git a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/class_514Mixin.java b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/ChunkMap$TrackedChunkMixin.java similarity index 55% rename from station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/class_514Mixin.java rename to station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/ChunkMap$TrackedChunkMixin.java index 26d7512ac..dc6dafbc7 100644 --- a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/class_514Mixin.java +++ b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/ChunkMap$TrackedChunkMixin.java @@ -3,20 +3,28 @@ import net.minecraft.server.ChunkMap; import net.modificationstation.stationapi.impl.server.network.ChunkSectionTracker; import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ChunkMap.TrackedChunk.class) -abstract class class_514Mixin { - @Shadow - @Final - ChunkMap field_2136; - +abstract class ChunkMap$TrackedChunkMixin { @Shadow private int chunkX; @Shadow private int chunkZ; @Unique - private final ChunkSectionTracker[] stationapi_sectionTrackers = new ChunkSectionTracker[field_2136.getWorld().countVerticalSections()]; + private ChunkMap stationapi_chunkMap; + + @Unique + private ChunkSectionTracker[] stationapi_sectionTrackers; + + @Inject(method = "", at = @At("RETURN")) + private void stationapi_init(ChunkMap chunkMap, int chunkX, int chunkZ, CallbackInfo ci) { + this.stationapi_chunkMap = chunkMap; + this.stationapi_sectionTrackers = new ChunkSectionTracker[chunkMap.getWorld().countVerticalSections()]; + } /** * @author mine_diver @@ -24,10 +32,10 @@ abstract class class_514Mixin { */ @Overwrite public void updatePlayerChunks(int x, int y, int z) { - int sectionIndex = field_2136.getWorld().getSectionIndex(y); + int sectionIndex = stationapi_chunkMap.getWorld().getSectionIndex(y); if (stationapi_sectionTrackers[sectionIndex] == null) //noinspection DataFlowIssue - stationapi_sectionTrackers[sectionIndex] = new ChunkSectionTracker(field_2136, (ChunkMap.TrackedChunk) (Object) this, chunkX, chunkZ, sectionIndex); + stationapi_sectionTrackers[sectionIndex] = new ChunkSectionTracker(stationapi_chunkMap, (ChunkMap.TrackedChunk) (Object) this, chunkX, chunkZ, sectionIndex); stationapi_sectionTrackers[sectionIndex].queueUpdate(x, y & 15, z); } diff --git a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/class_70Mixin.java b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/ServerPlayerInteractionManagerMixin.java similarity index 99% rename from station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/class_70Mixin.java rename to station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/ServerPlayerInteractionManagerMixin.java index 5b4747130..13895835e 100644 --- a/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/class_70Mixin.java +++ b/station-flattening-v0/src/main/java/net/modificationstation/stationapi/mixin/flattening/server/ServerPlayerInteractionManagerMixin.java @@ -17,7 +17,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ServerPlayerInteractionManager.class) -class class_70Mixin { +class ServerPlayerInteractionManagerMixin { @Shadow private ServerWorld world; @Shadow private int miningX; @Shadow private int miningY; diff --git a/station-flattening-v0/src/main/resources/fabric.mod.json b/station-flattening-v0/src/main/resources/fabric.mod.json index a2127702e..260d88ef7 100644 --- a/station-flattening-v0/src/main/resources/fabric.mod.json +++ b/station-flattening-v0/src/main/resources/fabric.mod.json @@ -2,7 +2,6 @@ "schemaVersion": 1, "id": "station-flattening-v0", "version": "${version}", - "name": "Station Flattening (v0)", "description": "MC1.13+ world save format for legacy Minecraft versions! Allows us to have infinite block and item IDs, as well as block states.", "authors": [ @@ -13,10 +12,8 @@ "sources": "https://github.com/ModificationStation/StationAPI", "issues": "https://github.com/ModificationStation/StationAPI/issues" }, - "license": "MIT", "icon": "assets/station-flattening-v0/icon.png", - "environment": "*", "entrypoints": { "stationapi:event_bus": [ @@ -35,52 +32,50 @@ "mixins": [ "station-flattening-v0.mixins.json" ], - "accessWidener" : "station-flattening-v0.accesswidener", - + "accessWidener": "station-flattening-v0.accesswidener", "depends": { "fabricloader": "*", "minecraft": "1.0.0-beta.7.3" }, - "custom": { "modmenu:api": true, "loom:injected_interfaces": { - "net/minecraft/class_18": [ + "net/minecraft/unmapped/C_64041439": [ "net/modificationstation/stationapi/api/world/StationFlatteningWorld" ], - "net/minecraft/class_43": [ + "net/minecraft/unmapped/C_14917579": [ "net/modificationstation/stationapi/api/world/chunk/StationFlatteningChunk" ], - "net/minecraft/class_17": [ + "net/minecraft/unmapped/C_81592558": [ "net/modificationstation/stationapi/api/block/StationFlatteningBlock" ], - "net/minecraft/class_54": [ + "net/minecraft/unmapped/C_40996800": [ "net/modificationstation/stationapi/api/entity/player/StationFlatteningPlayerEntity" ], - "net/minecraft/class_136": [ + "net/minecraft/unmapped/C_87542771": [ "net/modificationstation/stationapi/api/entity/player/StationFlatteningPlayerInventory" ], - "net/minecraft/class_31": [ + "net/minecraft/unmapped/C_88708284": [ "net/modificationstation/stationapi/api/item/StationFlatteningItemStack" ], - "net/minecraft/class_124": [ + "net/minecraft/unmapped/C_98888256": [ "net/modificationstation/stationapi/api/item/StationFlatteningItem" ], - "net/minecraft/class_42": [ + "net/minecraft/unmapped/C_97027864": [ "net/modificationstation/stationapi/api/world/StationFlatteningWorldPopulationRegion" ], - "net/minecraft/class_533": [ + "net/minecraft/unmapped/C_71827890": [ "net/modificationstation/stationapi/api/item/StationFlatteningBlockItem" ], - "net/minecraft/class_283": [ + "net/minecraft/unmapped/C_98403025": [ "net/modificationstation/stationapi/api/block/entity/StationFlatteningPistonBlockEntity" ], - "net/minecraft/class_50": [ + "net/minecraft/unmapped/C_90532916": [ "net/modificationstation/stationapi/api/world/dimension/StationDimension" ], - "net/minecraft/class_139": [ + "net/minecraft/unmapped/C_62649600": [ "net/modificationstation/stationapi/api/stat/StationFlatteningStat" ] } } -} \ No newline at end of file +} diff --git a/station-flattening-v0/src/main/resources/station-flattening-v0.mixins.json b/station-flattening-v0/src/main/resources/station-flattening-v0.mixins.json index 5f9a3b5cc..354366596 100644 --- a/station-flattening-v0/src/main/resources/station-flattening-v0.mixins.json +++ b/station-flattening-v0/src/main/resources/station-flattening-v0.mixins.json @@ -60,9 +60,9 @@ "defaultRequire": 1 }, "server": [ - "server.class_514Accessor", - "server.class_514Mixin", - "server.class_70Mixin", + "server.ChunkMap$TrackedChunkAccessor", + "server.ChunkMap$TrackedChunkMixin", + "server.ServerPlayerInteractionManagerMixin", "server.MinecraftServerMixin", "server.ServerPlayerEntityMixin", "server.ServerPlayerViewAccessor", diff --git a/station-items-v0/src/main/java/net/modificationstation/stationapi/api/item/CustomReachProvider.java b/station-items-v0/src/main/java/net/modificationstation/stationapi/api/item/CustomReachProvider.java index 0ed8dcbf4..0fa470ea9 100644 --- a/station-items-v0/src/main/java/net/modificationstation/stationapi/api/item/CustomReachProvider.java +++ b/station-items-v0/src/main/java/net/modificationstation/stationapi/api/item/CustomReachProvider.java @@ -2,8 +2,8 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.util.hit.HitResultType; +import net.minecraft.util.hit.HitResult; public interface CustomReachProvider { - double getReach(ItemStack stack, PlayerEntity player, HitResultType type, double currentReach); + double getReach(ItemStack stack, PlayerEntity player, HitResult.HitResultType type, double currentReach); } diff --git a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/GameRendererMixin.java b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/GameRendererMixin.java index b0d38edb7..0259ca32e 100644 --- a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/GameRendererMixin.java +++ b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/GameRendererMixin.java @@ -2,7 +2,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.render.GameRenderer; -import net.minecraft.util.hit.HitResultType; +import net.minecraft.util.hit.HitResult; import net.modificationstation.stationapi.api.StationAPI; import net.modificationstation.stationapi.api.event.entity.player.PlayerEvent; import org.spongepowered.asm.mixin.Mixin; @@ -23,7 +23,7 @@ private double stationapi_getEntityReach(double originalReach) { return StationAPI.EVENT_BUS.post( PlayerEvent.Reach.builder() .player(client.player) - .type(HitResultType.ENTITY) + .type(HitResult.HitResultType.ENTITY) .currentReach(originalReach) .build() ).currentReach; diff --git a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/MultiplayerInteractionManagerMixin.java b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/MultiplayerInteractionManagerMixin.java index f407163ac..d876da649 100644 --- a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/MultiplayerInteractionManagerMixin.java +++ b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/MultiplayerInteractionManagerMixin.java @@ -4,7 +4,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.MultiplayerInteractionManager; import net.minecraft.item.ItemStack; -import net.minecraft.util.hit.HitResultType; +import net.minecraft.util.hit.HitResult; import net.modificationstation.stationapi.api.StationAPI; import net.modificationstation.stationapi.api.event.entity.player.PlayerEvent; import org.spongepowered.asm.mixin.Mixin; @@ -28,7 +28,7 @@ private void stationapi_getBlockReach(CallbackInfoReturnable cir) { cir.setReturnValue((float) StationAPI.EVENT_BUS.post( PlayerEvent.Reach.builder() .player(minecraft.player) - .type(HitResultType.BLOCK) + .type(HitResult.HitResultType.BLOCK) .currentReach(cir.getReturnValueF()) .build() ).currentReach); diff --git a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/SingleplayerInteractionManagerMixin.java b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/SingleplayerInteractionManagerMixin.java index 7b16a306e..8d970bcd0 100644 --- a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/SingleplayerInteractionManagerMixin.java +++ b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/client/SingleplayerInteractionManagerMixin.java @@ -4,7 +4,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.SingleplayerInteractionManager; import net.minecraft.item.ItemStack; -import net.minecraft.util.hit.HitResultType; +import net.minecraft.util.hit.HitResult; import net.modificationstation.stationapi.api.StationAPI; import net.modificationstation.stationapi.api.event.entity.player.PlayerEvent; import org.spongepowered.asm.mixin.Mixin; @@ -28,7 +28,7 @@ private void stationapi_getBlockReach(CallbackInfoReturnable cir) { cir.setReturnValue((float) StationAPI.EVENT_BUS.post( PlayerEvent.Reach.builder() .player(minecraft.player) - .type(HitResultType.BLOCK) + .type(HitResult.HitResultType.BLOCK) .currentReach(cir.getReturnValueF()) .build() ).currentReach); diff --git a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/server/ServerPlayNetworkHandlerMixin.java b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/server/ServerPlayNetworkHandlerMixin.java index 8d513a0a5..0346e9d79 100644 --- a/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/server/ServerPlayNetworkHandlerMixin.java +++ b/station-items-v0/src/main/java/net/modificationstation/stationapi/mixin/item/server/ServerPlayNetworkHandlerMixin.java @@ -2,7 +2,7 @@ import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayNetworkHandler; -import net.minecraft.util.hit.HitResultType; +import net.minecraft.util.hit.HitResult; import net.modificationstation.stationapi.api.StationAPI; import net.modificationstation.stationapi.api.event.entity.player.PlayerEvent; import org.spongepowered.asm.mixin.Mixin; @@ -23,7 +23,7 @@ private double stationapi_getBlockReach(double originalReach) { return Math.pow(StationAPI.EVENT_BUS.post( PlayerEvent.Reach.builder() .player(player) - .type(HitResultType.BLOCK) + .type(HitResult.HitResultType.BLOCK) .currentReach(Math.sqrt(originalReach)) .build() ).currentReach, 2); @@ -37,7 +37,7 @@ private double stationapi_getEntityReach(double originalReach) { return Math.pow(StationAPI.EVENT_BUS.post( PlayerEvent.Reach.builder() .player(player) - .type(HitResultType.ENTITY) + .type(HitResult.HitResultType.ENTITY) .currentReach(Math.sqrt(originalReach)) .build() ).currentReach, 2); diff --git a/station-items-v0/src/main/resources/fabric.mod.json b/station-items-v0/src/main/resources/fabric.mod.json index b18a60b38..def4d3074 100644 --- a/station-items-v0/src/main/resources/fabric.mod.json +++ b/station-items-v0/src/main/resources/fabric.mod.json @@ -2,7 +2,6 @@ "schemaVersion": 1, "id": "station-items-v0", "version": "${version}", - "name": "Station Items (v0)", "description": "Essential systems for modded items.", "authors": [ @@ -13,10 +12,8 @@ "sources": "https://github.com/ModificationStation/StationAPI", "issues": "https://github.com/ModificationStation/StationAPI/issues" }, - "license": "MIT", "icon": "assets/station-items-v0/icon.png", - "environment": "*", "entrypoints": { "stationapi:event_bus": [ @@ -37,27 +34,25 @@ "mixins": [ "station-items-v0.mixins.json" ], - "depends": { "fabricloader": "*", "minecraft": "1.0.0-beta.7.3" }, - "custom": { "modmenu:api": true, "loom:injected_interfaces": { - "net/minecraft/class_124": [ + "net/minecraft/unmapped/C_98888256": [ "net/modificationstation/stationapi/api/item/StationItem" ], - "net/minecraft/class_31": [ + "net/minecraft/unmapped/C_88708284": [ "net/modificationstation/stationapi/api/item/StationItemStack" ], - "net/minecraft/class_17": [ + "net/minecraft/unmapped/C_81592558": [ "net/modificationstation/stationapi/api/block/StationItemsBlock" ], - "net/minecraft/class_57": [ + "net/minecraft/unmapped/C_42232651": [ "net/modificationstation/stationapi/api/entity/StationItemsEntity" ] } } -} \ No newline at end of file +} diff --git a/station-keybindings-v0/src/main/java/net/modificationstation/stationapi/api/client/option/OptionFactory.java b/station-keybindings-v0/src/main/java/net/modificationstation/stationapi/api/client/option/OptionFactory.java index 481dc3b94..f39a53077 100644 --- a/station-keybindings-v0/src/main/java/net/modificationstation/stationapi/api/client/option/OptionFactory.java +++ b/station-keybindings-v0/src/main/java/net/modificationstation/stationapi/api/client/option/OptionFactory.java @@ -2,14 +2,14 @@ import lombok.AccessLevel; import lombok.NoArgsConstructor; -import net.minecraft.client.option.Option; +import net.minecraft.client.option.GameOptions; import net.modificationstation.stationapi.mixin.keybinding.client.OptionAccessor; @NoArgsConstructor(access = AccessLevel.PRIVATE) public final class OptionFactory { - private static int nextId = Option.values().length; + private static int nextId = GameOptions.Option.values().length; - public static Option create(String optionName, String translationKey, boolean slider, boolean toggle) { + public static GameOptions.Option create(String optionName, String translationKey, boolean slider, boolean toggle) { return OptionAccessor.stationapi_create(optionName, nextId++, translationKey, slider, toggle); } } diff --git a/station-keybindings-v0/src/main/java/net/modificationstation/stationapi/mixin/keybinding/client/OptionAccessor.java b/station-keybindings-v0/src/main/java/net/modificationstation/stationapi/mixin/keybinding/client/OptionAccessor.java index b98ca0716..7b66dc1dd 100644 --- a/station-keybindings-v0/src/main/java/net/modificationstation/stationapi/mixin/keybinding/client/OptionAccessor.java +++ b/station-keybindings-v0/src/main/java/net/modificationstation/stationapi/mixin/keybinding/client/OptionAccessor.java @@ -1,14 +1,14 @@ package net.modificationstation.stationapi.mixin.keybinding.client; -import net.minecraft.client.option.Option; +import net.minecraft.client.option.GameOptions; import net.modificationstation.stationapi.api.util.Util; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; -@Mixin(Option.class) +@Mixin(GameOptions.Option.class) public interface OptionAccessor { @Invoker("") - static Option stationapi_create(String optionName, int id, String translationKey, boolean slider, boolean toggle) { + static GameOptions.Option stationapi_create(String optionName, int id, String translationKey, boolean slider, boolean toggle) { return Util.assertMixin(); } } diff --git a/station-maths-v0/src/main/java/net/modificationstation/stationapi/api/util/math/Matrix3f.java b/station-maths-v0/src/main/java/net/modificationstation/stationapi/api/util/math/Matrix3f.java index 62703ca56..fadd15a78 100644 --- a/station-maths-v0/src/main/java/net/modificationstation/stationapi/api/util/math/Matrix3f.java +++ b/station-maths-v0/src/main/java/net/modificationstation/stationapi/api/util/math/Matrix3f.java @@ -1,7 +1,6 @@ package net.modificationstation.stationapi.api.util.math; import com.mojang.datafixers.util.Pair; -import org.apache.commons.lang3.tuple.Triple; import java.nio.FloatBuffer; @@ -203,7 +202,9 @@ public void transpose() { this.a21 = f; } - public Triple decomposeLinearTransformation() { + public record LinearTransformationDecomposition(Quaternion rotationBefore, Vec3f scale, Quaternion rotationAfter) {} + + public LinearTransformationDecomposition decomposeLinearTransformation() { Quaternion quaternion = Quaternion.IDENTITY.copy(); Quaternion quaternion2 = Quaternion.IDENTITY.copy(); Matrix3f matrix3f = this.copy(); @@ -272,7 +273,7 @@ public Triple decomposeLinearTransformation() { f = 1.0F / f; quaternion.scale((float)Math.sqrt(f)); Vec3f vector3f = new Vec3f(matrix3f5.a00 * f, matrix3f5.a11 * f, matrix3f5.a22 * f); - return Triple.of(quaternion, vector3f, quaternion2); + return new LinearTransformationDecomposition(quaternion, vector3f, quaternion2); } public boolean equals(Object object) { diff --git a/station-maths-v0/src/main/resources/fabric.mod.json b/station-maths-v0/src/main/resources/fabric.mod.json index edbefa8ee..5f0f605fe 100644 --- a/station-maths-v0/src/main/resources/fabric.mod.json +++ b/station-maths-v0/src/main/resources/fabric.mod.json @@ -2,7 +2,6 @@ "schemaVersion": 1, "id": "station-maths-v0", "version": "${version}", - "name": "Station Maths (v0)", "description": "Some math utilities.", "authors": [ @@ -13,26 +12,22 @@ "sources": "https://github.com/ModificationStation/StationAPI", "issues": "https://github.com/ModificationStation/StationAPI/issues" }, - "license": "MIT", "icon": "assets/station-maths-v0/icon.png", - "environment": "*", "mixins": [ "station-maths-v0.mixins.json" ], - "depends": { "fabricloader": "*", "minecraft": "1.0.0-beta.7.3" }, - "custom": { "modmenu:api": true, "loom:injected_interfaces": { - "net/minecraft/class_339": [ + "net/minecraft/unmapped/C_32594356": [ "net/modificationstation/stationapi/api/util/math/StationBlockPos" ] } } -} \ No newline at end of file +} diff --git a/station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/NbtOps.java b/station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/NbtOps.java index 50e34a869..63e69184e 100644 --- a/station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/NbtOps.java +++ b/station-nbt-v0/src/main/java/net/modificationstation/stationapi/api/nbt/NbtOps.java @@ -17,11 +17,11 @@ import net.modificationstation.stationapi.api.util.Util; import net.modificationstation.stationapi.mixin.nbt.NbtCompoundAccessor; import net.modificationstation.stationapi.mixin.nbt.NbtListAccessor; -import org.apache.commons.lang3.ArrayUtils; import org.jetbrains.annotations.Nullable; import java.io.DataInput; import java.io.DataOutput; +import java.io.IOException; import java.nio.ByteBuffer; import java.util.*; import java.util.function.*; @@ -195,12 +195,20 @@ public String toString() { @Override public void write(DataOutput out) { - array.write(out); + try { + array.write(out); + } catch (IOException e) { + throw new RuntimeException(e); + } } @Override public void read(DataInput in) { - array.read(in); + try { + array.read(in); + } catch (IOException e) { + throw new RuntimeException(e); + } } @Override @@ -215,12 +223,30 @@ public NbtElement setKey(String string) { } private static NbtList createList(byte knownType, byte valueType) { - if (NbtOps.isTypeEqual(knownType, valueType, (byte) 4)) return new ListArrayTag<>(new NbtLongArray(new long[0]), array -> Predicates.compose(Predicates.alwaysTrue(), tag -> array.data = ArrayUtils.insert(array.data.length, array.data, tag.value)), array -> i -> new NbtLong(array.data[i]), array -> () -> array.data.length, (byte) 4); - if (NbtOps.isTypeEqual(knownType, valueType, (byte) 1)) return new ListArrayTag<>(new NbtByteArray(new byte[0]), array -> Predicates.compose(Predicates.alwaysTrue(), tag -> array.value = ArrayUtils.insert(array.value.length, array.value, tag.value)), array -> i -> new NbtByte(array.value[i]), array -> () -> array.value.length, (byte) 1); - if (NbtOps.isTypeEqual(knownType, valueType, (byte) 3)) return new ListArrayTag<>(new NbtIntArray(new int[0]), array -> Predicates.compose(Predicates.alwaysTrue(), tag -> array.data = ArrayUtils.insert(array.data.length, array.data, tag.value)), array -> i -> new NbtInt(array.data[i]), array -> () -> array.data.length, (byte) 3); + if (NbtOps.isTypeEqual(knownType, valueType, (byte) 4)) return new ListArrayTag<>(new NbtLongArray(new long[0]), array -> Predicates.compose(Predicates.alwaysTrue(), tag -> array.data = insert(array.data, tag.value)), array -> i -> new NbtLong(array.data[i]), array -> () -> array.data.length, (byte) 4); + if (NbtOps.isTypeEqual(knownType, valueType, (byte) 1)) return new ListArrayTag<>(new NbtByteArray(new byte[0]), array -> Predicates.compose(Predicates.alwaysTrue(), tag -> array.value = insert(array.value, tag.value)), array -> i -> new NbtByte(array.value[i]), array -> () -> array.value.length, (byte) 1); + if (NbtOps.isTypeEqual(knownType, valueType, (byte) 3)) return new ListArrayTag<>(new NbtIntArray(new int[0]), array -> Predicates.compose(Predicates.alwaysTrue(), tag -> array.data = insert(array.data, tag.value)), array -> i -> new NbtInt(array.data[i]), array -> () -> array.data.length, (byte) 3); return new NbtList(); } + private static long[] insert(long[] array, long value) { + long[] newArray = Arrays.copyOf(array, array.length + 1); + newArray[array.length] = value; + return newArray; + } + + private static byte[] insert(byte[] array, byte value) { + byte[] newArray = Arrays.copyOf(array, array.length + 1); + newArray[array.length] = value; + return newArray; + } + + private static int[] insert(int[] array, int value) { + int[] newArray = Arrays.copyOf(array, array.length + 1); + newArray[array.length] = value; + return newArray; + } + private static boolean isTypeEqual(byte knownType, byte valueType, byte expectedType) { return knownType == expectedType && (valueType == expectedType || valueType == 0); } diff --git a/station-nbt-v0/src/main/resources/fabric.mod.json b/station-nbt-v0/src/main/resources/fabric.mod.json index 6d4d2ef98..4fda49ffb 100644 --- a/station-nbt-v0/src/main/resources/fabric.mod.json +++ b/station-nbt-v0/src/main/resources/fabric.mod.json @@ -2,7 +2,6 @@ "schemaVersion": 1, "id": "station-nbt-v0", "version": "${version}", - "name": "Station NBT (v0)", "description": "Expands and makes it easier to use in-game NBT.", "authors": [ @@ -13,59 +12,55 @@ "sources": "https://github.com/ModificationStation/StationAPI", "issues": "https://github.com/ModificationStation/StationAPI/issues" }, - "license": "MIT", "icon": "assets/station-nbt-v0/icon.png", - "environment": "*", "mixins": [ "station-nbt-v0.mixins.json" ], - "depends": { "fabricloader": "*", "minecraft": "1.0.0-beta.7.3" }, - "custom": { "modmenu:api": true, "loom:injected_interfaces": { - "net/minecraft/class_360": [ + "net/minecraft/unmapped/C_64685490": [ "net/modificationstation/stationapi/api/nbt/StationNbtByte" ], - "net/minecraft/class_165": [ + "net/minecraft/unmapped/C_03009146": [ "net/modificationstation/stationapi/api/nbt/StationNbtByteArray" ], - "net/minecraft/class_8": [ + "net/minecraft/unmapped/C_74087615": [ "net/modificationstation/stationapi/api/nbt/StationNbtCompound" ], - "net/minecraft/class_419": [ + "net/minecraft/unmapped/C_06229858": [ "net/modificationstation/stationapi/api/nbt/StationNbtDouble" ], - "net/minecraft/class_187": [ + "net/minecraft/unmapped/C_97075175": [ "net/modificationstation/stationapi/api/nbt/StationNbtElement" ], - "net/minecraft/class_253": [ + "net/minecraft/unmapped/C_50870163": [ "net/modificationstation/stationapi/api/nbt/StationNbtEnd" ], - "net/minecraft/class_358": [ + "net/minecraft/unmapped/C_02949887": [ "net/modificationstation/stationapi/api/nbt/StationNbtFloat" ], - "net/minecraft/class_347": [ + "net/minecraft/unmapped/C_57925352": [ "net/modificationstation/stationapi/api/nbt/StationNbtInt" ], - "net/minecraft/class_202": [ + "net/minecraft/unmapped/C_79370641": [ "net/modificationstation/stationapi/api/nbt/StationNbtList" ], - "net/minecraft/class_273": [ + "net/minecraft/unmapped/C_90490889": [ "net/modificationstation/stationapi/api/nbt/StationNbtLong" ], - "net/minecraft/class_462": [ + "net/minecraft/unmapped/C_80104453": [ "net/modificationstation/stationapi/api/nbt/StationNbtShort" ], - "net/minecraft/class_522": [ + "net/minecraft/unmapped/C_74891195": [ "net/modificationstation/stationapi/api/nbt/StationNbtString" ] } } -} \ No newline at end of file +} diff --git a/station-player-api-v0/src/main/java/net/modificationstation/stationapi/api/event/entity/player/PlayerEvent.java b/station-player-api-v0/src/main/java/net/modificationstation/stationapi/api/event/entity/player/PlayerEvent.java index b9221b027..f4960ced8 100644 --- a/station-player-api-v0/src/main/java/net/modificationstation/stationapi/api/event/entity/player/PlayerEvent.java +++ b/station-player-api-v0/src/main/java/net/modificationstation/stationapi/api/event/entity/player/PlayerEvent.java @@ -4,7 +4,7 @@ import net.mine_diver.unsafeevents.Event; import net.mine_diver.unsafeevents.event.EventPhases; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.hit.HitResultType; +import net.minecraft.util.hit.HitResult; import net.modificationstation.stationapi.api.StationAPI; @SuperBuilder @@ -14,7 +14,7 @@ public abstract class PlayerEvent extends Event { @SuperBuilder @EventPhases(StationAPI.INTERNAL_PHASE) public static class Reach extends PlayerEvent { - public final HitResultType type; + public final HitResult.HitResultType type; public double currentReach; } } diff --git a/station-recipes-v0/src/main/java/net/modificationstation/stationapi/mixin/recipe/RecipeComparatorMixin.java b/station-recipes-v0/src/main/java/net/modificationstation/stationapi/mixin/recipe/RecipeComparatorMixin.java index efb5b4ce2..2ba7081d6 100644 --- a/station-recipes-v0/src/main/java/net/modificationstation/stationapi/mixin/recipe/RecipeComparatorMixin.java +++ b/station-recipes-v0/src/main/java/net/modificationstation/stationapi/mixin/recipe/RecipeComparatorMixin.java @@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.Constant; -@Mixin(targets = "net.minecraft.recipe.CraftingRecipeManager$1") +@Mixin(targets = "net.minecraft.recipe.CraftingRecipeManager$57536588") class RecipeComparatorMixin { @WrapOperation( method = "compare(Lnet/minecraft/recipe/CraftingRecipe;Lnet/minecraft/recipe/CraftingRecipe;)I", diff --git a/station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/registry/RegistryKey.java b/station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/registry/RegistryKey.java index f9d98dac4..4c18052ed 100644 --- a/station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/registry/RegistryKey.java +++ b/station-registry-api-v0/src/main/java/net/modificationstation/stationapi/api/registry/RegistryKey.java @@ -1,11 +1,12 @@ package net.modificationstation.stationapi.api.registry; -import com.github.benmanes.caffeine.cache.Cache; -import com.github.benmanes.caffeine.cache.Caffeine; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; import com.mojang.serialization.Codec; import net.modificationstation.stationapi.api.util.Identifier; import java.util.Optional; +import java.util.concurrent.ExecutionException; /** * Represents a key for a value in a registry in a context where a @@ -19,7 +20,7 @@ public class RegistryKey { /** * A cache of all registry keys ever created. */ - private static final Cache> CACHE = Caffeine.newBuilder().softValues().build(); + private static final Cache> CACHE = CacheBuilder.newBuilder().softValues().build(); /** * The identifier of the registry in the root registry. */ @@ -66,8 +67,13 @@ public static > RegistryKey ofRegistry(Identifier re } private static RegistryKey of(Identifier registry, Identifier value) { - //noinspection unchecked - return (RegistryKey) CACHE.get(new RegistryIdPair(registry, value), pair -> new RegistryKey<>(pair.registry, pair.id)); + final var key = new RegistryIdPair(registry, value); + try { + //noinspection unchecked + return (RegistryKey) CACHE.get(key, () -> new RegistryKey<>(key.registry, key.id)); + } catch (ExecutionException e) { + throw new RuntimeException(e); + } } private RegistryKey(Identifier registry, Identifier value) { diff --git a/station-registry-sync-v0/src/main/java/net/modificationstation/stationapi/impl/client/registry/ClientServerRegistryRemapper.java b/station-registry-sync-v0/src/main/java/net/modificationstation/stationapi/impl/client/registry/ClientServerRegistryRemapper.java index 0bfab1a18..f1738906a 100644 --- a/station-registry-sync-v0/src/main/java/net/modificationstation/stationapi/impl/client/registry/ClientServerRegistryRemapper.java +++ b/station-registry-sync-v0/src/main/java/net/modificationstation/stationapi/impl/client/registry/ClientServerRegistryRemapper.java @@ -12,6 +12,7 @@ import net.modificationstation.stationapi.api.registry.legacy.WorldLegacyRegistry; import java.io.ByteArrayInputStream; +import java.io.IOException; import java.lang.invoke.MethodHandles; import static net.modificationstation.stationapi.api.StationAPI.LOGGER; @@ -31,7 +32,11 @@ private static void registerListeners(MessageListenerRegistryEvent event) { private static void remapRegistries(PlayerEntity player, MessagePacket message) { LOGGER.info("Received level registries from server. Remapping..."); - WorldLegacyRegistry.loadAll(NbtIo.readCompressed(new ByteArrayInputStream(message.bytes))); + try { + WorldLegacyRegistry.loadAll(NbtIo.readCompressed(new ByteArrayInputStream(message.bytes))); + } catch (IOException e) { + throw new RuntimeException(e); + } LOGGER.info("Successfully synchronized registries with the server."); } } diff --git a/station-registry-sync-v0/src/main/java/net/modificationstation/stationapi/impl/network/packet/s2c/play/RemapClientRegistryS2CPacket.java b/station-registry-sync-v0/src/main/java/net/modificationstation/stationapi/impl/network/packet/s2c/play/RemapClientRegistryS2CPacket.java index 07fbbbbb0..49b34eb39 100644 --- a/station-registry-sync-v0/src/main/java/net/modificationstation/stationapi/impl/network/packet/s2c/play/RemapClientRegistryS2CPacket.java +++ b/station-registry-sync-v0/src/main/java/net/modificationstation/stationapi/impl/network/packet/s2c/play/RemapClientRegistryS2CPacket.java @@ -59,11 +59,19 @@ public void write(DataOutputStream stream) { try { stream.writeInt(map.size()); map.forEach((registryId, registryMapping) -> { - writeString(registryId.toString(), stream); + try { + writeString(registryId.toString(), stream); + } catch (IOException e) { + throw new RuntimeException(e); + } try { stream.writeInt(registryMapping.size()); registryMapping.forEach((identifier, rawId) -> { - writeString(identifier.toString(), stream); + try { + writeString(identifier.toString(), stream); + } catch (IOException e) { + throw new RuntimeException(e); + } try { stream.writeInt(rawId); } catch (IOException e) { diff --git a/station-registry-sync-v0/src/main/java/net/modificationstation/stationapi/impl/server/registry/ServerRegistrySender.java b/station-registry-sync-v0/src/main/java/net/modificationstation/stationapi/impl/server/registry/ServerRegistrySender.java index d6405057d..6daee7318 100644 --- a/station-registry-sync-v0/src/main/java/net/modificationstation/stationapi/impl/server/registry/ServerRegistrySender.java +++ b/station-registry-sync-v0/src/main/java/net/modificationstation/stationapi/impl/server/registry/ServerRegistrySender.java @@ -14,6 +14,7 @@ import net.modificationstation.stationapi.api.server.event.network.PlayerPacketHandlerSetEvent; import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.lang.invoke.MethodHandles; import static net.modificationstation.stationapi.api.StationAPI.LOGGER; @@ -34,7 +35,11 @@ private static void sendWorldRegistry(PlayerPacketHandlerSetEvent event) { NbtCompound registries = new NbtCompound(); WorldLegacyRegistry.saveAll(registries); ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream(); - NbtIo.writeCompressed(registries, byteOutputStream); + try { + NbtIo.writeCompressed(registries, byteOutputStream); + } catch (IOException e) { + throw new RuntimeException(e); + } MessagePacket message = new MessagePacket(of(NAMESPACE, "server_registry_sync")); message.bytes = byteOutputStream.toByteArray(); PacketHelper.sendTo(event.player, message); diff --git a/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/render/model/ModelIdentifier.java b/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/render/model/ModelIdentifier.java index 1cee5ff24..1a076f659 100644 --- a/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/render/model/ModelIdentifier.java +++ b/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/render/model/ModelIdentifier.java @@ -1,7 +1,7 @@ package net.modificationstation.stationapi.api.client.render.model; -import com.github.benmanes.caffeine.cache.Cache; -import com.github.benmanes.caffeine.cache.Caffeine; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import net.fabricmc.api.EnvType; @@ -9,12 +9,14 @@ import net.modificationstation.stationapi.api.util.Identifier; import net.modificationstation.stationapi.api.util.Namespace; +import java.util.concurrent.ExecutionException; + @SuppressWarnings("ClassCanBeRecord") @RequiredArgsConstructor(access = AccessLevel.PRIVATE) @Environment(EnvType.CLIENT) public final class ModelIdentifier { - private static final Cache CACHE = Caffeine.newBuilder().softValues().build(); + private static final Cache CACHE = CacheBuilder.newBuilder().softValues().build(); public final Identifier id; public final String variant; @@ -25,7 +27,11 @@ public static ModelIdentifier of(String string) { } public static ModelIdentifier of(Identifier id, String variant) { - return CACHE.get(variant.isEmpty() ? id.toString() : id + "#" + variant, s -> new ModelIdentifier(id, variant)); + try { + return CACHE.get(variant.isEmpty() ? id.toString() : id + "#" + variant, () -> new ModelIdentifier(id, variant)); + } catch (ExecutionException e) { + throw new RuntimeException(e); + } } public static ModelIdentifier of(String string, String string2) { diff --git a/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/metadata/AnimationResourceMetadataReader.java b/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/metadata/AnimationResourceMetadataReader.java index c0bd4706a..3d3c1065c 100644 --- a/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/metadata/AnimationResourceMetadataReader.java +++ b/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/metadata/AnimationResourceMetadataReader.java @@ -1,5 +1,6 @@ package net.modificationstation.stationapi.api.client.resource.metadata; +import com.google.common.base.Preconditions; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -8,7 +9,6 @@ import net.fabricmc.api.Environment; import net.modificationstation.stationapi.api.resource.metadata.ResourceMetadataReader; import net.modificationstation.stationapi.api.util.JsonHelper; -import org.apache.commons.lang3.Validate; import java.util.ArrayList; import java.util.List; @@ -21,7 +21,7 @@ public AnimationResourceMetadata fromJson(JsonObject jsonObject) { List list = new ArrayList<>(); int i = JsonHelper.getInt(jsonObject, "frametime", 1); if (i != 1) { - Validate.inclusiveBetween(1L, Integer.MAX_VALUE, i, "Invalid default frame time"); + Preconditions.checkArgument(i >= 1, "Invalid default frame time"); } if (jsonObject.has("frames")) { try { @@ -40,10 +40,10 @@ public AnimationResourceMetadata fromJson(JsonObject jsonObject) { int k = JsonHelper.getInt(jsonObject, "width", -1); int l = JsonHelper.getInt(jsonObject, "height", -1); if (k != -1) { - Validate.inclusiveBetween(1L, Integer.MAX_VALUE, k, "Invalid width"); + Preconditions.checkArgument(k >= 1, "Invalid width"); } if (l != -1) { - Validate.inclusiveBetween(1L, Integer.MAX_VALUE, l, "Invalid height"); + Preconditions.checkArgument(l >= 1, "Invalid height"); } boolean bl = JsonHelper.getBoolean(jsonObject, "interpolate", false); return new AnimationResourceMetadata(list, k, l, i, bl); @@ -57,10 +57,10 @@ private AnimationFrameResourceMetadata readFrameMetadata(int frame, JsonElement JsonObject jsonObject = JsonHelper.asObject(json, "frames[" + frame + "]"); int i = JsonHelper.getInt(jsonObject, "time", -1); if (jsonObject.has("time")) { - Validate.inclusiveBetween(1L, Integer.MAX_VALUE, i, "Invalid frame time"); + Preconditions.checkArgument(i >= 1, "Invalid frame time"); } int j = JsonHelper.getInt(jsonObject, "index"); - Validate.inclusiveBetween(0L, Integer.MAX_VALUE, j, "Invalid frame index"); + Preconditions.checkArgument(j >= 0, "Invalid frame index"); return new AnimationFrameResourceMetadata(j, i); } return null; diff --git a/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/texture/SpriteIdentifier.java b/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/texture/SpriteIdentifier.java index ab69fa8d3..13cd4bbd2 100644 --- a/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/texture/SpriteIdentifier.java +++ b/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/texture/SpriteIdentifier.java @@ -1,7 +1,7 @@ package net.modificationstation.stationapi.api.client.texture; -import com.github.benmanes.caffeine.cache.Cache; -import com.github.benmanes.caffeine.cache.Caffeine; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.modificationstation.stationapi.api.client.StationRenderAPI; @@ -10,19 +10,24 @@ import java.util.Comparator; import java.util.Objects; +import java.util.concurrent.ExecutionException; @Environment(EnvType.CLIENT) public class SpriteIdentifier { public static final Comparator COMPARATOR = Comparator.comparing(id -> id.atlas).thenComparing(id -> id.texture); @NotNull - private static final Cache CACHE = Caffeine.newBuilder().softValues().build(); + private static final Cache CACHE = CacheBuilder.newBuilder().softValues().build(); public final Identifier atlas; public final Identifier texture; public static SpriteIdentifier of(Identifier atlas, Identifier texture) { - return CACHE.get(toString(atlas, texture), string -> new SpriteIdentifier(atlas, texture)); + try { + return CACHE.get(toString(atlas, texture), () -> new SpriteIdentifier(atlas, texture)); + } catch (ExecutionException e) { + throw new RuntimeException(e); + } } private SpriteIdentifier(Identifier atlas, Identifier texture) { diff --git a/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/world/ColorResolver.java b/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/world/ColorResolver.java index f8555f959..399a291ee 100644 --- a/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/world/ColorResolver.java +++ b/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/client/world/ColorResolver.java @@ -14,9 +14,9 @@ interface ByTemperatureAndRainfall extends ColorResolver { @Override default int getColor(BlockView world, double x, double y, double z) { - world.method_1781().getBiomesInArea(MathHelper.floor(x), MathHelper.floor(z), 1, 1); - double temperature = world.method_1781().temperatureMap[0]; - double rainfall = world.method_1781().downfallMap[0]; + world.getBiomeSource().getBiomesInArea(MathHelper.floor(x), MathHelper.floor(z), 1, 1); + double temperature = world.getBiomeSource().temperatureMap[0]; + double rainfall = world.getBiomeSource().downfallMap[0]; return getColour(temperature, rainfall); } @@ -28,7 +28,7 @@ interface ByBiomeAndPosition extends ColorResolver { @Override default int getColor(BlockView blockView, double x, double y, double z) { - return getColour(blockView.method_1781().getBiome(MathHelper.floor(x), MathHelper.floor(z)), x, z); + return getColour(blockView.getBiomeSource().getBiome(MathHelper.floor(x), MathHelper.floor(z)), x, z); } int getColour(Biome biome, double x, double z); diff --git a/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/util/math/AffineTransformation.java b/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/util/math/AffineTransformation.java index 872dffd13..66a81842d 100644 --- a/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/util/math/AffineTransformation.java +++ b/station-renderer-api-v0/src/main/java/net/modificationstation/stationapi/api/util/math/AffineTransformation.java @@ -2,7 +2,6 @@ import com.mojang.datafixers.util.Pair; import net.modificationstation.stationapi.api.util.Util; -import org.apache.commons.lang3.tuple.Triple; import org.jetbrains.annotations.Nullable; import java.util.Objects; @@ -67,11 +66,11 @@ public AffineTransformation invert() { private void init() { if (!this.initialized) { Pair pair = getLinearTransformationAndTranslationFromAffine(this.matrix); - Triple triple = pair.getFirst().decomposeLinearTransformation(); + Matrix3f.LinearTransformationDecomposition decomposition = pair.getFirst().decomposeLinearTransformation(); this.translation = pair.getSecond(); - this.rotation2 = triple.getLeft(); - this.scale = triple.getMiddle(); - this.rotation1 = triple.getRight(); + this.rotation2 = decomposition.rotationBefore(); + this.scale = decomposition.scale(); + this.rotation1 = decomposition.rotationAfter(); this.initialized = true; } diff --git a/station-renderer-api-v0/src/main/resources/fabric.mod.json b/station-renderer-api-v0/src/main/resources/fabric.mod.json index 0da340298..756de1903 100644 --- a/station-renderer-api-v0/src/main/resources/fabric.mod.json +++ b/station-renderer-api-v0/src/main/resources/fabric.mod.json @@ -2,7 +2,6 @@ "schemaVersion": 1, "id": "station-renderer-api-v0", "version": "${version}", - "name": "Station Renderer API (v0)", "description": "Textures, models, text color, etc.", "authors": [ @@ -13,10 +12,8 @@ "sources": "https://github.com/ModificationStation/StationAPI", "issues": "https://github.com/ModificationStation/StationAPI/issues" }, - "license": "MIT", "icon": "assets/station-renderer-api-v0/icon.png", - "environment": "client", "entrypoints": { "stationapi:event_bus_client": [ @@ -26,27 +23,25 @@ "mixins": [ "station-renderer-api-v0.mixins.json" ], - "depends": { "fabricloader": "*", "minecraft": "1.0.0-beta.7.3" }, - "custom": { "modmenu:api": true, "loom:injected_interfaces": { - "net/minecraft/class_17": [ + "net/minecraft/unmapped/C_81592558": [ "net/modificationstation/stationapi/api/client/block/StationRendererBlock" ], - "net/minecraft/class_67": [ + "net/minecraft/unmapped/C_96603444": [ "net/modificationstation/stationapi/api/client/render/StationTessellator" ], - "net/minecraft/class_124": [ + "net/minecraft/unmapped/C_98888256": [ "net/modificationstation/stationapi/api/client/item/StationRendererItem" ], - "net/minecraft/class_13": [ + "net/minecraft/unmapped/C_03670941": [ "net/modificationstation/stationapi/api/client/render/block/StationRendererBlockRenderManager" ] } } -} \ No newline at end of file +} diff --git a/station-renderer-arsenic/src/main/java/net/modificationstation/stationapi/impl/client/arsenic/renderer/render/ArsenicOverlayRenderer.java b/station-renderer-arsenic/src/main/java/net/modificationstation/stationapi/impl/client/arsenic/renderer/render/ArsenicOverlayRenderer.java index 8e08779ea..02902c13f 100644 --- a/station-renderer-arsenic/src/main/java/net/modificationstation/stationapi/impl/client/arsenic/renderer/render/ArsenicOverlayRenderer.java +++ b/station-renderer-arsenic/src/main/java/net/modificationstation/stationapi/impl/client/arsenic/renderer/render/ArsenicOverlayRenderer.java @@ -179,7 +179,7 @@ public void renderItem(float f) { Lighting.turnOn(); glPopMatrix(); ItemStack var5 = access.stationapi$getStack(); - float var6 = access.stationapi$getMinecraft().world.method_1782(MathHelper.floor(var3.x), MathHelper.floor(var3.y), MathHelper.floor(var3.z)); + float var6 = access.stationapi$getMinecraft().world.getLuminance(MathHelper.floor(var3.x), MathHelper.floor(var3.y), MathHelper.floor(var3.z)); if (var5 != null) { int var7 = Item.ITEMS[var5.itemId].getColorMultiplier(var5.getDamage()); float var8 = (float)(var7 >> 16 & 255) / 255.0F; diff --git a/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/LWJGLHelper.java b/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/LWJGLHelper.java new file mode 100644 index 000000000..5ed8eb0a9 --- /dev/null +++ b/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/LWJGLHelper.java @@ -0,0 +1,126 @@ +package net.modificationstation.stationapi.api.client.resource; + +import java.lang.reflect.Method; +import java.util.function.BooleanSupplier; + +/** + * Utility class to handle LWJGL2 vs LWJGL3/starac differences. + * + * For LWJGL2: Uses SharedDrawable for threaded context sharing. + * For LWJGL3/starac: Uses EarlyRenderLoop for single-threaded rendering with proper event handling. + */ +final class LWJGLHelper { + private static final boolean HAS_EARLY_RENDER_LOOP; + private static final boolean IS_LWJGL2; + + static { + boolean hasEarlyRenderLoop = false; + boolean isLwjgl2 = false; + + // First check if starac's EarlyRenderLoop exists (preferred for LWJGL3) + try { + Class.forName("org.lwjgl.opengl.EarlyRenderLoop"); + hasEarlyRenderLoop = true; + } catch (ClassNotFoundException e) { + // Not available + } + + // Check if this is LWJGL2 (has Drawable/SharedDrawable) + if (!hasEarlyRenderLoop) { + try { + Class.forName("org.lwjgl.opengl.Drawable"); + Class.forName("org.lwjgl.opengl.SharedDrawable"); + Class displayClass = Class.forName("org.lwjgl.opengl.Display"); + displayClass.getMethod("getDrawable"); + isLwjgl2 = true; + } catch (ClassNotFoundException | NoSuchMethodException e) { + // Not LWJGL2 + } + } + + HAS_EARLY_RENDER_LOOP = hasEarlyRenderLoop; + IS_LWJGL2 = isLwjgl2; + } + + private LWJGLHelper() {} + + /** + * @return true if starac's EarlyRenderLoop is available + */ + public static boolean hasEarlyRenderLoop() { + return HAS_EARLY_RENDER_LOOP; + } + + /** + * @return true if LWJGL2's SharedDrawable is available + */ + public static boolean isLWJGL2() { + return IS_LWJGL2; + } + + /** + * Runs an early render loop using starac's EarlyRenderLoop. + * This runs on the main thread with proper event handling. + * + * @param shouldContinue Returns true while the loop should keep running + * @param render Called each frame to perform rendering + */ + public static void runEarlyRenderLoop(BooleanSupplier shouldContinue, Runnable render) throws Exception { + if (!HAS_EARLY_RENDER_LOOP) { + throw new IllegalStateException("EarlyRenderLoop not available"); + } + + Class earlyRenderLoopClass = Class.forName("org.lwjgl.opengl.EarlyRenderLoop"); + Method runLoop = earlyRenderLoopClass.getMethod("runLoop", BooleanSupplier.class, Runnable.class); + runLoop.invoke(null, shouldContinue, render); + } + + /** + * Creates a SharedDrawable for LWJGL2 threaded context sharing. + */ + public static Object createSharedDrawable() throws Exception { + if (!IS_LWJGL2) { + throw new IllegalStateException("SharedDrawable not available (not LWJGL2)"); + } + + Class displayClass = Class.forName("org.lwjgl.opengl.Display"); + Class sharedDrawableClass = Class.forName("org.lwjgl.opengl.SharedDrawable"); + Class drawableClass = Class.forName("org.lwjgl.opengl.Drawable"); + + Method getDrawable = displayClass.getMethod("getDrawable"); + Object drawable = getDrawable.invoke(null); + + return sharedDrawableClass.getConstructor(drawableClass).newInstance(drawable); + } + + /** + * Makes the drawable current in the current thread (LWJGL2 only). + */ + public static void makeCurrent(Object drawable) throws Exception { + if (drawable == null) return; + + Class drawableClass = Class.forName("org.lwjgl.opengl.Drawable"); + Method makeCurrent = drawableClass.getMethod("makeCurrent"); + makeCurrent.invoke(drawable); + } + + /** + * Releases the context from the current thread (LWJGL2 only). + */ + public static void releaseContext(Object drawable) throws Exception { + if (drawable == null) return; + + Class drawableClass = Class.forName("org.lwjgl.opengl.Drawable"); + Method releaseContext = drawableClass.getMethod("releaseContext"); + releaseContext.invoke(drawable); + } + + /** + * Calls Display.update() for LWJGL2. + */ + public static void displayUpdate() throws Exception { + Class displayClass = Class.forName("org.lwjgl.opengl.Display"); + Method update = displayClass.getMethod("update"); + update.invoke(null); + } +} diff --git a/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/ReloadScreen.java b/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/ReloadScreen.java index 079b9ba26..6b90c1ad7 100644 --- a/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/ReloadScreen.java +++ b/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/ReloadScreen.java @@ -55,6 +55,9 @@ class ReloadScreen extends Screen { private long GLOBAL_FADE_OUT = 1000; private long RELOAD_START = STAGE_0_START + STAGE_0_FADE_IN; private long EXCEPTION_TRANSFORM = 500; + private static final long WRAP_UP_DURATION = 100; // 100ms wrap-up period after loading + private boolean inWrapUp = false; + private long wrapUpStart = 0; private final Screen parent; private final Runnable done; @@ -106,6 +109,15 @@ class ReloadScreen extends Screen { RELOAD_START = EXCEPTION_TRANSFORM = 1; } + else if (ReloadScreenManager.isUsingEarlyRenderLoop()) { + // Faster animations for single-threaded LWJGL3 mode + BACKGROUND_FADE_IN = 250; + STAGE_0_START = BACKGROUND_START + BACKGROUND_FADE_IN; + STAGE_0_FADE_IN = 500; + GLOBAL_FADE_OUT = 300; + RELOAD_START = STAGE_0_START + STAGE_0_FADE_IN; + EXCEPTION_TRANSFORM = 200; + } else { BACKGROUND_FADE_IN = 1000; STAGE_0_START = BACKGROUND_START + BACKGROUND_FADE_IN; @@ -368,7 +380,42 @@ public void render(int mouseX, int mouseY, float delta) { if (partial) currentTime = lastRender; else lastRender = currentTime; val locationsSize = ReloadScreenManager.LOCATIONS.size(); - if (!exceptionThrown && !finished && !(scrollProgress + .1 < locationsSize) && !(progress + .1 < 1) && ReloadScreenManager.isReloadComplete()) { + + // Check if we should enter wrap-up mode (loading done, EarlyRenderLoop mode) + if (!exceptionThrown && !finished && !inWrapUp && ReloadScreenManager.isReloadComplete()) { + if (ReloadScreenManager.isUsingEarlyRenderLoop()) { + // Enter wrap-up mode - must complete before finishing + inWrapUp = true; + wrapUpStart = currentTime; + } + } + + // During wrap-up, accelerate animations to catch up + float progressLerp = 0.05F; + float scrollLerp = 0.05F; + if (inWrapUp) { + // Speed up lerping during wrap-up + progressLerp = 0.4F; + scrollLerp = 0.4F; + + // Wrap-up MUST complete its full duration before finishing + val wrapUpElapsed = currentTime - wrapUpStart; + if (wrapUpElapsed >= WRAP_UP_DURATION) { + try { + ReloadScreenManager.getCurrentReload().ifPresent(ResourceReload::throwException); + finished = true; + fadeOutStart = currentTime; + inWrapUp = false; + } catch (CompletionException e) { + exceptionThrown = true; + exceptionStart = currentTime; + exception = e; + inWrapUp = false; + LOGGER.error("An exception occurred during resource loading", e); + } + } + } else if (!exceptionThrown && !finished && !(scrollProgress + .1 < locationsSize) && !(progress + .1 < 1) && ReloadScreenManager.isReloadComplete()) { + // Original logic for non-EarlyRenderLoop mode try { ReloadScreenManager.getCurrentReload().ifPresent(ResourceReload::throwException); finished = true; @@ -380,10 +427,11 @@ public void render(int mouseX, int mouseY, float delta) { LOGGER.error("An exception occurred during resource loading", e); } } + if (!partial) { Optional reload; - progress = Floats.constrainToRange(progress * .95F + (isReloadStarted() && (reload = ReloadScreenManager.getCurrentReload()).isPresent() ? reload.get().getProgress() : 0) * .05F, 0, 1); - scrollProgress = Floats.constrainToRange(scrollProgress * .95F + locationsSize * .05F, 0, locationsSize); + progress = Floats.constrainToRange(progress * (1 - progressLerp) + (isReloadStarted() && (reload = ReloadScreenManager.getCurrentReload()).isPresent() ? reload.get().getProgress() : 0) * progressLerp, 0, 1); + scrollProgress = Floats.constrainToRange(scrollProgress * (1 - scrollLerp) + locationsSize * scrollLerp, 0, locationsSize); } if ((finished ? currentTime <= fadeOutStart + GLOBAL_FADE_OUT : currentTime < BACKGROUND_START + BACKGROUND_FADE_IN) && parent != null) parent.render(mouseX, mouseY, delta); diff --git a/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/ReloadScreenManager.java b/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/ReloadScreenManager.java index 9902cacb6..7c83aa7a5 100644 --- a/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/ReloadScreenManager.java +++ b/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/api/client/resource/ReloadScreenManager.java @@ -18,12 +18,8 @@ import net.modificationstation.stationapi.mixin.resourceloader.client.MinecraftAccessor; import net.modificationstation.stationapi.mixin.resourceloader.client.TessellatorAccessor; import org.jetbrains.annotations.NotNull; -import org.lwjgl.LWJGLException; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; -import org.lwjgl.opengl.Display; -import org.lwjgl.opengl.Drawable; -import org.lwjgl.opengl.SharedDrawable; import java.util.List; import java.util.Optional; @@ -31,6 +27,7 @@ import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean; +import static net.modificationstation.stationapi.api.StationAPI.LOGGER; import static org.lwjgl.opengl.GL11.*; public class ReloadScreenManager { @@ -53,15 +50,30 @@ public static void pushLocation(ResourceReloader resourceReloader, String format pushLocation(ProfileResult.getHumanReadableName(formatString.formatted(location.replaceAll("^root", resourceReloader.getName())))); } - public static void openEarly() throws LWJGLException { + public static void openEarly() throws Exception { ReloadScreenManagerImpl.isMinecraftDone = false; applicationExecutor = ReloadScreenApplicationExecutor.INSTANCE; currentReload = Optional.of(new CompositeResourceReload()); //noinspection deprecation final Minecraft minecraft = (Minecraft) FabricLoader.getInstance().getGameInstance(); - final Drawable drawable = new SharedDrawable(Display.getDrawable()); - thread = Optional.of(new Thread(() -> ReloadScreenManager.onStartup(minecraft, drawable))); - thread.ifPresent(Thread::start); + + // Use starac's EarlyRenderLoop if available (LWJGL3 with proper event handling) + if (LWJGLHelper.hasEarlyRenderLoop()) { + LOGGER.info("Using starac EarlyRenderLoop for loading screen"); + onStartupWithEarlyRenderLoop(minecraft); + return; + } + + // Fall back to LWJGL2 threaded approach + if (LWJGLHelper.isLWJGL2()) { + final Object drawable = LWJGLHelper.createSharedDrawable(); + thread = Optional.of(new Thread(() -> onStartupThreaded(minecraft, drawable))); + thread.ifPresent(Thread::start); + return; + } + + // No compatible approach available - skip early loading screen + LOGGER.warn("No compatible early loading screen implementation available"); } public static void open() { @@ -101,17 +113,110 @@ static void onFinish() { currentReload = Optional.empty(); } - private static void onStartup( + // For single-threaded mode (starac): flag and stored state + private static boolean usingEarlyRenderLoop = false; + private static ReloadScreen earlyRenderLoopScreen = null; + private static AtomicBoolean earlyRenderLoopDone = null; + + /** + * Sets up state for single-threaded early render loop. + * Returns immediately - actual render loop runs in runEarlyRenderLoop(). + */ + private static void onStartupWithEarlyRenderLoop(final Minecraft minecraft) { + usingEarlyRenderLoop = true; + earlyRenderLoopDone = new AtomicBoolean(false); + earlyRenderLoopScreen = new ReloadScreen( + minecraft.currentScreen, + () -> earlyRenderLoopDone.set(true), + ReloadScreenTessellatorHolder.reloadScreenTessellator = TessellatorAccessor.stationapi_create(48) + ); + val screenScaler = new ScreenScaler(minecraft.options, minecraft.displayWidth, minecraft.displayHeight); + earlyRenderLoopScreen.init(minecraft, screenScaler.getScaledWidth(), screenScaler.getScaledHeight()); + earlyRenderLoopScreen.setTextRenderer(new TextRenderer(minecraft.options, "/font/default.png", minecraft.textureManager)); + } + + /** + * @return true if using single-threaded EarlyRenderLoop mode + */ + public static boolean isUsingEarlyRenderLoop() { + return usingEarlyRenderLoop; + } + + /** + * Runs the early render loop (single-threaded mode). + * Processes executor tasks while rendering until reload is complete. + */ + public static void runEarlyRenderLoop() { + if (!usingEarlyRenderLoop || earlyRenderLoopScreen == null) return; + + //noinspection deprecation + val minecraft = (Minecraft) FabricLoader.getInstance().getGameInstance(); + val screenScaler = new ScreenScaler(minecraft.options, minecraft.displayWidth, minecraft.displayHeight); + val width = screenScaler.getScaledWidth(); + val height = screenScaler.getScaledHeight(); + val timer = ((MinecraftAccessor) minecraft).getTimer(); + val screen = earlyRenderLoopScreen; + + // Set up GL state + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0.0, screenScaler.rawScaledWidth, screenScaler.rawScaledHeight, 0.0, 1000.0, 3000.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0f, 0.0f, -2000.0f); + glViewport(0, 0, minecraft.displayWidth, minecraft.displayHeight); + glClearColor(0.0f, 0.0f, 0.0f, 0.0f); + glDisable(GL_LIGHTING); + glEnable(GL_TEXTURE_2D); + glDisable(GL_FOG); + + try { + LWJGLHelper.runEarlyRenderLoop( + () -> !earlyRenderLoopDone.get(), + () -> { + // Process ALL pending executor tasks each frame + Runnable task; + while ((task = ReloadScreenApplicationExecutor.INSTANCE.poll()) != null) { + task.run(); + } + + val f = timer.partialTick; + timer.advance(); + timer.partialTick = f; + val mouseX = Mouse.getX() * width / minecraft.displayWidth; + val mouseY = height - Mouse.getY() * height / minecraft.displayHeight - 1; + screen.render(mouseX, mouseY, timer.partialTick); + } + ); + } catch (Exception e) { + throw new RuntimeException(e); + } + + // Clean up + glDisable(GL_LIGHTING); + glDisable(GL_FOG); + glEnable(GL_ALPHA_TEST); + glAlphaFunc(GL_GREATER, 0.1f); + usingEarlyRenderLoop = false; + earlyRenderLoopScreen = null; + earlyRenderLoopDone = null; + } + + /** + * Threaded approach for LWJGL2 using SharedDrawable. + */ + private static void onStartupThreaded( final Minecraft minecraft, - final Drawable drawable + final Object drawable ) { try { - drawable.makeCurrent(); - } catch (LWJGLException e) { + LWJGLHelper.makeCurrent(drawable); + } catch (Exception e) { throw new RuntimeException(e); } val done = new AtomicBoolean(); - val reloadScreen = new ReloadScreen( + val localReloadScreen = new ReloadScreen( minecraft.currentScreen, () -> done.set(true), ReloadScreenTessellatorHolder.reloadScreenTessellator = TessellatorAccessor.stationapi_create(48) @@ -119,8 +224,8 @@ private static void onStartup( val screenScaler = new ScreenScaler(minecraft.options, minecraft.displayWidth, minecraft.displayHeight); val width = screenScaler.getScaledWidth(); val height = screenScaler.getScaledHeight(); - reloadScreen.init(minecraft, width, height); - reloadScreen.setTextRenderer(new TextRenderer(minecraft.options, "/font/default.png", minecraft.textureManager)); + localReloadScreen.init(minecraft, width, height); + localReloadScreen.setTextRenderer(new TextRenderer(minecraft.options, "/font/default.png", minecraft.textureManager)); val timer = ((MinecraftAccessor) minecraft).getTimer(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); @@ -142,16 +247,20 @@ private static void onStartup( timer.partialTick = f; val mouseX = Mouse.getX() * width / minecraft.displayWidth; val mouseY = height - Mouse.getY() * height / minecraft.displayHeight - 1; - reloadScreen.render(mouseX, mouseY, timer.partialTick); - Display.update(); + localReloadScreen.render(mouseX, mouseY, timer.partialTick); + try { + LWJGLHelper.displayUpdate(); + } catch (Exception e) { + throw new RuntimeException(e); + } } glDisable(GL_LIGHTING); glDisable(GL_FOG); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.1f); try { - drawable.releaseContext(); - } catch (LWJGLException e) { + LWJGLHelper.releaseContext(drawable); + } catch (Exception e) { throw new RuntimeException(e); } thread = Optional.empty(); diff --git a/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/mixin/resourceloader/client/MinecraftMixin.java b/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/mixin/resourceloader/client/MinecraftMixin.java index f2f4dde16..a739282cf 100644 --- a/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/mixin/resourceloader/client/MinecraftMixin.java +++ b/station-resource-loader-v0/src/main/java/net/modificationstation/stationapi/mixin/resourceloader/client/MinecraftMixin.java @@ -52,7 +52,7 @@ private void stationapi_location_textureManager(CallbackInfo ci) { shift = At.Shift.AFTER ) ) - private void stationapi_textureManagerInit(CallbackInfo ci) throws LWJGLException { + private void stationapi_textureManagerInit(CallbackInfo ci) throws Exception { ReloadScreenManager.openEarly(); StationAPI.EVENT_BUS.post( AssetsResourceReloaderRegisterEvent.builder() @@ -111,6 +111,14 @@ private void stationapi_location_stats(CallbackInfo ci) { ) private void stationapi_applyReloadsAndWait(CallbackInfo ci) { ReloadScreenManagerImpl.isMinecraftDone = true; + + // Single-threaded mode (starac/LWJGL3): run render loop that processes tasks + if (ReloadScreenManager.isUsingEarlyRenderLoop()) { + ReloadScreenManager.runEarlyRenderLoop(); + return; + } + + // Threaded mode (LWJGL2): process tasks and wait for render thread while (!ReloadScreenManager.isReloadComplete()) { val command = ReloadScreenApplicationExecutor.INSTANCE.poll(); if (command != null) command.run(); diff --git a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplatePressurePlateBlock.java b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplatePressurePlateBlock.java index d49c90639..3fa392b38 100644 --- a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplatePressurePlateBlock.java +++ b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/block/TemplatePressurePlateBlock.java @@ -1,6 +1,5 @@ package net.modificationstation.stationapi.api.template.block; -import net.minecraft.block.PressurePlateActivationRule; import net.minecraft.block.PressurePlateBlock; import net.minecraft.block.material.Material; import net.modificationstation.stationapi.api.util.Identifier; diff --git a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateAxeItem.java b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateAxeItem.java index af2655100..44c11cc67 100644 --- a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateAxeItem.java +++ b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateAxeItem.java @@ -1,7 +1,6 @@ package net.modificationstation.stationapi.api.template.item; import net.minecraft.item.AxeItem; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.util.Identifier; public class TemplateAxeItem extends AxeItem implements ItemTemplate { diff --git a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateFlintAndSteelItem.java b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateFlintAndSteelItem.java index 66c633fd0..4301d10c7 100644 --- a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateFlintAndSteelItem.java +++ b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateFlintAndSteelItem.java @@ -1,9 +1,9 @@ package net.modificationstation.stationapi.api.template.item; -import net.minecraft.item.FlintAndSteel; +import net.minecraft.item.FlintAndSteelItem; import net.modificationstation.stationapi.api.util.Identifier; -public class TemplateFlintAndSteelItem extends FlintAndSteel implements ItemTemplate { +public class TemplateFlintAndSteelItem extends FlintAndSteelItem implements ItemTemplate { public TemplateFlintAndSteelItem(Identifier identifier) { this(ItemTemplate.getNextId()); ItemTemplate.onConstructor(this, identifier); diff --git a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateHoeItem.java b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateHoeItem.java index b428f09d0..31244f32a 100644 --- a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateHoeItem.java +++ b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateHoeItem.java @@ -1,7 +1,6 @@ package net.modificationstation.stationapi.api.template.item; import net.minecraft.item.HoeItem; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.util.Identifier; public class TemplateHoeItem extends HoeItem implements ItemTemplate { diff --git a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplatePickaxeItem.java b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplatePickaxeItem.java index c7d221367..f854eb838 100644 --- a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplatePickaxeItem.java +++ b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplatePickaxeItem.java @@ -1,7 +1,6 @@ package net.modificationstation.stationapi.api.template.item; import net.minecraft.item.PickaxeItem; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.util.Identifier; public class TemplatePickaxeItem extends PickaxeItem implements ItemTemplate { diff --git a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateShovelItem.java b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateShovelItem.java index 0cb1008a1..e90d3ea34 100644 --- a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateShovelItem.java +++ b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateShovelItem.java @@ -1,7 +1,6 @@ package net.modificationstation.stationapi.api.template.item; import net.minecraft.item.ShovelItem; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.util.Identifier; public class TemplateShovelItem extends ShovelItem implements ItemTemplate { diff --git a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateSwordItem.java b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateSwordItem.java index 231f7b58f..f5e089eb3 100644 --- a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateSwordItem.java +++ b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateSwordItem.java @@ -1,7 +1,6 @@ package net.modificationstation.stationapi.api.template.item; import net.minecraft.item.SwordItem; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.util.Identifier; public class TemplateSwordItem extends SwordItem implements ItemTemplate { diff --git a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateToolItem.java b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateToolItem.java index 6c6833954..f8ec8060a 100644 --- a/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateToolItem.java +++ b/station-templates-v0/src/main/java/net/modificationstation/stationapi/api/template/item/TemplateToolItem.java @@ -2,7 +2,6 @@ import net.minecraft.block.Block; import net.minecraft.item.ToolItem; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.util.Identifier; public class TemplateToolItem extends ToolItem implements ItemTemplate { diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationHoeItem.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationHoeItem.java index 6b869e821..967cace16 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationHoeItem.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationHoeItem.java @@ -1,8 +1,8 @@ package net.modificationstation.stationapi.api.item.tool; import net.minecraft.block.Block; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.tag.TagKey; import net.modificationstation.stationapi.api.util.Util; @@ -18,7 +18,7 @@ default TagKey getEffectiveBlocks(ItemStack stack) { } @Override - default ToolMaterial getMaterial(ItemStack stack) { + default Item.ToolMaterial getMaterial(ItemStack stack) { return Util.assertImpl(); } } diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationShearsItem.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationShearsItem.java index ff628e69e..d4fe3f96f 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationShearsItem.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationShearsItem.java @@ -1,8 +1,8 @@ package net.modificationstation.stationapi.api.item.tool; import net.minecraft.block.Block; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.tag.TagKey; import net.modificationstation.stationapi.api.util.Util; @@ -18,7 +18,7 @@ default TagKey getEffectiveBlocks(ItemStack stack) { } @Override - default ToolMaterial getMaterial(ItemStack stack) { + default Item.ToolMaterial getMaterial(ItemStack stack) { return Util.assertImpl(); } } diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationSwordItem.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationSwordItem.java index 2cde051bf..d68701afe 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationSwordItem.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationSwordItem.java @@ -1,8 +1,8 @@ package net.modificationstation.stationapi.api.item.tool; import net.minecraft.block.Block; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.tag.TagKey; import net.modificationstation.stationapi.api.util.Util; @@ -18,7 +18,7 @@ default TagKey getEffectiveBlocks(ItemStack stack) { } @Override - default ToolMaterial getMaterial(ItemStack stack) { + default Item.ToolMaterial getMaterial(ItemStack stack) { return Util.assertImpl(); } } diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationTool.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationTool.java index efc82b5a3..90dcdfdcc 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationTool.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationTool.java @@ -1,8 +1,8 @@ package net.modificationstation.stationapi.api.item.tool; import net.minecraft.block.Block; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.tag.TagKey; /** @@ -14,5 +14,5 @@ public interface StationTool { TagKey getEffectiveBlocks(ItemStack stack); - ToolMaterial getMaterial(ItemStack stack); + Item.ToolMaterial getMaterial(ItemStack stack); } diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationToolItem.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationToolItem.java index 9cab5054d..b55d93997 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationToolItem.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationToolItem.java @@ -1,8 +1,8 @@ package net.modificationstation.stationapi.api.item.tool; import net.minecraft.block.Block; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.tag.TagKey; import net.modificationstation.stationapi.api.util.Util; @@ -18,7 +18,7 @@ default TagKey getEffectiveBlocks(ItemStack stack) { } @Override - default ToolMaterial getMaterial(ItemStack stack) { + default Item.ToolMaterial getMaterial(ItemStack stack) { return Util.assertImpl(); } } diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationToolMaterial.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationToolMaterial.java index 61a32d7e0..eb8db85b6 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationToolMaterial.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/StationToolMaterial.java @@ -1,10 +1,10 @@ package net.modificationstation.stationapi.api.item.tool; -import net.minecraft.item.ToolMaterial; +import net.minecraft.item.Item; import net.modificationstation.stationapi.api.util.Util; public interface StationToolMaterial { - default ToolMaterial toolLevel(ToolLevel toolLevel) { + default Item.ToolMaterial toolLevel(ToolLevel toolLevel) { return Util.assertImpl(); } diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/ToolLevel.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/ToolLevel.java index 756500df3..ecd157dbc 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/ToolLevel.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/ToolLevel.java @@ -5,7 +5,7 @@ import com.google.common.graph.MutableGraph; import it.unimi.dsi.fastutil.objects.Reference2BooleanMap; import it.unimi.dsi.fastutil.objects.Reference2BooleanOpenHashMap; -import net.minecraft.item.ToolMaterial; +import net.minecraft.item.Item; import net.modificationstation.stationapi.api.block.BlockState; import net.modificationstation.stationapi.api.registry.BlockRegistry; import net.modificationstation.stationapi.api.tag.TagKey; @@ -66,9 +66,9 @@ protected record TestContext( list.add(diamond); GRAPH.putEdge(stone, iron); GRAPH.putEdge(iron, diamond); - ToolMaterial.STONE.toolLevel(stone); - ToolMaterial.IRON.toolLevel(iron); - ToolMaterial.DIAMOND.toolLevel(diamond); + Item.ToolMaterial toolMaterial = Item.ToolMaterial.STONE.toolLevel(stone); + Item.ToolMaterial.IRON.toolLevel(iron); + Item.ToolMaterial.DIAMOND.toolLevel(diamond); }); public static ToolLevel getNumeric(int level) { diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/ToolMaterialFactory.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/ToolMaterialFactory.java index 73701ab88..d1277b391 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/ToolMaterialFactory.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/api/item/tool/ToolMaterialFactory.java @@ -1,12 +1,12 @@ package net.modificationstation.stationapi.api.item.tool; -import net.minecraft.item.ToolMaterial; +import net.minecraft.item.Item; import net.modificationstation.stationapi.mixin.tools.ToolMaterialAccessor; public class ToolMaterialFactory { - private static int nextId = ToolMaterial.values().length; + private static int nextId = Item.ToolMaterial.values().length; - public static ToolMaterial create(String materialName, int miningLevel, int durability, float miningSpeed, int attackDamage) { + public static Item.ToolMaterial create(String materialName, int miningLevel, int durability, float miningSpeed, int attackDamage) { return ToolMaterialAccessor.stationapi_create(materialName, nextId++, miningLevel, durability, miningSpeed, attackDamage); } } diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/AxeItemMixin.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/AxeItemMixin.java index 1f0c8cd7c..c392e247d 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/AxeItemMixin.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/AxeItemMixin.java @@ -3,7 +3,6 @@ import net.minecraft.block.Block; import net.minecraft.item.AxeItem; import net.minecraft.item.ToolItem; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.registry.BlockRegistry; import net.modificationstation.stationapi.api.tag.TagKey; import net.modificationstation.stationapi.api.util.Identifier; diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/HoeItemMixin.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/HoeItemMixin.java index 13582b068..ecd4ee728 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/HoeItemMixin.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/HoeItemMixin.java @@ -5,7 +5,6 @@ import net.minecraft.item.HoeItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolMaterial; import net.minecraft.util.math.BlockPos; import net.minecraft.world.BlockView; import net.modificationstation.stationapi.api.block.BlockState; diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/PickaxeItemMixin.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/PickaxeItemMixin.java index c447f5312..86f90517a 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/PickaxeItemMixin.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/PickaxeItemMixin.java @@ -3,7 +3,6 @@ import net.minecraft.block.Block; import net.minecraft.item.PickaxeItem; import net.minecraft.item.ToolItem; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.registry.BlockRegistry; import net.modificationstation.stationapi.api.tag.TagKey; import net.modificationstation.stationapi.api.util.Identifier; diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ShearsItemMixin.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ShearsItemMixin.java index 2804e8d10..1a55ffd79 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ShearsItemMixin.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ShearsItemMixin.java @@ -5,7 +5,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ShearsItem; -import net.minecraft.item.ToolMaterial; import net.minecraft.util.math.BlockPos; import net.minecraft.world.BlockView; import net.modificationstation.stationapi.api.block.BlockState; diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ShovelItemMixin.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ShovelItemMixin.java index dea5ea672..a233ba924 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ShovelItemMixin.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ShovelItemMixin.java @@ -3,7 +3,6 @@ import net.minecraft.block.Block; import net.minecraft.item.ShovelItem; import net.minecraft.item.ToolItem; -import net.minecraft.item.ToolMaterial; import net.modificationstation.stationapi.api.registry.BlockRegistry; import net.modificationstation.stationapi.api.tag.TagKey; import net.modificationstation.stationapi.api.util.Identifier; diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/SwordItemMixin.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/SwordItemMixin.java index e6ef693b2..697d23de3 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/SwordItemMixin.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/SwordItemMixin.java @@ -5,7 +5,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.SwordItem; -import net.minecraft.item.ToolMaterial; import net.minecraft.util.math.BlockPos; import net.minecraft.world.BlockView; import net.modificationstation.stationapi.api.block.BlockState; diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ToolItemMixin.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ToolItemMixin.java index 3c8cff61a..dcc730297 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ToolItemMixin.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ToolItemMixin.java @@ -5,7 +5,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ToolItem; -import net.minecraft.item.ToolMaterial; import net.minecraft.util.math.BlockPos; import net.minecraft.world.BlockView; import net.modificationstation.stationapi.api.block.BlockState; diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ToolMaterialAccessor.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ToolMaterialAccessor.java index 3896d4d31..ea512be2d 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ToolMaterialAccessor.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ToolMaterialAccessor.java @@ -1,14 +1,14 @@ package net.modificationstation.stationapi.mixin.tools; -import net.minecraft.item.ToolMaterial; +import net.minecraft.item.Item; import net.modificationstation.stationapi.api.util.Util; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; -@Mixin(ToolMaterial.class) +@Mixin(Item.ToolMaterial.class) public interface ToolMaterialAccessor { @Invoker("") - static ToolMaterial stationapi_create(String materialName, int id, int miningLevel, int itemDurability, float miningSpeed, int attackDamage) { + static Item.ToolMaterial stationapi_create(String materialName, int id, int miningLevel, int itemDurability, float miningSpeed, int attackDamage) { return Util.assertMixin(); } } diff --git a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ToolMaterialMixin.java b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ToolMaterialMixin.java index d18906574..ff98dfd0a 100644 --- a/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ToolMaterialMixin.java +++ b/station-tools-api-v1/src/main/java/net/modificationstation/stationapi/mixin/tools/ToolMaterialMixin.java @@ -1,21 +1,21 @@ package net.modificationstation.stationapi.mixin.tools; -import net.minecraft.item.ToolMaterial; +import net.minecraft.item.Item; import net.modificationstation.stationapi.api.item.tool.StationToolMaterial; import net.modificationstation.stationapi.api.item.tool.ToolLevel; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; -@Mixin(ToolMaterial.class) +@Mixin(Item.ToolMaterial.class) class ToolMaterialMixin implements StationToolMaterial { @Unique private ToolLevel stationapi_toolLevel; @Override @Unique - public ToolMaterial toolLevel(ToolLevel toolLevel) { + public Item.ToolMaterial toolLevel(ToolLevel toolLevel) { stationapi_toolLevel = toolLevel; - return ToolMaterial.class.cast(this); + return Item.ToolMaterial.class.cast(this); } @Override diff --git a/station-tools-api-v1/src/main/resources/fabric.mod.json b/station-tools-api-v1/src/main/resources/fabric.mod.json index 486cd263e..ec09d1ed5 100644 --- a/station-tools-api-v1/src/main/resources/fabric.mod.json +++ b/station-tools-api-v1/src/main/resources/fabric.mod.json @@ -2,7 +2,6 @@ "schemaVersion": 1, "id": "station-tools-api-v1", "version": "${version}", - "name": "Station Tools API (v1)", "description": "Makes tools actually work properly. Also, custom shears!", "authors": [ @@ -13,10 +12,8 @@ "sources": "https://github.com/ModificationStation/StationAPI", "issues": "https://github.com/ModificationStation/StationAPI/issues" }, - "license": "MIT", "icon": "assets/station-tools-api-v1/icon.png", - "environment": "*", "entrypoints": { "stationapi:event_bus": [ @@ -26,28 +23,26 @@ "mixins": [ "station-tools-api-v1.mixins.json" ], - "depends": { "fabricloader": "*", "minecraft": "1.0.0-beta.7.3" }, - "custom": { "modmenu:api": true, "loom:injected_interfaces": { - "net/minecraft/class_126": [ + "net/minecraft/unmapped/C_17309128": [ "net/modificationstation/stationapi/api/item/tool/StationShearsItem" ], - "net/minecraft/class_249": [ + "net/minecraft/unmapped/C_50960081": [ "net/modificationstation/stationapi/api/item/tool/StationHoeItem" ], - "net/minecraft/class_352": [ + "net/minecraft/unmapped/C_64104387": [ "net/modificationstation/stationapi/api/item/tool/StationSwordItem" ], - "net/minecraft/class_428": [ + "net/minecraft/unmapped/C_74597326": [ "net/modificationstation/stationapi/api/item/tool/StationToolMaterial" ], - "net/minecraft/class_632": [ + "net/minecraft/unmapped/C_53672520": [ "net/modificationstation/stationapi/api/item/tool/StationToolItem" ] } diff --git a/station-transitive-access-wideners-v0/src/main/resources/station-transitive-access-wideners-v0.accesswidener b/station-transitive-access-wideners-v0/src/main/resources/station-transitive-access-wideners-v0.accesswidener index 2f5e9fd54..d49a98f44 100644 --- a/station-transitive-access-wideners-v0/src/main/resources/station-transitive-access-wideners-v0.accesswidener +++ b/station-transitive-access-wideners-v0/src/main/resources/station-transitive-access-wideners-v0.accesswidener @@ -12,7 +12,7 @@ transitive-accessible method net/minecraft/nbt/NbtList read (Ljava/io/DataInput; transitive-accessible method net/minecraft/block/Block (ILnet/minecraft/block/material/Material;)V transitive-accessible method net/minecraft/block/Block ignoreMetaUpdates ()Lnet/minecraft/block/Block; transitive-accessible method net/minecraft/block/Block (IILnet/minecraft/block/material/Material;)V -transitive-accessible method net/minecraft/block/Block setSoundGroup (Lnet/minecraft/sound/BlockSoundGroup;)Lnet/minecraft/block/Block; +transitive-accessible method net/minecraft/block/Block setSoundGroup (Lnet/minecraft/block/Block$BlockSoundGroup;)Lnet/minecraft/block/Block; transitive-accessible method net/minecraft/block/Block setOpacity (I)Lnet/minecraft/block/Block; transitive-accessible method net/minecraft/block/Block setLuminance (F)Lnet/minecraft/block/Block; transitive-accessible method net/minecraft/block/Block setResistance (F)Lnet/minecraft/block/Block; @@ -45,7 +45,7 @@ transitive-accessible method net/minecraft/block/LogBlock (I)V transitive-accessible method net/minecraft/block/SpawnerBlock (II)V transitive-accessible method net/minecraft/block/MushroomPlantBlock (II)V transitive-accessible method net/minecraft/block/PlantBlock (II)V -transitive-accessible method net/minecraft/block/PressurePlateBlock (IILnet/minecraft/block/PressurePlateActivationRule;Lnet/minecraft/block/material/Material;)V +transitive-accessible method net/minecraft/block/PressurePlateBlock (IILnet/minecraft/block/PressurePlateBlock$PressurePlateActivationRule;Lnet/minecraft/block/material/Material;)V transitive-accessible method net/minecraft/block/PumpkinBlock (IIZ)V transitive-accessible method net/minecraft/block/RailBlock (IIZ)V transitive-accessible method net/minecraft/block/RepeaterBlock (IZ)V @@ -68,9 +68,9 @@ transitive-accessible method net/minecraft/block/WorkbenchBlock (I)V transitive-accessible method net/minecraft/item/Item (I)V transitive-accessible method net/minecraft/item/Item setHasSubtypes (Z)Lnet/minecraft/item/Item; transitive-accessible method net/minecraft/item/Item setMaxDamage (I)Lnet/minecraft/item/Item; -transitive-accessible method net/minecraft/item/AxeItem (ILnet/minecraft/item/ToolMaterial;)V -transitive-accessible method net/minecraft/item/PickaxeItem (ILnet/minecraft/item/ToolMaterial;)V -transitive-accessible method net/minecraft/item/ToolItem (IILnet/minecraft/item/ToolMaterial;[Lnet/minecraft/block/Block;)V +transitive-accessible method net/minecraft/item/AxeItem (ILnet/minecraft/item/Item$ToolMaterial;)V +transitive-accessible method net/minecraft/item/PickaxeItem (ILnet/minecraft/item/Item$ToolMaterial;)V +transitive-accessible method net/minecraft/item/ToolItem (IILnet/minecraft/item/Item$ToolMaterial;[Lnet/minecraft/block/Block;)V transitive-accessible method net/minecraft/item/MapItem (I)V transitive-accessible method net/minecraft/item/NetworkSyncedItem (I)V transitive-accessible method net/minecraft/item/MusicDiscItem (ILjava/lang/String;)V diff --git a/station-vanilla-fix-v0/build.gradle.kts b/station-vanilla-fix-v0/build.gradle.kts index 086f9e285..cf05d2920 100644 --- a/station-vanilla-fix-v0/build.gradle.kts +++ b/station-vanilla-fix-v0/build.gradle.kts @@ -1,6 +1,5 @@ -import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies import net.modificationstation.stationapi.gradle.SubprojectHelpers.getSubprojectVersion - +import net.modificationstation.stationapi.gradle.SubprojectHelpers.addModuleDependencies base.archivesName.set("station-vanilla-fix-v0") version = getSubprojectVersion(project, "1.0.0") diff --git a/station-vanilla-fix-v0/src/main/java/net/modificationstation/stationapi/impl/vanillafix/client/gui/screen/EditWorldScreenImpl.java b/station-vanilla-fix-v0/src/main/java/net/modificationstation/stationapi/impl/vanillafix/client/gui/screen/EditWorldScreenImpl.java index cac07514d..6f8fcfd12 100644 --- a/station-vanilla-fix-v0/src/main/java/net/modificationstation/stationapi/impl/vanillafix/client/gui/screen/EditWorldScreenImpl.java +++ b/station-vanilla-fix-v0/src/main/java/net/modificationstation/stationapi/impl/vanillafix/client/gui/screen/EditWorldScreenImpl.java @@ -21,6 +21,7 @@ import net.modificationstation.stationapi.impl.world.storage.FlattenedWorldStorage; import net.modificationstation.stationapi.mixin.vanillafix.client.ScreenAccessor; +import java.io.IOException; import java.lang.invoke.MethodHandles; import static net.mine_diver.unsafeevents.listener.ListenerPriority.LOW; @@ -52,7 +53,11 @@ private static void registerConversionButton(EditWorldScreenEvent.ScrollableButt FlattenedWorldStorage worldStorage = (FlattenedWorldStorage) mc.getWorldStorageSource(); mc.progressRenderer.progressStart("Converting World to " + worldStorage.getPreviousWorldFormat()); mc.progressRenderer.progressStage("This may take a while :)"); - worldStorage.convertWorld(screen.worldData.getSaveName(), (type, compound) -> (NbtCompound) VanillaDataFixerImpl.DATA_DAMAGER.get().update(type, new Dynamic<>(NbtOps.INSTANCE, compound).remove(DataFixers.DATA_VERSIONS), VanillaDataFixerImpl.HIGHEST_VERSION - NbtHelper.getDataVersions(compound).getInt(NAMESPACE.toString()), VanillaDataFixerImpl.VANILLA_VERSION).getValue(), mc.progressRenderer); + try { + worldStorage.convertWorld(screen.worldData.getSaveName(), (type, compound) -> (NbtCompound) VanillaDataFixerImpl.DATA_DAMAGER.get().update(type, new Dynamic<>(NbtOps.INSTANCE, compound).remove(DataFixers.DATA_VERSIONS), VanillaDataFixerImpl.HIGHEST_VERSION - NbtHelper.getDataVersions(compound).getInt(NAMESPACE.toString()), VanillaDataFixerImpl.VANILLA_VERSION).getValue(), mc.progressRenderer); + } catch (IOException e) { + throw new RuntimeException(e); + } mc.setScreen(screen); }, WorldConversionWarning.TO_MCREGION_EXPLANATION_KEY, WorldConversionWarning.CONVERT_KEY)) )); diff --git a/station-world-events-v0/src/main/java/net/modificationstation/stationapi/mixin/world/ServerChunkCacheMixin.java b/station-world-events-v0/src/main/java/net/modificationstation/stationapi/mixin/world/ServerChunkCacheMixin.java index 9f68033bd..30e89daf4 100644 --- a/station-world-events-v0/src/main/java/net/modificationstation/stationapi/mixin/world/ServerChunkCacheMixin.java +++ b/station-world-events-v0/src/main/java/net/modificationstation/stationapi/mixin/world/ServerChunkCacheMixin.java @@ -45,7 +45,7 @@ private void stationapi_onPopulate(ChunkSource worldSource, int chunkX, int chun WorldGenEvent.ChunkDecoration.builder() .world(world) .worldSource(this.generator) - .biome(world.method_1781().getBiome(blockX + 16, blockZ + 16)) + .biome(world.getBiomeSource().getBiome(blockX + 16, blockZ + 16)) .x(blockX).z(blockZ) .random(modRandom) .build() diff --git a/station-world-events-v0/src/main/java/net/modificationstation/stationapi/mixin/world/client/ChunkCacheMixin.java b/station-world-events-v0/src/main/java/net/modificationstation/stationapi/mixin/world/client/ChunkCacheMixin.java index aaf814003..643cc2ade 100644 --- a/station-world-events-v0/src/main/java/net/modificationstation/stationapi/mixin/world/client/ChunkCacheMixin.java +++ b/station-world-events-v0/src/main/java/net/modificationstation/stationapi/mixin/world/client/ChunkCacheMixin.java @@ -45,7 +45,7 @@ private void stationapi_onPopulate(ChunkSource worldSource, int chunkX, int chun WorldGenEvent.ChunkDecoration.builder() .world(world) .worldSource(this.generator) - .biome(world.method_1781().getBiome(blockX + 16, blockZ + 16)) + .biome(world.getBiomeSource().getBiome(blockX + 16, blockZ + 16)) .x(blockX).z(blockZ) .random(modRandom) .build() diff --git a/station-world-events-v0/src/main/java/net/modificationstation/stationapi/mixin/world/server/class_79Mixin.java b/station-world-events-v0/src/main/java/net/modificationstation/stationapi/mixin/world/server/class_79Mixin.java index f2a9fffbb..63b3131e8 100644 --- a/station-world-events-v0/src/main/java/net/modificationstation/stationapi/mixin/world/server/class_79Mixin.java +++ b/station-world-events-v0/src/main/java/net/modificationstation/stationapi/mixin/world/server/class_79Mixin.java @@ -42,7 +42,7 @@ private void stationapi_onPopulate(ChunkSource worldSource, int chunkX, int chun WorldGenEvent.ChunkDecoration.builder() .world(world) .worldSource(generator) - .biome(world.method_1781().getBiome(blockX + 16, blockZ + 16)) + .biome(world.getBiomeSource().getBiome(blockX + 16, blockZ + 16)) .x(blockX).z(blockZ) .random(modRandom) .build() diff --git a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/worldgen/biome/BiomeBuilder.java b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/worldgen/biome/BiomeBuilder.java index 4a8005f27..d07512480 100644 --- a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/worldgen/biome/BiomeBuilder.java +++ b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/worldgen/biome/BiomeBuilder.java @@ -3,6 +3,7 @@ import it.unimi.dsi.fastutil.objects.Reference2IntMap; import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap; import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.feature.Feature; import net.modificationstation.stationapi.api.worldgen.feature.DefaultFeatures; @@ -14,9 +15,9 @@ public class BiomeBuilder { private static final ThreadLocal INSTANCES = ThreadLocal.withInitial(BiomeBuilder::new); - private final Reference2IntMap> hostileEntities = new Reference2IntOpenHashMap<>(32); - private final Reference2IntMap> passiveEntities = new Reference2IntOpenHashMap<>(32); - private final Reference2IntMap> waterEntities = new Reference2IntOpenHashMap<>(32); + private final Reference2IntMap> hostileEntities = new Reference2IntOpenHashMap<>(32); + private final Reference2IntMap> passiveEntities = new Reference2IntOpenHashMap<>(32); + private final Reference2IntMap> waterEntities = new Reference2IntOpenHashMap<>(32); private final List features = new ArrayList<>(); private final List rules = new ArrayList<>(); private BiomeColorProvider grassColor; @@ -127,7 +128,7 @@ public BiomeBuilder snow(boolean snow) { * Add hostile entity (mobs/monsters) to spawn list. * Larger rarity value = more frequent entity spawn compared to other entities */ - public BiomeBuilder hostileEntity(Class entity, int rarity) { + public BiomeBuilder hostileEntity(Class entity, int rarity) { hostileEntities.put(entity, rarity); return this; } @@ -136,7 +137,7 @@ public BiomeBuilder hostileEntity(Class entity, int rarity) { * Add passive entity (animals) to spawn list. * Larger rarity value = more frequent entity spawn compared to other entities */ - public BiomeBuilder passiveEntity(Class entity, int rarity) { + public BiomeBuilder passiveEntity(Class entity, int rarity) { passiveEntities.put(entity, rarity); return this; } @@ -145,7 +146,7 @@ public BiomeBuilder passiveEntity(Class entity, int rarity) { * Add water entity (water animals) to spawn list. * Larger rarity value = more frequent entity spawn compared to other entities */ - public BiomeBuilder waterEntity(Class entity, int rarity) { + public BiomeBuilder waterEntity(Class entity, int rarity) { waterEntities.put(entity, rarity); return this; } diff --git a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/worldgen/biome/StationBiome.java b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/worldgen/biome/StationBiome.java index b4e8ee580..491fe5323 100644 --- a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/worldgen/biome/StationBiome.java +++ b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/api/worldgen/biome/StationBiome.java @@ -1,6 +1,7 @@ package net.modificationstation.stationapi.api.worldgen.biome; import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; import net.minecraft.world.World; import net.minecraft.world.gen.feature.Feature; import net.modificationstation.stationapi.api.block.BlockState; @@ -69,15 +70,15 @@ default void setSnow(boolean snow) { Util.assertImpl(); } - default void addPassiveEntity(Class entityClass, int rarity) { + default void addPassiveEntity(Class entityClass, int rarity) { Util.assertImpl(); } - default void addHostileEntity(Class entityClass, int rarity) { + default void addHostileEntity(Class entityClass, int rarity) { Util.assertImpl(); } - default void addWaterEntity(Class entityClass, int rarity) { + default void addWaterEntity(Class entityClass, int rarity) { Util.assertImpl(); } diff --git a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/impl/worldgen/FogRendererImpl.java b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/impl/worldgen/FogRendererImpl.java index ea862e5fc..82fdeb369 100644 --- a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/impl/worldgen/FogRendererImpl.java +++ b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/impl/worldgen/FogRendererImpl.java @@ -8,7 +8,7 @@ public class FogRendererImpl { private static final float[] FOG_COLOR = new float[3]; public static void setupFog(Minecraft minecraft, float delta) { - BiomeSource biomeSource = minecraft.world.method_1781(); + BiomeSource biomeSource = minecraft.world.getBiomeSource(); double x = minecraft.camera.x; double z = minecraft.camera.z; int color = BiomeColorsImpl.FOG_INTERPOLATOR.getColor(biomeSource, x, z); diff --git a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/impl/worldgen/WorldDecoratorImpl.java b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/impl/worldgen/WorldDecoratorImpl.java index dfa135850..b03029583 100644 --- a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/impl/worldgen/WorldDecoratorImpl.java +++ b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/impl/worldgen/WorldDecoratorImpl.java @@ -19,7 +19,7 @@ public static void decorate(World world, int cx, int cz) { int x2 = x1 + 16; int z2 = z1 + 16; - world.method_1781().getBiomesInArea(BIOMES, x1, z1, 16, 16); + world.getBiomeSource().getBiomesInArea(BIOMES, x1, z1, 16, 16); int index = 0; for (int x = x1; x < x2; x++) { diff --git a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/impl/worldgen/WorldGeneratorImpl.java b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/impl/worldgen/WorldGeneratorImpl.java index c47a78ef0..aef60cea1 100644 --- a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/impl/worldgen/WorldGeneratorImpl.java +++ b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/impl/worldgen/WorldGeneratorImpl.java @@ -16,7 +16,7 @@ public static void updateNoise(World world, int cx, int cz, double[] data) { cx <<= 4; cz <<= 4; - BiomeSource biomeSource = world.method_1781(); + BiomeSource biomeSource = world.getBiomeSource(); int sideY = (1 << (MathHelper.ceilLog2(world.getHeight()) - 3)) + 1; int bottom = world.getBottomY() >> 3; int dx = sideY * 5; diff --git a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/BiomeMixin.java b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/BiomeMixin.java index 0f5a1b56a..5ced59bd5 100644 --- a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/BiomeMixin.java +++ b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/BiomeMixin.java @@ -1,9 +1,9 @@ package net.modificationstation.stationapi.mixin.worldgen; import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; import net.minecraft.world.World; import net.minecraft.world.biome.Biome; -import net.minecraft.world.biome.EntitySpawnGroup; import net.minecraft.world.gen.feature.Feature; import net.modificationstation.stationapi.api.block.BlockState; import net.modificationstation.stationapi.api.worldgen.biome.BiomeColorProvider; @@ -95,18 +95,18 @@ public void setSnow(boolean snow) { } @Override - public void addPassiveEntity(Class entityClass, int rarity) { - this.spawnablePassive.add(new EntitySpawnGroup(entityClass, rarity)); + public void addPassiveEntity(Class entityClass, int rarity) { + this.spawnablePassive.add(new Biome.EntitySpawnGroup(entityClass, rarity)); } @Override - public void addHostileEntity(Class entityClass, int rarity) { - this.spawnableMonsters.add(new EntitySpawnGroup(entityClass, rarity)); + public void addHostileEntity(Class entityClass, int rarity) { + this.spawnableMonsters.add(new Biome.EntitySpawnGroup(entityClass, rarity)); } @Override - public void addWaterEntity(Class entityClass, int rarity) { - this.spawnableWaterCreatures.add(new EntitySpawnGroup(entityClass, rarity)); + public void addWaterEntity(Class entityClass, int rarity) { + this.spawnableWaterCreatures.add(new Biome.EntitySpawnGroup(entityClass, rarity)); } @Override diff --git a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/NetherWorldSourceMixin.java b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/NetherWorldSourceMixin.java index dedb3c50d..2e6ee4320 100644 --- a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/NetherWorldSourceMixin.java +++ b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/NetherWorldSourceMixin.java @@ -31,7 +31,7 @@ private void stationapi_makeSurface(ChunkSource source, int cx, int cz, Callback cancellable = true ) private void stationapi_cancelFeatureGeneration(ChunkSource source, int cx, int cz, CallbackInfo info) { - Biome biome = this.world.method_1781().getBiome(cx + 16, cz + 16); + Biome biome = this.world.getBiomeSource().getBiome(cx + 16, cz + 16); if (biome.isNoDimensionFeatures()) { SandBlock.fallInstantly = false; info.cancel(); diff --git a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/OverworldWorldSourceMixin.java b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/OverworldWorldSourceMixin.java index 6f613d38f..31a59a322 100644 --- a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/OverworldWorldSourceMixin.java +++ b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/OverworldWorldSourceMixin.java @@ -64,7 +64,7 @@ private int stationapi_cancelSurfaceMaking(int constant, @Local Biome biome) { ) ) private void stationapi_changeHeight(int cx, int cz, byte[] args, Biome[] biomes, double[] par5, CallbackInfo info) { - BiomeSource biomeSource = world.method_1781(); + BiomeSource biomeSource = world.getBiomeSource(); biomeSource.temperatureMap = biomeSource.downfallMap = biomeSource.weirdnessMap = null; biomeSource.biomes = null; WorldGeneratorImpl.updateNoise(world, cx, cz, this.heightMap); diff --git a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/client/GrassBlockMixin.java b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/client/GrassBlockMixin.java index 799ce77ba..d8493bd02 100644 --- a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/client/GrassBlockMixin.java +++ b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/client/GrassBlockMixin.java @@ -16,7 +16,7 @@ class GrassBlockMixin { cancellable = true ) private void stationapi_getBiomeColor(BlockView view, int x, int y, int z, CallbackInfoReturnable info) { - int color = BiomeColorsImpl.GRASS_INTERPOLATOR.getColor(view.method_1781(), x, z); + int color = BiomeColorsImpl.GRASS_INTERPOLATOR.getColor(view.getBiomeSource(), x, z); info.setReturnValue(color); } } diff --git a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/client/LeavesBlockMixin.java b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/client/LeavesBlockMixin.java index c37e895ee..d6d666ce4 100644 --- a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/client/LeavesBlockMixin.java +++ b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/client/LeavesBlockMixin.java @@ -15,14 +15,14 @@ class LeavesBlockMixin { method = "getColorMultiplier", at = @At( value = "INVOKE", - target = "Lnet/minecraft/world/BlockView;method_1781()Lnet/minecraft/world/biome/source/BiomeSource;", + target = "Lnet/minecraft/world/BlockView;getBiomeSource()Lnet/minecraft/world/biome/source/BiomeSource;", ordinal = 0, shift = Shift.BEFORE ), cancellable = true ) private void stationapi_getBiomeColor(BlockView view, int x, int y, int z, CallbackInfoReturnable info) { - int color = BiomeColorsImpl.LEAVES_INTERPOLATOR.getColor(view.method_1781(), x, z); + int color = BiomeColorsImpl.LEAVES_INTERPOLATOR.getColor(view.getBiomeSource(), x, z); info.setReturnValue(color); } } diff --git a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/client/TallPlantBlockMixin.java b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/client/TallPlantBlockMixin.java index 2cc84d98a..78d2cc574 100644 --- a/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/client/TallPlantBlockMixin.java +++ b/station-worldgen-api-v0/src/main/java/net/modificationstation/stationapi/mixin/worldgen/client/TallPlantBlockMixin.java @@ -22,7 +22,7 @@ private void stationapi_getBiomeColor(BlockView view, int x, int y, int z, Callb x += (int) (l >> 14) & 7; z += (int) (l >> 24) & 7; - int color = BiomeColorsImpl.GRASS_INTERPOLATOR.getColor(view.method_1781(), x, z); + int color = BiomeColorsImpl.GRASS_INTERPOLATOR.getColor(view.getBiomeSource(), x, z); info.setReturnValue(color); } } diff --git a/station-worldgen-api-v0/src/main/resources/fabric.mod.json b/station-worldgen-api-v0/src/main/resources/fabric.mod.json index 73689ec0a..b74765c95 100644 --- a/station-worldgen-api-v0/src/main/resources/fabric.mod.json +++ b/station-worldgen-api-v0/src/main/resources/fabric.mod.json @@ -2,7 +2,6 @@ "schemaVersion": 1, "id": "station-worldgen-api-v0", "version": "${version}", - "name": "Station Worldgen API (v0)", "description": "Provides a system for world and biome generation", "authors": [ @@ -13,10 +12,8 @@ "sources": "https://github.com/ModificationStation/StationAPI", "issues": "https://github.com/ModificationStation/StationAPI/issues" }, - "license": "MIT", "icon": "assets/station-worldgen-api-v0/icon.png", - "environment": "*", "entrypoints": { "stationapi:event_bus": [ @@ -26,16 +23,14 @@ "mixins": [ "station-worldgen-api-v0.mixins.json" ], - "depends": { "fabricloader": "*", "minecraft": "1.0.0-beta.7.3" }, - "custom": { "modmenu:api": true, "loom:injected_interfaces": { - "net/minecraft/class_153": [ + "net/minecraft/unmapped/C_28105876": [ "net/modificationstation/stationapi/api/worldgen/biome/StationBiome" ] }