Skip to content

Commit a96964c

Browse files
committed
暂时修复一个崩溃问题,需要进一步测试。
1 parent 3be2cb8 commit a96964c

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ loader_version=0.16.10
1111
fabric_version=0.92.3+1.20.1
1212

1313
# Mod Properties
14-
mod_version=1.3.7+1.20.1
14+
mod_version=1.3.8+1.20.1
1515
maven_group=fun.qu_an.minecraft
1616
archives_base_name=asyncparticles
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,38 @@
11
package fun.qu_an.minecraft.asyncparticles.client.mixin;
22

3+
import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
35
import fun.qu_an.minecraft.asyncparticles.client.AsyncTicker;
46
import net.minecraft.client.sounds.SoundEngine;
7+
import org.slf4j.Logger;
8+
import org.spongepowered.asm.mixin.Final;
59
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.Shadow;
611
import org.spongepowered.asm.mixin.injection.At;
712
import org.spongepowered.asm.mixin.injection.Inject;
813
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
914

1015
@Mixin(SoundEngine.class)
1116
public class MixinSoundEngine {
12-
// @Inject(method = "tick", at = @At("HEAD"), cancellable = true)
13-
// private void onTick(boolean bl, CallbackInfo ci) {
14-
// // TODO: 是否可以异步?(一些 mod 频繁播放音效会导致卡顿)
15-
// if (!AsyncTicker.shouldTickParticles) {
16-
// ci.cancel();
17-
// }
18-
// }
17+
@Shadow
18+
@Final
19+
private static Logger LOGGER;
20+
21+
@Inject(method = "tick", at = @At("HEAD"), cancellable = true)
22+
private void onTick(boolean bl, CallbackInfo ci) {
23+
// TODO: 是否可以异步?(一些 mod 频繁播放音效会导致卡顿)
24+
if (!AsyncTicker.shouldTickParticles) {
25+
ci.cancel();
26+
}
27+
}
28+
29+
@WrapMethod(method = "tick")
30+
private void wrapTick(boolean bl, Operation<Void> original) {
31+
try {
32+
// FIXME: 查明原因
33+
original.call(bl);
34+
} catch (NullPointerException e) {
35+
LOGGER.error("Error while ticking particles", e);
36+
}
37+
}
1938
}

0 commit comments

Comments
 (0)