BloodMagic/src/main/java/WayofTime/bloodmagic/event/SoulNetworkEvent.java

86 lines
2.9 KiB
Java
Raw Normal View History

package WayofTime.bloodmagic.event;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.eventhandler.Cancelable;
2015-07-29 08:23:01 -04:00
import net.minecraftforge.fml.common.eventhandler.Event;
import javax.annotation.Nullable;
/**
* Base event class for Soul Network related events.
2017-08-15 21:30:48 -07:00
* <p>
2016-04-05 16:16:17 -04:00
* {@link #ownerUUID} contains the owner's UUID {@link #syphon} contains the
* amount of LP to be drained
*/
2017-08-15 21:30:48 -07:00
public class SoulNetworkEvent extends Event {
public final String ownerUUID;
public int syphon;
2017-08-15 21:30:48 -07:00
public SoulNetworkEvent(String ownerUUID, int syphon) {
this.ownerUUID = ownerUUID;
this.syphon = syphon;
}
/**
2016-04-05 16:16:17 -04:00
* This event is called when an
* {@link WayofTime.bloodmagic.apibutnotreally.impl.ItemBindable} is being drained
2016-04-05 16:16:17 -04:00
* inside of a {@link net.minecraft.tileentity.TileEntity}.
2017-08-15 21:30:48 -07:00
* <p>
* If canceled, the drain will not be executed.
*/
@Cancelable
2017-08-15 21:30:48 -07:00
public static class ItemDrainInContainerEvent extends SoulNetworkEvent {
public ItemStack stack;
2017-08-15 21:30:48 -07:00
public ItemDrainInContainerEvent(ItemStack stack, String ownerName, int syphon) {
super(ownerName, syphon);
this.stack = stack;
}
}
/**
2016-04-05 16:16:17 -04:00
* This event is called when a {@link EntityPlayer} drains the Soul Network
2017-08-15 21:30:48 -07:00
* <p>
* If canceled, the drain will not be executed.
*/
@Cancelable
2017-08-15 21:30:48 -07:00
public static class PlayerDrainNetworkEvent extends SoulNetworkEvent {
public final EntityPlayer player;
2016-01-01 10:34:17 +01:00
// If true, will damage regardless of if the network had enough inside it
public boolean shouldDamage;
2017-08-15 21:30:48 -07:00
public PlayerDrainNetworkEvent(EntityPlayer player, String ownerNetwork, int drainAmount) {
super(ownerNetwork, drainAmount);
this.shouldDamage = false;
this.player = player;
}
}
@Cancelable
2017-08-15 21:30:48 -07:00
public static class ItemDrainNetworkEvent extends PlayerDrainNetworkEvent {
@Nullable
public final ItemStack itemStack;
2016-01-01 10:34:17 +01:00
/**
* Amount of damage that would incur if the network could not drain
* properly
*/
public float damageAmount;
/**
* Set result to deny the action i.e. damage/drain anyways. Cancelling
* event prevents action without penalties
2017-08-15 21:30:48 -07:00
*
* @param player Player using the item
* @param ownerNetwork Network that the item is tied to
* @param itemStack Item used
* @param drainAmount Original drain amount - change to alter cost
*/
2017-08-15 21:30:48 -07:00
public ItemDrainNetworkEvent(EntityPlayer player, String ownerNetwork, @Nullable ItemStack itemStack, int drainAmount) {
super(player, ownerNetwork, drainAmount);
this.itemStack = itemStack;
this.damageAmount = (float) (drainAmount) / 100.0f;
}
}
}