Skip to content

Commit 0052b2e

Browse files
authored
Merge pull request #79 from bigsir24/stats-fix
Delay item stats initialization
2 parents 2414736 + 14593d2 commit 0052b2e

5 files changed

Lines changed: 37 additions & 0 deletions

File tree

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package turniplabs.halplibe.mixin;
2+
3+
import net.minecraft.core.item.Items;
4+
import org.spongepowered.asm.mixin.Mixin;
5+
import org.spongepowered.asm.mixin.injection.At;
6+
import org.spongepowered.asm.mixin.injection.Redirect;
7+
8+
@Mixin(value = Items.class ,remap = false)
9+
public abstract class ItemsMixin {
10+
@Redirect(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/item/Items;initStats()V"))
11+
private static void delayInitStats() {}
12+
}

src/main/java/turniplabs/halplibe/mixin/MinecraftMixin.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.spongepowered.asm.mixin.injection.Inject;
99
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1010
import turniplabs.halplibe.helper.network.NetworkHandler;
11+
import turniplabs.halplibe.mixin.accessors.ItemsAccessor;
1112
import turniplabs.halplibe.util.*;
1213

1314
@Mixin(
@@ -46,6 +47,11 @@ public void afterItemInitEntrypoint(CallbackInfo ci) {
4647
FabricLoader.getInstance().getEntrypoints("afterItemInit", ItemInitEntrypoint.class).forEach(ItemInitEntrypoint::afterItemInit);
4748
}
4849

50+
@Inject(method = "startGame", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/achievement/stat/StatList;init()V"))
51+
public void initStats(CallbackInfo ci) {
52+
ItemsAccessor.invokeInitStats();
53+
}
54+
4955
@Inject(method = "printWrongJavaVersionInfo", at = @At("HEAD"), cancellable = true)
5056
private void printWrongJavaVersionInfo(CallbackInfo ci) {
5157
if (Minecraft.getOs() == EnumOS.linux){

src/main/java/turniplabs/halplibe/mixin/MinecraftServerMixin.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.spongepowered.asm.mixin.injection.Inject;
1010
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1111
import turniplabs.halplibe.helper.network.NetworkHandler;
12+
import turniplabs.halplibe.mixin.accessors.ItemsAccessor;
1213
import turniplabs.halplibe.util.BlockInitEntrypoint;
1314
import turniplabs.halplibe.util.GameStartEntrypoint;
1415
import turniplabs.halplibe.util.ItemInitEntrypoint;
@@ -46,6 +47,11 @@ public void afterItemInitEntrypoint(CallbackInfoReturnable<Boolean> cir) {
4647
FabricLoader.getInstance().getEntrypoints("afterItemInit", ItemInitEntrypoint.class).forEach(ItemInitEntrypoint::afterItemInit);
4748
}
4849

50+
@Inject(method = "startServer", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/achievement/stat/StatList;init()V"))
51+
public void initStats(CallbackInfoReturnable<Boolean> cir) {
52+
ItemsAccessor.invokeInitStats();
53+
}
54+
4955
/*
5056
* @author sunsetsatellite
5157
* @reason begone log4j (this fixes logging not existing on a modded server at the cost of no gui)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package turniplabs.halplibe.mixin.accessors;
2+
3+
import net.minecraft.core.item.Items;
4+
import org.spongepowered.asm.mixin.Mixin;
5+
import org.spongepowered.asm.mixin.gen.Invoker;
6+
7+
@Mixin(value = Items.class, remap = false)
8+
public interface ItemsAccessor {
9+
@Invoker
10+
static void invokeInitStats() {}
11+
}

src/main/resources/halplibe.mixins.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
"compatibilityLevel": "JAVA_8",
66
"mixins": [
77
"I18nMixin",
8+
"ItemsMixin",
89
"MobCreeperMixin",
910
"accessors.BlockAccessor",
1011
"accessors.BlocksAccessor",
12+
"accessors.ItemsAccessor",
1113
"accessors.LanguageAccessor",
1214
"accessors.WeightedRandomBagAccessor",
1315
"accessors.WeightedRandomBagEntryAccessor"

0 commit comments

Comments
 (0)