-
Notifications
You must be signed in to change notification settings - Fork 754
/
BurstingModifier.java
40 lines (34 loc) · 1.77 KB
/
BurstingModifier.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package slimeknights.tconstruct.tools.modifiers.ability.fluid;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import slimeknights.tconstruct.library.modifiers.ModifierEntry;
import slimeknights.tconstruct.library.modifiers.ModifierHooks;
import slimeknights.tconstruct.library.modifiers.fluid.FluidEffectContext;
import slimeknights.tconstruct.library.modifiers.hook.armor.OnAttackedModifierHook;
import slimeknights.tconstruct.library.module.ModuleHookMap.Builder;
import slimeknights.tconstruct.library.tools.context.EquipmentContext;
import slimeknights.tconstruct.library.tools.nbt.IToolStackView;
import javax.annotation.Nullable;
import static slimeknights.tconstruct.library.tools.helper.ModifierUtil.asLiving;
/** Modifier to handle spilling recipes */
public class BurstingModifier extends UseFluidOnHitModifier implements OnAttackedModifierHook {
@Override
protected void registerHooks(Builder hookBuilder) {
super.registerHooks(hookBuilder);
hookBuilder.addHook(this, ModifierHooks.ON_ATTACKED);
}
@Override
public FluidEffectContext.Entity createContext(LivingEntity self, @Nullable Player player, @Nullable Entity attacker) {
assert attacker != null;
return new FluidEffectContext.Entity(self.level, self, player, null, attacker, asLiving(attacker));
}
@Override
public void onAttacked(IToolStackView tool, ModifierEntry modifier, EquipmentContext context, EquipmentSlot slotType, DamageSource source, float amount, boolean isDirectDamage) {
if (source.getEntity() != null && isDirectDamage) {
useFluid(tool, modifier, context, slotType, source);
}
}
}