1010import net .minecraft .entity .player .HungerManager ;
1111import net .minecraft .entity .player .PlayerEntity ;
1212import net .minecraft .loot .context .LootContext ;
13+ import net .minecraft .loot .provider .number .LootNumberProvider ;
1314import net .minecraft .util .JsonHelper ;
1415import net .minecraft .util .math .MathHelper ;
1516
1617public class SetHungerEntityModifier implements EntityModifier {
17- private final int hunger ;
18+ private final LootNumberProvider hungerProvider ;
1819 private final boolean add ;
1920
20- public SetHungerEntityModifier (int hunger , boolean add ) {
21- this .hunger = hunger ;
21+ public SetHungerEntityModifier (LootNumberProvider hungerProvider , boolean add ) {
22+ this .hungerProvider = hungerProvider ;
2223 this .add = add ;
2324 }
2425
@@ -30,29 +31,29 @@ public EntityModifierType getType() {
3031 @ Override
3132 public Entity apply (Entity entity , LootContext lootContext ) {
3233 if (entity instanceof PlayerEntity player ) {
33- setHunger (player );
34+ setHunger (player , lootContext );
3435 }
3536 return entity ;
3637 }
3738
38- private void setHunger (PlayerEntity player ) {
39+ private void setHunger (PlayerEntity player , LootContext lootContext ) {
3940 HungerManager hungerManager = player .getHungerManager ();
4041 int newHunger = this .add ? hungerManager .getFoodLevel () : 0 ;
41- hungerManager .setFoodLevel (MathHelper .clamp (newHunger + this .hunger , 0 , 20 ));
42+ hungerManager .setFoodLevel (MathHelper .clamp (newHunger + this .hungerProvider . nextInt ( lootContext ) , 0 , 20 ));
4243 }
4344
4445 public static class Serialiser implements EntityModifier .Serialiser <SetHungerEntityModifier > {
4546 @ Override
4647 public void toJson (JsonObject json , SetHungerEntityModifier object , JsonSerializationContext context ) {
47- json .addProperty ("hunger" , object .hunger );
48+ json .add ("hunger" , context . serialize ( object .hungerProvider ) );
4849 json .addProperty ("add" , object .add );
4950 }
5051
5152 @ Override
5253 public SetHungerEntityModifier fromJson (JsonObject json , JsonDeserializationContext context ) {
53- int hunger = JsonHelper .getInt (json , "hunger" );
54+ LootNumberProvider hungerProvider = JsonHelper .deserialize (json , "hunger" , context , LootNumberProvider . class );
5455 boolean add = JsonHelper .getBoolean (json , "add" , false );
55- return new SetHungerEntityModifier (hunger , add );
56+ return new SetHungerEntityModifier (hungerProvider , add );
5657 }
5758 }
5859}
0 commit comments