User Tools

Site Tools


tutorial:stats

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
tutorial:stats [2021/02/08 18:46] – created jummittutorial:stats [2026/01/08 21:31] (current) – Mojang mappings and fixes for incorrect identifier cassiancc
Line 4: Line 4:
 To add a custom statistic, create an identifier which will be used to register and increase the stat: To add a custom statistic, create an identifier which will be used to register and increase the stat:
 <code java> <code java>
-public static final Identifier INTERACT_WITH_COOL_BLOCK = new Identifier("modid", "interact_with_cool_block");+public static final Identifier INTERACT_WITH_COOL_BLOCK = Identifier.fromNamespaceAndPath("example-mod", "interact_with_cool_block");
 </code> </code>
  
Line 11: Line 11:
 Then register the stat using the identifier: Then register the stat using the identifier:
 <code java> <code java>
-Registry.register(Registry.CUSTOM_STAT, "interact_with_cool_block", INTERACT_WITH_COOL_BLOCK);+Registry.register(BuiltInRegistries.CUSTOM_STAT, INTERACT_WITH_COOL_BLOCK, INTERACT_WITH_COOL_BLOCK);
 </code> </code>
  
-Then specify the stat formatter. It determines how the number is shown in the Statistics screen. You can use DEFAULT, DIVIDE_BY_TEN, DISTANCE or TIME.+Then add the stat to the statistic screen, where you can also specify the stat formatter. It determines how the number is shown in the stat list. You can use DEFAULT, DIVIDE_BY_TEN, DISTANCE or TIME.
  
 <code java> <code java>
-Stats.CUSTOM.getOrCreateStat(INTERACT_WITH_COOL_BLOCK, StatFormatter.DEFAULT);+Stats.CUSTOM.get(INTERACT_WITH_COOL_BLOCK, StatFormatter.DEFAULT);
 </code> </code>
  
 ===== Using The Statistic ===== ===== Using The Statistic =====
  
-To increment the statistic, for example when a player interacts with a block, you can use ''PlayerEntity::incrementStat'':+To increment the statistic, for example when a player interacts with a block, you can use ''Player::awardStat'':
  
 <code java> <code java>
 @Override @Override
-public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, +public ActionResult onUse(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { 
- BlockHitResult hit) { + player.awardStat(ModClass.INTERACT_WITH_COOL_BLOCK);
- if (!world.isClient) { +
- player.incrementStat(ModClass.INTERACT_WITH_COOL_BLOCK); +
- }+
  
- return ActionResult.SUCCESS;+ return InteractionResult.SUCCESS;
 } }
 </code> </code>
  
-You can also use ''PlayerEntity.increaseStat(stat, amount)'' to increase the stat by an arbitrary amount.+You can also use ''Player.awardStat(stat, amount)'' to increase the stat by an arbitrary amount.
  
 ===== Translation ===== ===== Translation =====
  
-To translate the name, add an entry for ''stat.modid.statid'' (see [[tutorial:lang]] for how to translate the statistic.):+To translate the name, add an entry for ''stat.example-mod.statid'' (see [[tutorial:lang]] for how to translate the statistic.):
  
 <code json> <code json>
 { {
-  "stat.modid.interact_with_cool_block": "Interactions with Cool Block"+  "stat.example-mod.interact_with_cool_block": "Interactions with Cool Block"
 } }
 </code> </code>
  
tutorial/stats.1612810010.txt.gz · Last modified: 2021/02/08 18:46 by jummit