Quellcode durchsuchen

Update to Minecraft 1.19.3
Only Fabric for now, since Forge is not out yet

malte0811 vor 2 Jahren
Ursprung
Commit
b55e9dd57a

+ 5 - 0
Common/src/main/java/malte0811/ferritecore/IPlatformHooks.java

@@ -0,0 +1,5 @@
+package malte0811.ferritecore;
+
+public interface IPlatformHooks {
+    String computeBlockstateCacheFieldName();
+}

+ 1 - 1
Common/src/main/java/malte0811/ferritecore/ducks/BlockStateCacheAccess.java

@@ -1,8 +1,8 @@
 package malte0811.ferritecore.ducks;
 
 import net.minecraft.world.phys.shapes.VoxelShape;
+import org.jetbrains.annotations.Nullable;
 
-import javax.annotation.Nullable;
 
 // This should be an accessor Mixin, but some part of the toolchain does not handle setters for fields of inner classes
 // properly

+ 1 - 1
Common/src/main/java/malte0811/ferritecore/fastmap/FastMap.java

@@ -5,8 +5,8 @@ import com.google.common.collect.ImmutableSet;
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
 import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
 import net.minecraft.world.level.block.state.properties.Property;
+import org.jetbrains.annotations.Nullable;
 
-import javax.annotation.Nullable;
 import java.util.*;
 
 /**

+ 1 - 1
Common/src/main/java/malte0811/ferritecore/fastmap/PropertyIndexer.java

@@ -10,8 +10,8 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty;
 import net.minecraft.world.level.block.state.properties.EnumProperty;
 import net.minecraft.world.level.block.state.properties.IntegerProperty;
 import net.minecraft.world.level.block.state.properties.Property;
+import org.jetbrains.annotations.Nullable;
 
-import javax.annotation.Nullable;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Comparator;

+ 3 - 2
Common/src/main/java/malte0811/ferritecore/impl/BlockStateCacheImpl.java

@@ -12,8 +12,8 @@ import net.minecraft.world.level.block.state.BlockBehaviour.BlockStateBase;
 import net.minecraft.world.phys.shapes.ArrayVoxelShape;
 import net.minecraft.world.phys.shapes.VoxelShape;
 import org.apache.commons.lang3.tuple.Pair;
+import org.jetbrains.annotations.Nullable;
 
-import javax.annotation.Nullable;
 import java.lang.invoke.MethodHandle;
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.Field;
@@ -33,7 +33,8 @@ public class BlockStateCacheImpl {
     // manual remapping it is
     private static final Supplier<Function<BlockStateBase, BlockStateCacheAccess>> GET_CACHE = Suppliers.memoize(() -> {
         try {
-            Field cacheField = BlockStateBase.class.getDeclaredField(Constants.blockstateCacheFieldName);
+            final String cacheName = Constants.PLATFORM_HOOKS.computeBlockstateCacheFieldName();
+            final Field cacheField = BlockStateBase.class.getDeclaredField(cacheName);
             cacheField.setAccessible(true);
             MethodHandle getter = MethodHandles.lookup().unreflectGetter(cacheField);
             return state -> {

+ 1 - 1
Common/src/main/java/malte0811/ferritecore/mixin/blockstatecache/VoxelShapeAccess.java

@@ -2,11 +2,11 @@ package malte0811.ferritecore.mixin.blockstatecache;
 
 import net.minecraft.world.phys.shapes.DiscreteVoxelShape;
 import net.minecraft.world.phys.shapes.VoxelShape;
+import org.jetbrains.annotations.Nullable;
 import org.spongepowered.asm.mixin.Mixin;
 import org.spongepowered.asm.mixin.Mutable;
 import org.spongepowered.asm.mixin.gen.Accessor;
 
-import javax.annotation.Nullable;
 
 @Mixin(VoxelShape.class)
 public interface VoxelShapeAccess {

+ 2 - 1
Common/src/main/java/malte0811/ferritecore/mixin/config/FerriteConfig.java

@@ -1,6 +1,7 @@
 package malte0811.ferritecore.mixin.config;
 
-import javax.annotation.Nullable;
+import org.jetbrains.annotations.Nullable;
+
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Arrays;

+ 1 - 1
Common/src/main/java/malte0811/ferritecore/mixin/fastmap/FastMapStateHolderMixin.java

@@ -26,7 +26,7 @@ public abstract class FastMapStateHolderMixin<O, S> implements FastMapStateHolde
     private FastMap<S> ferritecore_globalTable;
 
     @Redirect(
-            method = "setValue",
+            method = {"setValue", "trySetValue"},
             at = @At(
                     value = "INVOKE",
                     target = "Lcom/google/common/collect/Table;get(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;",

+ 12 - 1
Common/src/main/java/malte0811/ferritecore/util/Constants.java

@@ -1,6 +1,17 @@
 package malte0811.ferritecore.util;
 
+import malte0811.ferritecore.IPlatformHooks;
+
 public class Constants {
     public static final String MODID = "ferritecore";
-    public static String blockstateCacheFieldName;
+    public static final IPlatformHooks PLATFORM_HOOKS;
+
+    static {
+        try {
+            Class<?> hooks = Class.forName("malte0811.ferritecore.PlatformHooks");
+            PLATFORM_HOOKS = (IPlatformHooks) hooks.getConstructor().newInstance();
+        } catch (ReflectiveOperationException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }

+ 4 - 3
Common/src/test/java/malte0811/ferritecore/util/FakeGameVersion.java

@@ -1,5 +1,6 @@
 package malte0811.ferritecore.util;
 
+import com.mojang.bridge.game.PackType;
 import net.minecraft.WorldVersion;
 import net.minecraft.world.level.storage.DataVersion;
 
@@ -22,12 +23,12 @@ public class FakeGameVersion implements WorldVersion {
     }
 
     @Override
-    public String getReleaseTarget() {
-        return "none";
+    public int getProtocolVersion() {
+        return 0;
     }
 
     @Override
-    public int getProtocolVersion() {
+    public int getPackVersion(PackType packType) {
         return 0;
     }
 

+ 1 - 1
Fabric/build.gradle

@@ -1,5 +1,5 @@
 plugins {
-    id 'fabric-loom' version '0.11-SNAPSHOT'
+    id 'fabric-loom' version '1.0-SNAPSHOT'
     id 'ferritecore.loader-conventions'
 }
 

+ 3 - 5
Fabric/src/main/java/malte0811/ferritecore/ModMain.java → Fabric/src/main/java/malte0811/ferritecore/PlatformHooks.java

@@ -1,13 +1,11 @@
 package malte0811.ferritecore;
 
-import malte0811.ferritecore.util.Constants;
-import net.fabricmc.api.ModInitializer;
 import net.fabricmc.loader.api.FabricLoader;
 
-public class ModMain implements ModInitializer {
+public class PlatformHooks implements IPlatformHooks {
     @Override
-    public void onInitialize() {
-        Constants.blockstateCacheFieldName = FabricLoader.getInstance()
+    public String computeBlockstateCacheFieldName() {
+        return FabricLoader.getInstance()
                 .getMappingResolver()
                 .mapFieldName(
                         "intermediary",

+ 0 - 5
Fabric/src/main/resources/fabric.mod.json

@@ -15,11 +15,6 @@
   },
   "license": "MIT",
   "environment": "*",
-  "entrypoints": {
-    "main": [
-      "malte0811.ferritecore.ModMain"
-    ]
-  },
   "depends": {
     "fabricloader": ">=0.14.6",
     "minecraft": ">=1.19 <1.20"

+ 4 - 5
gradle.properties

@@ -3,7 +3,7 @@ org.gradle.daemon=false
 group=malte0811.ferritecore
 
 # Common
-minecraft_version=1.19.2
+minecraft_version=1.19.3
 # TODO not available on 1.19 yet!
 parchment_version=2022.03.13
 
@@ -11,14 +11,13 @@ parchment_version=2022.03.13
 forge_version=43.1.2
 
 # Fabric
-fabric_loader_version=0.14.6
+fabric_loader_version=0.14.10
 
 # Quilt
-quilt_loader_version=0.16.0-beta.7
-quilt_stdlib_version=1.1.0-beta.3+1.18.2
+quilt_loader_version=0.18.1-beta.17
 
 # Mod options
 mod_name=FerriteCore
 mod_author=malte0811
 mod_id=ferritecore
-mod_version=5.0.3
+mod_version=5.1.0

+ 2 - 2
settings.gradle

@@ -36,5 +36,5 @@ pluginManagement {
     }
 }
 
-rootProject.name = 'FerriteCore-1.19'
-include("Common", "Fabric", "Forge")
+rootProject.name = "FerriteCore-${minecraft_version}"
+include("Common", "Fabric"/*, "Forge"*/)