Skip to content

Commit 14a4dbb

Browse files
committed
Re-enable fast grass
1 parent cf5140f commit 14a4dbb

File tree

4 files changed

+32
-13
lines changed

4 files changed

+32
-13
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ dependencies {
140140

141141
// Fabric API - Needs to be specified, otherwise an older version might be defaulted and cause issues.
142142
modImplementation(fabricApi.module("fabric-resource-loader-v0", deps.fabricApiVersion))
143+
modImplementation(fabricApi.module("fabric-model-loading-api-v1", deps.fabricApiVersion))
143144
modImplementation(fabricApi.module("fabric-networking-api-v1", deps.fabricApiVersion))
144145
modImplementation(fabricApi.module("fabric-command-api-v2", deps.fabricApiVersion))
145146

src/main/java/org/visuals/legacy/animatium/AnimatiumConstants.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@
2626
package org.visuals.legacy.animatium;
2727

2828
import lombok.experimental.UtilityClass;
29+
import net.fabricmc.fabric.api.client.model.loading.v1.ExtraModelKey;
30+
import net.minecraft.client.renderer.block.model.BlockStateModel;
2931
import net.minecraft.resources.Identifier;
32+
import org.jetbrains.annotations.NotNull;
3033
import org.visuals.legacy.animatium.packet.HelloPayloadPacket;
3134

3235
@UtilityClass
@@ -37,7 +40,7 @@ public class AnimatiumConstants {
3740
public final boolean IS_DEVELOPMENT = Boolean.parseBoolean("@DEVELOPMENT@");
3841

3942
public final Identifier FAST_GRASS_MODEL_LOCATION = Animatium.location("block/fast_grass_block");
40-
// TODO/FIX: public final ExtraModelKey<BlockStateModel> FAST_GRASS_MODEL_KEY = ExtraModelKey.create(FAST_GRASS_MODEL_LOCATION::toString);
43+
public final ExtraModelKey<@NotNull BlockStateModel> FAST_GRASS_MODEL_KEY = ExtraModelKey.create(FAST_GRASS_MODEL_LOCATION::toString);
4144

4245
public HelloPayloadPacket getHelloPayload() {
4346
return new HelloPayloadPacket(VERSION, IS_DEVELOPMENT ? DEVELOPMENT_VERSION : null);

src/main/java/org/visuals/legacy/animatium/AnimatiumFabricClient.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import dev.kikugie.fletching_table.annotation.fabric.Entrypoint;
2929
import net.fabricmc.api.ClientModInitializer;
3030
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
31+
import net.fabricmc.fabric.api.client.model.loading.v1.ModelLoadingPlugin;
32+
import net.fabricmc.fabric.api.client.model.loading.v1.SimpleUnbakedExtraModel;
3133
import net.fabricmc.fabric.api.client.networking.v1.*;
3234
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
3335
import net.fabricmc.fabric.api.resource.v1.ResourceLoader;
@@ -48,7 +50,7 @@ public void onInitializeClient() {
4850
ResourceLoader.registerBuiltinPack(Animatium.location("classic_water"), modContainer, PackActivationType.NORMAL);
4951
ClientCommandRegistrationCallback.EVENT.register((dispatcher, context) -> dispatcher.register(AnimatiumCommand.create()));
5052
registerPayloads();
51-
// TODO: ModelLoadingPlugin.register(context -> context.addModel(AnimatiumConstants.FAST_GRASS_MODEL_KEY, SimpleUnbakedExtraModel.blockStateModel(AnimatiumConstants.FAST_GRASS_MODEL_LOCATION)));
53+
ModelLoadingPlugin.register(context -> context.addModel(AnimatiumConstants.FAST_GRASS_MODEL_KEY, SimpleUnbakedExtraModel.blockStateModel(AnimatiumConstants.FAST_GRASS_MODEL_LOCATION)));
5254
}
5355

5456
private void registerPayloads() {

src/main/java/org/visuals/legacy/animatium/mixins/v1/rendering/blocks/MixinBlockRenderDispatcher_FastGrassSide.java

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,35 @@
2525

2626
package org.visuals.legacy.animatium.mixins.v1.rendering.blocks;
2727

28+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
29+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
30+
import net.minecraft.client.renderer.block.BlockModelShaper;
2831
import net.minecraft.client.renderer.block.BlockRenderDispatcher;
32+
import net.minecraft.client.renderer.block.model.BlockStateModel;
33+
import net.minecraft.world.level.block.Blocks;
34+
import net.minecraft.world.level.block.GrassBlock;
35+
import net.minecraft.world.level.block.state.BlockState;
36+
import org.spongepowered.asm.mixin.Final;
2937
import org.spongepowered.asm.mixin.Mixin;
38+
import org.spongepowered.asm.mixin.Shadow;
39+
import org.spongepowered.asm.mixin.injection.At;
40+
import org.visuals.legacy.animatium.Animatium;
41+
import org.visuals.legacy.animatium.AnimatiumConstants;
42+
import org.visuals.legacy.animatium.config.AnimatiumConfig;
43+
import org.visuals.legacy.animatium.util.Utils;
3044

3145
@Mixin(BlockRenderDispatcher.class)
3246
public abstract class MixinBlockRenderDispatcher_FastGrassSide {
33-
/*@Shadow
47+
@Shadow
3448
@Final
35-
private BlockModelShaper blockModelShaper;*/
49+
private BlockModelShaper blockModelShaper;
3650

37-
// TODO/FIX: 1.21.11
38-
/*@WrapOperation(method = "getBlockModel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/block/BlockModelShaper;getBlockModel(Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/client/renderer/block/model/BlockStateModel;"))
39-
private BlockStateModel animatium$fastGrass(BlockModelShaper instance, BlockState state, Operation<BlockStateModel> original) {
40-
if (Animatium.isEnabled() && AnimatiumConfig.instance().other.fastGrass && (state.is(Blocks.GRASS_BLOCK) && !state.getValue(GrassBlock.SNOWY)) && Utils.isFastGraphics()) {
41-
return this.blockModelShaper.getModelManager().getModel(AnimatiumConstants.FAST_GRASS_MODEL_KEY);
42-
} else {
43-
return original.call(instance, state);
44-
}
45-
}*/
51+
@WrapOperation(method = "getBlockModel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/block/BlockModelShaper;getBlockModel(Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/client/renderer/block/model/BlockStateModel;"))
52+
private BlockStateModel animatium$fastGrass(BlockModelShaper instance, BlockState state, Operation<BlockStateModel> original) {
53+
if (Animatium.isEnabled() && AnimatiumConfig.instance().other.fastGrass && (state.is(Blocks.GRASS_BLOCK) && !state.getValue(GrassBlock.SNOWY)) && Utils.isFastGraphics()) {
54+
return this.blockModelShaper.getModelManager().getModel(AnimatiumConstants.FAST_GRASS_MODEL_KEY);
55+
} else {
56+
return original.call(instance, state);
57+
}
58+
}
4659
}

0 commit comments

Comments
 (0)