131 lines
2.9 KiB
Java
131 lines
2.9 KiB
Java
package projectzombie.items;
|
|
|
|
import gl_engine.vec.Vec2d;
|
|
import projectzombie.entity.player.EntityPlayer;
|
|
import projectzombie.init.Models;
|
|
import projectzombie.items.modifier.ItemModifier;
|
|
import projectzombie.items.modifier.ItemModifierClickCooldown;
|
|
import projectzombie.items.modifier.ItemModifierDamage;
|
|
import projectzombie.items.modifier.ItemModifierMeta;
|
|
import projectzombie.items.modifier.ItemModifierTimer;
|
|
import projectzombie.items.modifier.ItemModifierTimerPaused;
|
|
import projectzombie.model.ModelItem;
|
|
import projectzombie.util.ItemStack;
|
|
import projectzombie.world.layer.Layer;
|
|
|
|
public class ItemTorch extends Item
|
|
{
|
|
|
|
@Override
|
|
public ModelItem getModel(ItemStack stack)
|
|
{
|
|
if(ItemModifierMeta.getStackMeta(stack) == 1) {
|
|
return Models.ITEM_TORCH_LIT;
|
|
}
|
|
|
|
else {
|
|
return Models.ITEM_TORCH_UNLIT;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public double getDamage(ItemStack stack)
|
|
{
|
|
if(ItemModifierMeta.getStackMeta(stack) == 0)
|
|
{
|
|
ItemModifierTimerPaused timer = (ItemModifierTimerPaused)stack.getModifier(ItemModifierTimerPaused.class);
|
|
|
|
if(timer == null) {
|
|
return 0;
|
|
}
|
|
|
|
return timer.getDamage();
|
|
}
|
|
|
|
else
|
|
{
|
|
ItemModifierTimer timer = (ItemModifierTimer)stack.getModifier(ItemModifierTimer.class);
|
|
|
|
if(timer == null) {
|
|
return 0;
|
|
}
|
|
|
|
return timer.getDamage();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos)
|
|
{
|
|
ItemModifierClickCooldown cooldown = (ItemModifierClickCooldown)
|
|
stack.getModifier(ItemModifierClickCooldown.class);
|
|
|
|
if(cooldown != null && !cooldown.canClick()) {
|
|
return true;
|
|
}
|
|
|
|
else if(cooldown == null) {
|
|
cooldown = new ItemModifierClickCooldown(500);
|
|
}
|
|
|
|
cooldown.click();
|
|
|
|
if(ItemModifierMeta.getStackMeta(stack) == 0)
|
|
{
|
|
ItemModifierTimerPaused timer_p = (ItemModifierTimerPaused)
|
|
stack.getModifier(ItemModifierTimerPaused.class);
|
|
ItemModifierTimer timer;
|
|
|
|
if(timer_p == null) {
|
|
timer = new ItemModifierTimer(12000);
|
|
}
|
|
|
|
else {
|
|
timer = timer_p.resume();
|
|
}
|
|
|
|
stack.modifiers = new ItemModifier[] {new ItemModifierMeta(1), timer, cooldown};
|
|
}
|
|
|
|
else
|
|
{
|
|
ItemModifierTimer timer = (ItemModifierTimer)stack.getModifier(ItemModifierTimer.class);
|
|
|
|
if(timer == null) {
|
|
timer = new ItemModifierTimer(12000);
|
|
}
|
|
|
|
stack.modifiers = new ItemModifier[] {new ItemModifierMeta(0), timer.pause(), cooldown};
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public boolean isEmpty(ItemStack stack)
|
|
{
|
|
if(ItemModifierMeta.getStackMeta(stack) != 1) {
|
|
return false;
|
|
}
|
|
|
|
ItemModifierTimer timer = (ItemModifierTimer)stack.getModifier(ItemModifierTimer.class);
|
|
|
|
if(timer == null) {
|
|
return false;
|
|
}
|
|
|
|
return timer.getDamage() > 1;
|
|
}
|
|
|
|
@Override
|
|
public double getLightLevel(ItemStack stack) {
|
|
return ItemModifierMeta.getStackMeta(stack) == 1 ? 1 : 0;
|
|
}
|
|
|
|
@Override
|
|
public String getName(ItemStack stack) {
|
|
return "Torch";
|
|
}
|
|
|
|
}
|