From 855f7f0f9aa0ad6378ce5732341e8cc26f08cae6 Mon Sep 17 00:00:00 2001 From: coolGi2007 Date: Sat, 2 Apr 2022 19:29:01 +1030 Subject: [PATCH] Made lots of things use java 8 and added access wideners for different versions --- 1.17.1.properties | 2 +- build.gradle | 20 +++++++- common/build.gradle | 4 -- .../block/TintGetterOverrideFast.java | 6 ++- .../block/TintGetterOverrideSmooth.java | 4 ++ .../minecraft/MinecraftRenderWrapper.java | 15 ++++-- .../common/wrappers/misc/LightMapWrapper.java | 18 +++++++ .../mimicObject/LightedWorldGenRegion.java | 2 +- .../src/main/resources/1_17.lod.accesswidener | 47 +++++++++++++++++++ ...d.accesswidener => 1_18.lod.accesswidener} | 12 +---- core | 2 +- fabric/build.gradle | 16 +++---- fabric/src/main/resources/fabric.mod.json | 4 +- forge/build.gradle | 2 - gradle.properties | 2 +- 15 files changed, 120 insertions(+), 36 deletions(-) create mode 100644 common/src/main/resources/1_17.lod.accesswidener rename common/src/main/resources/{lod.accesswidener => 1_18.lod.accesswidener} (82%) diff --git a/1.17.1.properties b/1.17.1.properties index 21b0424a0..92ec552e5 100644 --- a/1.17.1.properties +++ b/1.17.1.properties @@ -1,4 +1,4 @@ -# 1.18.1 version +# 1.17.1 version minecraft_version=1.17.1 java_version=17 diff --git a/build.gradle b/build.gradle index 63fe5915c..9c133e3a8 100644 --- a/build.gradle +++ b/build.gradle @@ -48,6 +48,19 @@ subprojects { p -> loom { silentMojangMappingsLicense() + + def mcVersionToAcsessWidenerVersion = [ + "1_17_1": "1_17", + "1_18_1": "1_18", + "1_18_2": "1_18" + ] + + def acsessWidenerVersion = mcVersionToAcsessWidenerVersion.get(minecraft_version.replace(".", "_")) + + def acsessWidenerLocation = "${rootDir}/common/src/main/resources/${acsessWidenerVersion}.lod.accesswidener" + accessWidenerPath.set(project(":common").file(acsessWidenerLocation)) + accessWidenerPath.set(project(":fabric").file(acsessWidenerLocation)) + accessWidenerPath.set(project(":forge").file(acsessWidenerLocation)) } configurations { @@ -97,6 +110,7 @@ allprojects { p -> version = rootProject.mod_version group = rootProject.maven_group + repositories { mavenCentral() // used to download and compile dependencies from git repos @@ -192,9 +206,11 @@ allprojects { p -> if (p != project(":core")) { options.compilerArgs += ['-Xplugin:Manifold'] options.release = rootProject.java_version as Integer -// } else if (p == project(":core")) { -// options.release = 8; + } else if (p == project(":core")) { + options.release = 8; } + // TODO: make everything use java 8 +// options.release = 8 // Use Java 8 for everything so back porting is easier } java { diff --git a/common/build.gradle b/common/build.gradle index c98cf17a3..e4aa8c237 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -1,7 +1,3 @@ -loom { - accessWidenerPath.set(file("src/main/resources/lod.accesswidener")) -} - architectury { common() } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideFast.java b/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideFast.java index 8be87ce91..8ce042b0e 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideFast.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideFast.java @@ -49,7 +49,11 @@ public class TintGetterOverrideFast implements BlockAndTintGetter { @Override public int getBlockTint(BlockPos blockPos, ColorResolver colorResolver) { Biome b = _getBiome(blockPos); - return tintCaches.get(colorResolver).computeIfAbsent(b, (key) -> colorResolver.getColor(b, blockPos.getX(), blockPos.getZ())); + ConcurrentHashMap concurrentHashMap = this.tintCaches.get(colorResolver); + if (concurrentHashMap == null) { // This is a compat fix for Colormatic's mixin + this.tintCaches.put(colorResolver, concurrentHashMap = new ConcurrentHashMap<>()); + } + return concurrentHashMap.computeIfAbsent(b, (key) -> colorResolver.getColor(b, blockPos.getX(), blockPos.getZ())); } @Override diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideSmooth.java b/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideSmooth.java index 91120c9e4..231d5d2b7 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideSmooth.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideSmooth.java @@ -75,6 +75,10 @@ public class TintGetterOverrideSmooth implements BlockAndTintGetter { public int getBlockTint(BlockPos blockPos, ColorResolver colorResolver) { BlockTintCache blockTintCache = this.tintCaches.get(colorResolver); #if MC_VERSION_1_18_2 || MC_VERSION_1_18_1 + if (blockTintCache == null) { // This is a compat fix for Colormatic's mixin + this.tintCaches.put(colorResolver, + blockTintCache = new BlockTintCache((pos) -> calculateBlockTint(pos, colorResolver))); + } return blockTintCache.getColor(blockPos); #elif MC_VERSION_1_17_1 return blockTintCache.getColor(blockPos, null); //FIXME[1.17.1]: Replace this null with something else diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java index 594e0b8f3..db3d70353 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/minecraft/MinecraftRenderWrapper.java @@ -15,6 +15,7 @@ import com.seibel.lod.core.handlers.dependencyInjection.ModAccessorHandler; import com.seibel.lod.core.handlers.dependencyInjection.SingletonHandler; import com.seibel.lod.core.util.LodUtil; +import com.seibel.lod.core.wrapperInterfaces.misc.ILightMapWrapper; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.minecraft.client.renderer.LightTexture; @@ -233,8 +234,8 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper public int[] getLightmapPixels() { LightTexture tex = GAME_RENDERER.lightTexture(); - tex.tick(); // This call makes no sense, but it fixes pause menu flicker bug - NativeImage lightMapPixels = tex.lightPixels; + //tex.tick(); // This call makes no sense, but it fixes pause menu flicker bug + NativeImage lightMapPixels = tex.lightTexture.getPixels(); LightMapWrapper lightMap = new LightMapWrapper(lightMapPixels); @@ -274,8 +275,14 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper return pixels; } - - + + @Override + public ILightMapWrapper getLightmapWrapper() { + return new LightMapWrapper(GAME_RENDERER.lightTexture()); + } + + + @Override public int getLightmapTextureHeight() { diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/misc/LightMapWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/misc/LightMapWrapper.java index c05c61a29..eb7c61ce9 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/misc/LightMapWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/misc/LightMapWrapper.java @@ -2,6 +2,7 @@ package com.seibel.lod.common.wrappers.misc; import com.mojang.blaze3d.platform.NativeImage; import com.seibel.lod.core.wrapperInterfaces.misc.ILightMapWrapper; +import net.minecraft.client.renderer.LightTexture; /** * @author James Seibel @@ -11,11 +12,17 @@ public class LightMapWrapper implements ILightMapWrapper { static NativeImage lightMap = null; + private LightTexture tex; + public LightMapWrapper(NativeImage newLightMap) { lightMap = newLightMap; } + public LightMapWrapper(LightTexture lightTexture) { + tex = lightTexture; + } + public static void setLightMap(NativeImage newLightMap) { lightMap = newLightMap; @@ -26,4 +33,15 @@ public class LightMapWrapper implements ILightMapWrapper { return lightMap.getPixelRGBA(skyLight, blockLight); } + + @Override + public int bind() { + tex.turnOnLightLayer(); + return 3553; //GL.GL_TEXTURE_2D + } + + @Override + public void unbind() { + tex.turnOffLightLayer(); + } } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java index 64421016e..1c1054a96 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java @@ -257,7 +257,7 @@ public class LightedWorldGenRegion extends WorldGenRegion { BlockTintCache blockTintCache = (BlockTintCache) this.tintCaches.get(colorResolver); #if MC_VERSION_1_17_1 return blockTintCache.getColor(blockPos, null); // FIXME[1.17.1]: Replace this null with something else - #if MC_VERSION_1_18_1 || MC_VERSION_1_18_2 + #elif MC_VERSION_1_18_1 || MC_VERSION_1_18_2 return blockTintCache.getColor(blockPos); #endif } diff --git a/common/src/main/resources/1_17.lod.accesswidener b/common/src/main/resources/1_17.lod.accesswidener new file mode 100644 index 000000000..c65b3a27e --- /dev/null +++ b/common/src/main/resources/1_17.lod.accesswidener @@ -0,0 +1,47 @@ +accessWidener v1 named + +# used when determining where to save files to +accessible field net/minecraft/world/level/storage/DimensionDataStorage dataFolder Ljava/io/File; + +# used when rendering +accessible field com/mojang/blaze3d/vertex/VertexBuffer indexCount I +accessible field com/mojang/blaze3d/vertex/VertexBuffer vertextBufferId I +accessible method net/minecraft/client/renderer/GameRenderer getFov (Lnet/minecraft/client/Camera;FZ)D + +# pre-render setup +accessible field net/minecraft/client/renderer/LevelRenderer renderChunks Lit/unimi/dsi/fastutil/objects/ObjectArrayList; +accessible class net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo +accessible field net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo chunk Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$RenderChunk; + +# used for grabbing vanilla rendered chunks +accessible class net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo +accessible field net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo chunk Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$RenderChunk; + +# lighting +accessible field net/minecraft/client/renderer/LightTexture lightPixels Lcom/mojang/blaze3d/platform/NativeImage; +accessible field net/minecraft/client/renderer/LightTexture lightTexture Lnet/minecraft/client/renderer/texture/DynamicTexture; +accessible field net/minecraft/world/level/lighting/LevelLightEngine blockEngine Lnet/minecraft/world/level/lighting/LayerLightEngine; +accessible field net/minecraft/world/level/lighting/LevelLightEngine skyEngine Lnet/minecraft/world/level/lighting/LayerLightEngine; + +# world generation +accessible method net/minecraft/world/level/levelgen/Heightmap setHeight (III)V +accessible field net/minecraft/world/level/biome/Biome generationSettings Lnet/minecraft/world/level/biome/BiomeGenerationSettings; +accessible field net/minecraft/world/level/biome/Biome biomeCategory Lnet/minecraft/world/level/biome/Biome$BiomeCategory; +# accessible field net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator settings Lnet/minecraft/core/Holder; +#accessible method net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator doCreateBiomes (Lnet/minecraft/core/Registry;Lnet/minecraft/world/level/levelgen/blending/Blender;Lnet/minecraft/world/level/StructureFeatureManager;Lnet/minecraft/world/level/chunk/ChunkAccess;)V +accessible method net/minecraft/world/level/lighting/LayerLightEngine queueSectionData (JLnet/minecraft/world/level/chunk/DataLayer;Z)V + +# lod generation from save file +accessible field net/minecraft/server/level/ChunkMap mainThreadExecutor Lnet/minecraft/util/thread/BlockableEventLoop; +accessible method net/minecraft/server/level/ChunkMap readChunk (Lnet/minecraft/world/level/ChunkPos;)Lnet/minecraft/nbt/CompoundTag; + + +# grabbing textures +accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite animatedTexture Lnet/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture; +accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite width I +accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite height I +accessible field net/minecraft/client/renderer/texture/TextureAtlasSprite mainImage [Lcom/mojang/blaze3d/platform/NativeImage; +accessible class net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture +accessible method net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture getFrameX (I)I +accessible method net/minecraft/client/renderer/texture/TextureAtlasSprite$AnimatedTexture getFrameY (I)I +extendable class com/mojang/math/Matrix4f \ No newline at end of file diff --git a/common/src/main/resources/lod.accesswidener b/common/src/main/resources/1_18.lod.accesswidener similarity index 82% rename from common/src/main/resources/lod.accesswidener rename to common/src/main/resources/1_18.lod.accesswidener index 0d79812fe..ed26f411a 100644 --- a/common/src/main/resources/lod.accesswidener +++ b/common/src/main/resources/1_18.lod.accesswidener @@ -8,23 +8,15 @@ accessible field com/mojang/blaze3d/vertex/VertexBuffer indexCount I accessible field com/mojang/blaze3d/vertex/VertexBuffer vertextBufferId I accessible method net/minecraft/client/renderer/GameRenderer getFov (Lnet/minecraft/client/Camera;FZ)D -#if MC_VERSION_1_17_1 -# pre-render setup -accessible field net/minecraft/client/renderer/LevelRenderer renderChunks Lit/unimi/dsi/fastutil/objects/ObjectArrayList; -accessible class net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo -accessible field net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo chunk Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$RenderChunk; -#endif - # used for grabbing vanilla rendered chunks -#if MC_VERSION_1_18_1 || MC_VERSION_1_18_2 accessible field net/minecraft/client/renderer/LevelRenderer renderChunkStorage Ljava/util/concurrent/atomic/AtomicReference; accessible class net/minecraft/client/renderer/LevelRenderer$RenderChunkStorage -#endif accessible class net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo accessible field net/minecraft/client/renderer/LevelRenderer$RenderChunkInfo chunk Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher$RenderChunk; # lighting accessible field net/minecraft/client/renderer/LightTexture lightPixels Lcom/mojang/blaze3d/platform/NativeImage; +accessible field net/minecraft/client/renderer/LightTexture lightTexture Lnet/minecraft/client/renderer/texture/DynamicTexture; accessible field net/minecraft/world/level/lighting/LevelLightEngine blockEngine Lnet/minecraft/world/level/lighting/LayerLightEngine; accessible field net/minecraft/world/level/lighting/LevelLightEngine skyEngine Lnet/minecraft/world/level/lighting/LayerLightEngine; @@ -33,7 +25,7 @@ accessible method net/minecraft/world/level/levelgen/Heightmap setHeight (III)V accessible field net/minecraft/world/level/biome/Biome generationSettings Lnet/minecraft/world/level/biome/BiomeGenerationSettings; accessible field net/minecraft/world/level/biome/Biome biomeCategory Lnet/minecraft/world/level/biome/Biome$BiomeCategory; # accessible field net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator settings Lnet/minecraft/core/Holder; -#accessible method net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator doFill (Lnet/minecraft/world/level/levelgen/blending/Blender;Lnet/minecraft/world/level/StructureFeatureManager;Lnet/minecraft/world/level/chunk/ChunkAccess;II)Lnet/minecraft/world/level/chunk/ChunkAccess; +accessible method net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator doFill (Lnet/minecraft/world/level/levelgen/blending/Blender;Lnet/minecraft/world/level/StructureFeatureManager;Lnet/minecraft/world/level/chunk/ChunkAccess;II)Lnet/minecraft/world/level/chunk/ChunkAccess; #accessible method net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator doCreateBiomes (Lnet/minecraft/core/Registry;Lnet/minecraft/world/level/levelgen/blending/Blender;Lnet/minecraft/world/level/StructureFeatureManager;Lnet/minecraft/world/level/chunk/ChunkAccess;)V accessible method net/minecraft/world/level/lighting/LayerLightEngine queueSectionData (JLnet/minecraft/world/level/chunk/DataLayer;Z)V diff --git a/core b/core index aa3cde053..a12f2e9e0 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit aa3cde053726205d10e526e96d1c16b598ca72ba +Subproject commit a12f2e9e014d8630239cd05b9d2d608703989770 diff --git a/fabric/build.gradle b/fabric/build.gradle index 949c5b511..27abbbea7 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -4,10 +4,6 @@ plugins { version = rootProject.mod_version+"-"+rootProject.minecraft_version+"-"+new Date().format("yyyy_MM_dd_HH_mm") -loom { - accessWidenerPath.set(project(":common").file("src/main/resources/lod.accesswidener")) -} - architectury { platformSetupLoomIde() fabric() @@ -17,6 +13,10 @@ configurations { compileClasspath.extendsFrom common runtimeClasspath.extendsFrom common developmentFabric.extendsFrom common + + addModJar + include.extendsFrom addModJar + modImplementation.extendsFrom addModJar } repositories { @@ -36,12 +36,12 @@ dependencies { modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" // Fabric API - modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" + addModJar(fabricApi.module("fabric-lifecycle-events-v1", rootProject.fabric_api_version)) + addModJar(fabricApi.module("fabric-key-binding-api-v1", rootProject.fabric_api_version)) + addModJar(fabricApi.module("fabric-networking-api-v1", rootProject.fabric_api_version)) // Mod Menu - modImplementation("com.terraformersmc:modmenu:${rootProject.modmenu_version}") { - exclude(group: "net.fabricmc.fabric-api") - } + addMod("com.terraformersmc:modmenu:${rootProject.modmenu_version}", 2) // Starlight addMod("curse.maven:starlight-521783:${rootProject.starlight_version_fabric}", rootProject.enable_starlight) diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 7f5921c3d..f67d3e452 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -33,7 +33,9 @@ "accessWidener" : "lod.accesswidener", "depends": { "fabricloader": "*", - "fabric": "*", + "fabric-lifecycle-events-v1": "*", + "fabric-key-binding-api-v1": "*", + "fabric-networking-api-v1": "*", "minecraft": "${minecraft_version}", "java": ">=${java_version}" }, diff --git a/forge/build.gradle b/forge/build.gradle index 95cc107da..f0bd93927 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -5,8 +5,6 @@ plugins { version = rootProject.mod_version+"-"+rootProject.minecraft_version+"-"+new Date().format("yyyy_MM_dd_HH_mm") loom { - accessWidenerPath.set(project(":common").file("src/main/resources/lod.accesswidener")) - forge { convertAccessWideners.set(true) extraAccessWideners.add("lod.accesswidener") diff --git a/gradle.properties b/gradle.properties index 297c34e5f..52e0deedf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,4 +18,4 @@ toml_version=3.6.4 manifold_version=2022.1.7 ##### FOR IDE SUPPORT AND TELL IDE TO USE CERTIAN MC VERSION: SWITCH THIS: -mcVer=1.17.1 \ No newline at end of file +mcVer=1.18.1 \ No newline at end of file