Skip to content

Commit 445f424

Browse files
committed
Use number providers where numbers were previously used in entity modifiers
1 parent ff72116 commit 445f424

2 files changed

Lines changed: 20 additions & 18 deletions

File tree

src/main/java/errorcraft/entitymodifiers/entity/modifier/modifiers/SetHealthEntityModifier.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@
99
import net.minecraft.entity.Entity;
1010
import net.minecraft.entity.LivingEntity;
1111
import net.minecraft.loot.context.LootContext;
12+
import net.minecraft.loot.provider.number.LootNumberProvider;
1213
import net.minecraft.util.JsonHelper;
1314

1415
public class SetHealthEntityModifier implements EntityModifier {
15-
private final float health;
16+
private final LootNumberProvider healthProvider;
1617
private final boolean add;
1718

18-
public SetHealthEntityModifier(float health, boolean add) {
19-
this.health = health;
19+
public SetHealthEntityModifier(LootNumberProvider healthProvider, boolean add) {
20+
this.healthProvider = healthProvider;
2021
this.add = add;
2122
}
2223

@@ -28,28 +29,28 @@ public EntityModifierType getType() {
2829
@Override
2930
public Entity apply(Entity entity, LootContext lootContext) {
3031
if (entity instanceof LivingEntity livingEntity) {
31-
setHealth(livingEntity);
32+
setHealth(livingEntity, lootContext);
3233
}
3334
return entity;
3435
}
3536

36-
private void setHealth(LivingEntity livingEntity) {
37+
private void setHealth(LivingEntity livingEntity, LootContext lootContext) {
3738
float newHealth = this.add ? livingEntity.getHealth() : 0.0f;
38-
livingEntity.setHealth(newHealth + this.health);
39+
livingEntity.setHealth(newHealth + this.healthProvider.nextFloat(lootContext));
3940
}
4041

4142
public static class Serialiser implements EntityModifier.Serialiser<SetHealthEntityModifier> {
4243
@Override
4344
public void toJson(JsonObject json, SetHealthEntityModifier object, JsonSerializationContext context) {
44-
json.addProperty("health", object.health);
45+
json.add("health", context.serialize(object.healthProvider));
4546
json.addProperty("add", object.add);
4647
}
4748

4849
@Override
4950
public SetHealthEntityModifier fromJson(JsonObject json, JsonDeserializationContext context) {
50-
float health = JsonHelper.getFloat(json, "health");
51+
LootNumberProvider healthProvider = JsonHelper.deserialize(json, "health", context, LootNumberProvider.class);
5152
boolean add = JsonHelper.getBoolean(json, "add", false);
52-
return new SetHealthEntityModifier(health, add);
53+
return new SetHealthEntityModifier(healthProvider, add);
5354
}
5455
}
5556
}

src/main/java/errorcraft/entitymodifiers/entity/modifier/modifiers/SetHungerEntityModifier.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,16 @@
1010
import net.minecraft.entity.player.HungerManager;
1111
import net.minecraft.entity.player.PlayerEntity;
1212
import net.minecraft.loot.context.LootContext;
13+
import net.minecraft.loot.provider.number.LootNumberProvider;
1314
import net.minecraft.util.JsonHelper;
1415
import net.minecraft.util.math.MathHelper;
1516

1617
public 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

Comments
 (0)