Skip to content

Commit 13b6eff

Browse files
committed
Add SetFireTimeEntityModifier
1 parent 6d26a2d commit 13b6eff

2 files changed

Lines changed: 51 additions & 4 deletions

File tree

src/main/java/errorcraft/entitymodifiers/entity/modifier/EntityModifierTypes.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package errorcraft.entitymodifiers.entity.modifier;
22

3-
import errorcraft.entitymodifiers.entity.modifier.modifiers.SetAirTimeEntityModifier;
4-
import errorcraft.entitymodifiers.entity.modifier.modifiers.SetHealthEntityModifier;
5-
import errorcraft.entitymodifiers.entity.modifier.modifiers.SetHungerEntityModifier;
6-
import errorcraft.entitymodifiers.entity.modifier.modifiers.SetInvulnerableEntityModifier;
3+
import errorcraft.entitymodifiers.entity.modifier.modifiers.*;
74
import errorcraft.entitymodifiers.mixin.registry.RegistryAccessor;
85
import net.minecraft.util.Identifier;
96
import net.minecraft.util.JsonSerializing;
@@ -18,6 +15,7 @@ public class EntityModifierTypes {
1815
public static final EntityModifierType SET_HEALTH = register("set_health", new SetHealthEntityModifier.Serialiser());
1916
public static final EntityModifierType SET_HUNGER = register("set_hunger", new SetHungerEntityModifier.Serialiser());
2017
public static final EntityModifierType SET_AIR_TIME = register("set_air_time", new SetAirTimeEntityModifier.Serialiser());
18+
public static final EntityModifierType SET_FIRE_TIME = register("set_fire_time", new SetFireTimeEntityModifier.Serialiser());
2119

2220
public static Object createGsonAdapter() {
2321
return JsonSerializing.createSerializerBuilder(ENTITY_MODIFIER_TYPE, "function", "function", EntityModifier::getType).build();
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package errorcraft.entitymodifiers.entity.modifier.modifiers;
2+
3+
import com.google.gson.JsonDeserializationContext;
4+
import com.google.gson.JsonObject;
5+
import com.google.gson.JsonSerializationContext;
6+
import errorcraft.entitymodifiers.entity.modifier.EntityModifier;
7+
import errorcraft.entitymodifiers.entity.modifier.EntityModifierType;
8+
import errorcraft.entitymodifiers.entity.modifier.EntityModifierTypes;
9+
import net.minecraft.entity.Entity;
10+
import net.minecraft.loot.context.LootContext;
11+
import net.minecraft.loot.provider.number.LootNumberProvider;
12+
import net.minecraft.util.JsonHelper;
13+
14+
public class SetFireTimeEntityModifier implements EntityModifier {
15+
private final LootNumberProvider fireTimeProvider;
16+
private final boolean add;
17+
18+
public SetFireTimeEntityModifier(LootNumberProvider fireTimeProvider, boolean add) {
19+
this.fireTimeProvider = fireTimeProvider;
20+
this.add = add;
21+
}
22+
23+
@Override
24+
public EntityModifierType getType() {
25+
return EntityModifierTypes.SET_FIRE_TIME;
26+
}
27+
28+
@Override
29+
public Entity apply(Entity entity, LootContext lootContext) {
30+
int newFireTime = this.add ? entity.getFireTicks() : 0;
31+
entity.setFireTicks(newFireTime + this.fireTimeProvider.nextInt(lootContext));
32+
return entity;
33+
}
34+
35+
public static class Serialiser implements EntityModifier.Serialiser<SetFireTimeEntityModifier> {
36+
@Override
37+
public void toJson(JsonObject json, SetFireTimeEntityModifier object, JsonSerializationContext context) {
38+
json.add("time", context.serialize(object.fireTimeProvider));
39+
json.addProperty("add", object.add);
40+
}
41+
42+
@Override
43+
public SetFireTimeEntityModifier fromJson(JsonObject json, JsonDeserializationContext context) {
44+
LootNumberProvider fireTimeProvider = JsonHelper.deserialize(json, "time", context, LootNumberProvider.class);
45+
boolean add = JsonHelper.getBoolean(json, "add", false);
46+
return new SetFireTimeEntityModifier(fireTimeProvider, add);
47+
}
48+
}
49+
}

0 commit comments

Comments
 (0)