From e1796aad7f187b329e70b9ba10111c6ffd90ca16 Mon Sep 17 00:00:00 2001 From: gniftygnome Date: Thu, 17 Aug 2023 15:09:42 -0700 Subject: [PATCH] Backport FAPI block particle fix for 1.19.2. - Backports the FAPI block particle fix to 1.19.2 - Requires Fabric API 0.77.0 - Minecraft 1.19.2 only (not 1.19 or 1.19.1) --- .../terrestria/TerrestriaClient.java | 6 ++ .../mixin/MixinBlockDustParticle.java | 35 ------------ .../mixin/TerrestriaClientMixinPlugin.java | 57 ------------------- client/src/main/resources/fabric.mod.json | 1 - .../resources/mixins.terrestria-client.json | 1 - .../TerrestriaBlockLootTableProvider.java | 2 +- gradle.properties | 16 +++--- src/main/resources/fabric.mod.json | 6 +- 8 files changed, 18 insertions(+), 106 deletions(-) delete mode 100644 client/src/main/java/com/terraformersmc/terrestria/mixin/MixinBlockDustParticle.java delete mode 100644 client/src/main/java/com/terraformersmc/terrestria/mixin/TerrestriaClientMixinPlugin.java diff --git a/client/src/main/java/com/terraformersmc/terrestria/TerrestriaClient.java b/client/src/main/java/com/terraformersmc/terrestria/TerrestriaClient.java index 7f787472..89bb03f6 100644 --- a/client/src/main/java/com/terraformersmc/terrestria/TerrestriaClient.java +++ b/client/src/main/java/com/terraformersmc/terrestria/TerrestriaClient.java @@ -5,10 +5,12 @@ import com.terraformersmc.terraform.sign.block.TerraformSignBlock; import com.terraformersmc.terrestria.init.TerrestriaBlocks; import com.terraformersmc.terrestria.init.TerrestriaItems; +import com.terraformersmc.terrestria.tag.TerrestriaBlockTags; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; +import net.fabricmc.fabric.api.client.particle.v1.ParticleRenderEvents; import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry; import net.minecraft.block.Block; import net.minecraft.client.color.block.BlockColorProvider; @@ -44,6 +46,10 @@ public void onInitializeClient() { // Load the client config if it hasn't been loaded already Terrestria.getConfigManager().getClientConfig(); + ParticleRenderEvents.ALLOW_BLOCK_DUST_TINT.register((state, world, pos) -> + !state.isOf(TerrestriaBlocks.ANDISOL.getGrassBlock()) && + !state.isIn(TerrestriaBlockTags.SMALL_OAK_LOGS)); + ColorProviderRegistry.BLOCK.register( FOLIAGE_BLOCK_COLORS, TerrestriaBlocks.RUBBER.leaves, diff --git a/client/src/main/java/com/terraformersmc/terrestria/mixin/MixinBlockDustParticle.java b/client/src/main/java/com/terraformersmc/terrestria/mixin/MixinBlockDustParticle.java deleted file mode 100644 index 4fde67e1..00000000 --- a/client/src/main/java/com/terraformersmc/terrestria/mixin/MixinBlockDustParticle.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.terraformersmc.terrestria.mixin; - -import com.terraformersmc.terrestria.init.TerrestriaBlocks; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.particle.BlockDustParticle; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; - -@Mixin(BlockDustParticle.class) -@Environment(EnvType.CLIENT) -public class MixinBlockDustParticle { - @Redirect(method = "(Lnet/minecraft/client/world/ClientWorld;DDDDDDLnet/minecraft/block/BlockState;Lnet/minecraft/util/math/BlockPos;)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/block/BlockState;isOf(Lnet/minecraft/block/Block;)Z"), require = 0) - private boolean terrestria$fixParticleColors(BlockState blockState, Block requiredBlock) { - Block block = blockState.getBlock(); - - // Minecraft hardcodes it so that break particles from GRASS_BLOCK are not tinted with the color returned from - // BlockColors. This prevents the particles (which are in actuality, the same as dirt particles) from being colored - // with the grass color. - // - // The below code does the same thing for our own blocks, since they too have particles that shouldn't be tinted. - if (block == TerrestriaBlocks.ANDISOL.getGrassBlock() || block == TerrestriaBlocks.SMALL_OAK_LOG - || block == TerrestriaBlocks.STRIPPED_SMALL_OAK_LOG) { - return true; - } - - return blockState.isOf(requiredBlock); - } -} diff --git a/client/src/main/java/com/terraformersmc/terrestria/mixin/TerrestriaClientMixinPlugin.java b/client/src/main/java/com/terraformersmc/terrestria/mixin/TerrestriaClientMixinPlugin.java deleted file mode 100644 index c81eab7f..00000000 --- a/client/src/main/java/com/terraformersmc/terrestria/mixin/TerrestriaClientMixinPlugin.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.terraformersmc.terrestria.mixin; - -import com.google.common.collect.ImmutableMap; -import net.fabricmc.loader.api.FabricLoader; -import org.objectweb.asm.tree.ClassNode; -import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; -import org.spongepowered.asm.mixin.extensibility.IMixinInfo; - -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.Supplier; - -public class TerrestriaClientMixinPlugin implements IMixinConfigPlugin { - private static final Supplier TRUE = () -> true; - - private static final Map> CONDITIONS = ImmutableMap.of( - "com.terraformersmc.terrestria.mixin.MixinBlockDustParticle", () -> !FabricLoader.getInstance().isModLoaded("immersive_weathering") - ); - - @Override - public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - return CONDITIONS.getOrDefault(mixinClassName, TRUE).get(); - } - - // Boilerplate - - @Override - public void onLoad(String mixinPackage) { - - } - - @Override - public String getRefMapperConfig() { - return null; - } - - @Override - public void acceptTargets(Set myTargets, Set otherTargets) { - - } - - @Override - public List getMixins() { - return null; - } - - @Override - public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - - } - - @Override - public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - - } -} diff --git a/client/src/main/resources/fabric.mod.json b/client/src/main/resources/fabric.mod.json index ab164bad..a7f91e66 100644 --- a/client/src/main/resources/fabric.mod.json +++ b/client/src/main/resources/fabric.mod.json @@ -6,7 +6,6 @@ "license": "LGPL-3.0-only", "icon": "assets/terrestria/icon.png", "environment": "client", - "plugin": "com.terraformersmc.terrestria.mixin.TerrestriaClientMixinPlugin", "mixins": [ "mixins.terrestria-client.json" ], diff --git a/client/src/main/resources/mixins.terrestria-client.json b/client/src/main/resources/mixins.terrestria-client.json index fcd93131..5273016c 100644 --- a/client/src/main/resources/mixins.terrestria-client.json +++ b/client/src/main/resources/mixins.terrestria-client.json @@ -3,7 +3,6 @@ "package": "com.terraformersmc.terrestria.mixin", "compatibilityLevel": "JAVA_17", "client": [ - "MixinBlockDustParticle" ], "injectors": { "defaultRequire": 1 diff --git a/common/src/main/java/com/terraformersmc/terrestria/data/TerrestriaBlockLootTableProvider.java b/common/src/main/java/com/terraformersmc/terrestria/data/TerrestriaBlockLootTableProvider.java index ac923e4d..6dad6acf 100644 --- a/common/src/main/java/com/terraformersmc/terrestria/data/TerrestriaBlockLootTableProvider.java +++ b/common/src/main/java/com/terraformersmc/terrestria/data/TerrestriaBlockLootTableProvider.java @@ -171,7 +171,7 @@ private void addStoneDrops(StoneBlocks stoneBlock) { private void addWoodDrops(WoodBlocks woodBlock, @Nullable SaplingBlock sapling) { addDrop(woodBlock.button); - addDrop(woodBlock.door, BlockLootTableGenerator::addDoorDrop); + addDrop(woodBlock.door, BlockLootTableGenerator::doorDrops); addDrop(woodBlock.fence); addDrop(woodBlock.fenceGate); addDrop(woodBlock.log); diff --git a/gradle.properties b/gradle.properties index 247fda2e..2b92495e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,10 +3,10 @@ org.gradle.jvmargs=-Xmx1G maven_group=com.terraformersmc archive_name=terrestria -minecraft_version=1.19.1 -yarn_mappings=1.19.1+build.6 -loader_version=0.14.9 -fabric_version=0.58.0+1.19.1 +minecraft_version=1.19.2 +yarn_mappings=1.19.2+build.28 +loader_version=0.14.25 +fabric_version=0.77.0+1.19.2 # Terraform modules terraform_biome_remapper_api_version=4.2.0 @@ -22,7 +22,7 @@ terrablender_version=1.19.2-2.0.1.128 # Project Metadata project_name=Terrestria -project_url=https://www.curseforge.com/minecraft/mc-mods/terrestria +project_url=https://modrinth.com/mod/terrestria # Explicitly link to a fixed commit so that the image links don't break in the future project_logo=https://raw.githubusercontent.com/TerraformersMC/Terrestria/f2d93cc7fc09f26a0e8650702fa43e2cc59ef8d0/banners/Terrestria-logo-512x512.png project_color=0x0041bb @@ -32,14 +32,14 @@ default_release_type=alpha # CurseForge Metadata curseforge_slug=terrestria curseforge_id=323974 -curseforge_game_versions=1.19, 1.19.1, 1.19.2, Fabric +curseforge_game_versions=1.19.2, Fabric curseforge_required_dependencies=fabric-api, terrablender-fabric curseforge_optional_dependencies= # Modrinth Metadata modrinth_slug=terrestria modrinth_id=lsUDPMOT -modrinth_game_versions=1.19, 1.19.1, 1.19.2 +modrinth_game_versions=1.19.2 modrinth_mod_loaders=fabric modrinth_required_dependencies=fabric-api #modrinth_embedded_dependencies=terrablender @@ -49,7 +49,7 @@ loader_icon=https://fabricmc.net/assets/logo.png loader_name=Fabric # Discord Emotes -curseforge_emote=<:curseforge:698031288845729802> +curseforge_emote=<:curseforge:1078567270239981628> modrinth_emote=<:modrinth:802414390510354453> github_emote=<:github:698031289223217152> diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 3418344a..328c1dbe 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -20,7 +20,7 @@ "magneticflux-" ], "contact": { - "homepage": "https://www.curseforge.com/minecraft/mc-mods/terrestria", + "homepage": "https://modrinth.com/mod/terrestria", "sources": "https://github.com/TerraformersMC/Terrestria", "issues": "https://github.com/TerraformersMC/Terrestria/issues" }, @@ -29,8 +29,8 @@ "environment": "*", "depends": { "fabricloader": ">=0.12.12", - "fabric": ">=0.49.0", - "minecraft": ">=1.19", + "fabric-api": ">=0.77.0", + "minecraft": "1.19.2", "java": ">=17" } }