package mods.railcraft.common.items;
import mods.railcraft.api.signals.AbstractPair;
import mods.railcraft.api.signals.IControllerTile;
import mods.railcraft.api.signals.IReceiverTile;
import mods.railcraft.api.signals.ISignalBlockTile;
import mods.railcraft.common.plugins.forge.CraftingPlugin;
import mods.railcraft.common.plugins.forge.PlayerPlugin;
import mods.railcraft.common.util.misc.Game;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import java.util.HashSet;
import java.util.Set;
/**
* @author Vexatos
*/
public class ItemSignalLabel extends ItemRailcraft {
@Override
public void defineRecipes() {
CraftingPlugin.addShapelessRecipe(new ItemStack(this), Items.paper, "nuggetSteel");
}
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
if (Game.isHost(world) && player.isSneaking() && stack.hasDisplayName()) {
TileEntity tile = world.getTileEntity(x, y, z);
Set<AbstractPair> pairs = new HashSet<AbstractPair>();
if (tile instanceof IReceiverTile) {
pairs.add(((IReceiverTile) tile).getReceiver());
}
if (tile instanceof IControllerTile) {
pairs.add(((IControllerTile) tile).getController());
}
if(tile instanceof ISignalBlockTile) {
pairs.add(((ISignalBlockTile) tile).getSignalBlock());
}
if (!pairs.isEmpty()) {
String newName = stack.getDisplayName();
boolean done = false;
for (AbstractPair pair : pairs) {
if (!newName.equals(pair.getName())) {
pair.setName(newName);
done = true;
}
}
if (done) {
--stack.stackSize;
PlayerPlugin.swingItem(player);
world.markBlockForUpdate(x, y, z);
return true;
}
}
}
return super.onItemUse(stack, player, world, x, y, z, side, hitX, hitY, hitZ);
}
}