mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
108 lines
2.4 KiB
Java
108 lines
2.4 KiB
Java
package com.hbm.handler;
|
|
|
|
import com.hbm.items.tool.ItemToolAbility;
|
|
import com.hbm.lib.Library;
|
|
|
|
import net.minecraft.client.resources.I18n;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.potion.Potion;
|
|
import net.minecraft.potion.PotionEffect;
|
|
import net.minecraft.world.World;
|
|
|
|
public abstract class WeaponAbility {
|
|
|
|
public abstract void onHit(World world, EntityPlayer player, Entity victim, ItemToolAbility tool);
|
|
public abstract String getName();
|
|
public abstract String getFullName();
|
|
|
|
public static class RadiationAbility extends WeaponAbility {
|
|
|
|
float rad;
|
|
|
|
public RadiationAbility(float rad) {
|
|
this.rad = rad;
|
|
}
|
|
|
|
@Override
|
|
public void onHit(World world, EntityPlayer player, Entity victim, ItemToolAbility tool) {
|
|
|
|
Library.applyRadData(victim, rad);
|
|
}
|
|
|
|
@Override
|
|
public String getName() {
|
|
return "weapon.ability.radiation";
|
|
}
|
|
|
|
@Override
|
|
public String getFullName() {
|
|
return I18n.format(getName()) + " (" + rad + ")";
|
|
}
|
|
}
|
|
|
|
public static class VampireAbility extends WeaponAbility {
|
|
|
|
float amount;
|
|
|
|
public VampireAbility(float amount) {
|
|
this.amount = amount;
|
|
}
|
|
|
|
@Override
|
|
public void onHit(World world, EntityPlayer player, Entity victim, ItemToolAbility tool) {
|
|
|
|
if(victim instanceof EntityLivingBase) {
|
|
|
|
EntityLivingBase living = (EntityLivingBase) victim;
|
|
|
|
living.setHealth(living.getHealth() - amount);
|
|
player.heal(amount);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String getName() {
|
|
return "weapon.ability.vampire";
|
|
}
|
|
|
|
@Override
|
|
public String getFullName() {
|
|
return I18n.format(getName()) + " (" + amount + ")";
|
|
}
|
|
}
|
|
|
|
public static class StunAbility extends WeaponAbility {
|
|
|
|
int duration;
|
|
|
|
public StunAbility(int duration) {
|
|
this.duration = duration;
|
|
}
|
|
|
|
@Override
|
|
public void onHit(World world, EntityPlayer player, Entity victim, ItemToolAbility tool) {
|
|
|
|
if(victim instanceof EntityLivingBase) {
|
|
|
|
EntityLivingBase living = (EntityLivingBase) victim;
|
|
|
|
living.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, duration * 20, 4));
|
|
living.addPotionEffect(new PotionEffect(Potion.weakness.id, duration * 20, 4));
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String getName() {
|
|
return "weapon.ability.stun";
|
|
}
|
|
|
|
@Override
|
|
public String getFullName() {
|
|
return I18n.format(getName()) + " (" + duration + ")";
|
|
}
|
|
}
|
|
|
|
}
|