如何获取Minecraft Fabric模组中自定义玩家统计数据的值?
获取Fabric模组自定义玩家统计值的方法
你已经完成了自定义统计的注册和增量逻辑:
自定义统计注册代码
public class ModStats { public static final Identifier MINING_STAT = new Identifier(ExampleMod.MOD_ID, "mining_stat"); public static void registerModStats() { Registry.register(Registries.CUSTOM_STAT, "mining_stat", MINING_STAT); Stats.CUSTOM.getOrCreateStat(MINING_STAT, StatFormatter.DEFAULT); } }
统计增量的Mixin实现
@Mixin(MiningToolItem.class) public class MiningToolItemMixin { @Inject(at = @At("TAIL"), method = "postMine") private void postMine(ItemStack stack, World world, BlockState state, BlockPos pos, LivingEntity miner, CallbackInfoReturnable<Boolean> info) { if (miner instanceof PlayerEntity player) { player.incrementStat(ModStats.MINING_STAT); } System.out.println("MiningToolItemMixin"); } }
要获取该自定义统计的值,只需通过PlayerEntity的getStatHandler()方法拿到统计处理器,再调用getStat()传入你的自定义统计标识符即可:
// 假设已获取PlayerEntity实例player StatHandler statHandler = player.getStatHandler(); int miningCount = statHandler.getStat(ModStats.MINING_STAT);
也可以简化为一行代码:
int miningCount = player.getStatHandler().getStat(ModStats.MINING_STAT);
如果需要读取离线玩家的统计数据,可通过PlayerManager加载玩家数据后,同样使用StatHandler获取对应值。
内容的提问来源于stack exchange,提问作者Philipp
相关产品推荐
相关产品推荐

