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"; } }