Skip to content

Commit

Permalink
Port IsRainingAtTransformer
Browse files Browse the repository at this point in the history
  • Loading branch information
Tamaized committed Jun 21, 2024
1 parent 1614187 commit d2d7bc9
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 48 deletions.
9 changes: 5 additions & 4 deletions src/main/java/twilightforest/ASMHooks.java
Original file line number Diff line number Diff line change
Expand Up @@ -253,11 +253,12 @@ public static int shroom(int o, LevelReader level, BlockPos pos) {
}

/**
* Injection Point:<br>
* {@link net.minecraft.world.level.Level#isRainingAt(BlockPos)}<br>
* [BEFORE ALOAD]
* {@link twilightforest.asm.transformers.cloud.IsRainingAtTransformer}<p/>
*
* Injection Point:<br/>
* {@link net.minecraft.world.level.Level#isRainingAt(BlockPos)}
*/
public static boolean cloud(boolean isRaining, Level level, BlockPos pos) {
public static boolean isRainingAt(boolean isRaining, Level level, BlockPos pos) {
if (!isRaining && TFConfig.commonCloudBlockPrecipitationDistance > 0) {
LevelChunk chunk = level.getChunkAt(pos);
for (int y = pos.getY(); y < pos.getY() + TFConfig.commonCloudBlockPrecipitationDistance; y++) {
Expand Down
42 changes: 0 additions & 42 deletions src/main/resources/META-INF/asm/cloud.js

This file was deleted.

1 change: 0 additions & 1 deletion src/main/resources/META-INF/coremods.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
"mount": "META-INF/asm/mount.js",
"conquered": "META-INF/asm/conquered.js",
"shroom": "META-INF/asm/shroom.js",
"cloud": "META-INF/asm/cloud.js",
"lead": "META-INF/asm/lead.js",
"structure_terraform": "META-INF/asm/structure_terraform.js",
"structure_scan": "META-INF/asm/structure_scan.js"
Expand Down
6 changes: 5 additions & 1 deletion tf-asm/src/main/java/twilightforest/asm/TFCoreMod.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import twilightforest.asm.transformers.armor.CancelArmorRenderingTransformer;
import twilightforest.asm.transformers.book.ModifyWrittenBookNameTransformer;
import twilightforest.asm.transformers.chunk.ChunkStatusTaskTransformer;
import twilightforest.asm.transformers.cloud.IsRainingAtTransformer;

import java.util.List;

Expand All @@ -23,7 +24,10 @@ public Iterable<? extends ITransformer<?>> getTransformers() {
new ModifyWrittenBookNameTransformer(),

// chunk
new ChunkStatusTaskTransformer()
new ChunkStatusTaskTransformer(),

// cloud
new IsRainingAtTransformer()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package twilightforest.asm.transformers.cloud;

import cpw.mods.modlauncher.api.ITransformer;
import cpw.mods.modlauncher.api.ITransformerVotingContext;
import cpw.mods.modlauncher.api.TargetType;
import cpw.mods.modlauncher.api.TransformerVoteResult;
import net.neoforged.coremod.api.ASMAPI;
import org.jetbrains.annotations.NotNull;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.MethodInsnNode;
import org.objectweb.asm.tree.MethodNode;
import org.objectweb.asm.tree.VarInsnNode;
import twilightforest.asm.AsmUtil;

import java.util.Set;

/**
* {@link twilightforest.ASMHooks#isRainingAt}
*/
public class IsRainingAtTransformer implements ITransformer<MethodNode> {

@Override
public @NotNull MethodNode transform(MethodNode node, ITransformerVotingContext context) {
AsmUtil.findInstructions(
node,
Opcodes.IRETURN
).forEach(target -> node.instructions.insertBefore(
target,
ASMAPI.listOf(
new VarInsnNode(Opcodes.ALOAD, 0),
new VarInsnNode(Opcodes.ALOAD, 1),
new MethodInsnNode(
Opcodes.INVOKESTATIC,
"twilightforest/ASMHooks",
"isRainingAt",
"(ZLnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)Z"
)
)
));
return node;
}

@Override
public @NotNull TransformerVoteResult castVote(ITransformerVotingContext context) {
return TransformerVoteResult.YES;
}

@Override
public @NotNull Set<Target<MethodNode>> targets() {
return Set.of(Target.targetMethod(
"net.minecraft.world.level.Level",
"isRainingAt",
"(Lnet/minecraft/core/BlockPos;)Z"
));
}

@Override
public @NotNull TargetType<MethodNode> getTargetType() {
return TargetType.METHOD;
}

}

0 comments on commit d2d7bc9

Please sign in to comment.