/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.common.items;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import mods.railcraft.api.carts.CartTools;
import mods.railcraft.api.core.IOwnable;
import mods.railcraft.api.signals.SignalAspect;
import mods.railcraft.common.blocks.machine.TileMultiBlock;
import mods.railcraft.common.blocks.machine.TileMultiBlock.MultiBlockStateReturn;
import mods.railcraft.common.blocks.signals.IDualHeadSignal;
import mods.railcraft.common.blocks.signals.TileSignalBase;
import mods.railcraft.common.core.RailcraftConfig;
import mods.railcraft.common.plugins.forge.*;
import mods.railcraft.common.util.misc.Game;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityMinecart;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.EntityInteractEvent;
import java.util.EnumSet;
import java.util.List;
/**
* @author CovertJaguar <http://www.railcraft.info>
*/
public class ItemMagnifyingGlass extends ItemRailcraft implements IActivationBlockingItem {
public static Item item;
public ItemMagnifyingGlass() {
setMaxDamage(0);
setMaxStackSize(1);
setUnlocalizedName("railcraft.tool.magnifying.glass");
setFull3D();
MinecraftForge.EVENT_BUS.register(this);
setCreativeTab(CreativePlugin.RAILCRAFT_TAB);
}
public static void register() {
if (item == null) {
String tag = "tool.magnifying.glass";
if (RailcraftConfig.isItemEnabled(tag)) {
item = new ItemMagnifyingGlass();
RailcraftRegistry.register(item);
CraftingPlugin.addShapedRecipe(new ItemStack(item),
" G",
"S ",
'S', "stickWood",
'G', "paneGlassColorless"
);
LootPlugin.addLootWorkshop(new ItemStack(item), 1, 1, tag);
}
}
}
public static ItemStack getItem() {
if (item == null)
return null;
return new ItemStack(item);
}
@SubscribeEvent
public void onEntityInteract(EntityInteractEvent event) {
EntityPlayer thePlayer = event.entityPlayer;
Entity entity = event.target;
ItemStack stack = thePlayer.getCurrentEquippedItem();
if (stack != null && stack.getItem() instanceof ItemMagnifyingGlass)
thePlayer.swingItem();
if (Game.isNotHost(thePlayer.worldObj))
return;
if (stack != null && stack.getItem() instanceof ItemMagnifyingGlass)
if (entity instanceof EntityMinecart) {
EntityMinecart cart = (EntityMinecart) entity;
ChatPlugin.sendLocalizedChatFromServer(thePlayer, "railcraft.gui.mag.glass.placedby", LocalizationPlugin.getEntityLocalizationTag(cart), CartTools.getCartOwner(cart));
event.setCanceled(true);
}
}
@Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
if (Game.isNotHost(world))
return false;
TileEntity t = world.getTileEntity(x, y, z);
boolean returnValue = false;
if (t instanceof IOwnable) {
IOwnable ownable = (IOwnable) t;
ChatPlugin.sendLocalizedChatFromServer(player, "railcraft.gui.mag.glass.placedby", ownable.getLocalizationTag(), ownable.getOwner());
returnValue = true;
}
if (t instanceof TileMultiBlock) {
TileMultiBlock tile = (TileMultiBlock) t;
if (tile.isStructureValid())
ChatPlugin.sendLocalizedChatFromServer(player, "railcraft.multiblock.state.valid");
else
for (MultiBlockStateReturn returnState : EnumSet.complementOf(EnumSet.of(MultiBlockStateReturn.VALID))) {
List<Integer> pats = tile.patternStates.get(returnState);
if (!pats.isEmpty())
ChatPlugin.sendLocalizedChatFromServer(player, returnState.message, pats.toString());
}
returnValue = true;
}
if (t instanceof IDualHeadSignal) {
IDualHeadSignal signal = (IDualHeadSignal) t;
SignalAspect top = signal.getTopAspect();
SignalAspect bottom = signal.getBottomAspect();
ChatPlugin.sendLocalizedChatFromServer(player, "railcraft.gui.mag.glass.aspect.dual", top.getLocalizationTag(), bottom.getLocalizationTag());
returnValue = true;
} else if (t instanceof TileSignalBase) {
ChatPlugin.sendLocalizedChatFromServer(player, "railcraft.gui.mag.glass.aspect", ((TileSignalBase) t).getSignalAspect().getLocalizationTag());
returnValue = true;
}
return returnValue;
}
}