ProjectZombie/src/projectzombie/items/ItemTorch.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";
}
}