/**
* Copyright (c) Lambda Innovation, 2013-2016
* This file is part of the AcademyCraft mod.
* https://github.com/LambdaInnovation/AcademyCraft
* Licensed under GPLv3, see project root for more information.
*/
package cn.academy.terminal.item;
import cn.academy.core.AcademyCraft;
import cn.academy.core.item.ACItem;
import cn.academy.terminal.App;
import cn.academy.terminal.AppRegistry;
import cn.academy.terminal.TerminalData;
import cn.lambdalib.annoreg.core.Registrant;
import cn.lambdalib.annoreg.mc.RegInitCallback;
import cn.lambdalib.annoreg.mc.RegPostInitCallback;
import cn.lambdalib.annoreg.mc.RegPreInitCallback;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.world.World;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* ItemInstaller app
* @author WeAthFolD
*/
@Registrant
public class ItemApp extends ACItem {
static Map<App, ItemApp> items = new HashMap<>();
@RegInitCallback
private static void init() {
for(App app : AppRegistry.enumeration()) {
if(!app.isPreInstalled()) {
ItemApp item = new ItemApp(app);
GameRegistry.registerItem(item, "ac_app_" + app.getName());
AcademyCraft.recipes.map("app_" + app.getName(), item);
items.put(app, item);
}
}
}
public static ItemApp getItemForApp(App app) {
return items.get(app);
}
public final App app;
private ItemApp(App _app) {
super("apps");
app = _app;
setTextureName("academy:app_" + app.getName());
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
if(!world.isRemote) {
TerminalData terminalData = TerminalData.get(player);
if(!terminalData.isTerminalInstalled()) {
player.addChatMessage(new ChatComponentTranslation("ac.terminal.notinstalled"));
} else if(terminalData.isInstalled(app)) {
player.addChatMessage(new ChatComponentTranslation("ac.terminal.app_alrdy_installed", app.getDisplayName()));
} else {
if(!player.capabilities.isCreativeMode)
stack.stackSize--;
terminalData.installApp(app);
player.addChatMessage(new ChatComponentTranslation("ac.terminal.app_installed", app.getDisplayName()));
}
}
return stack;
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean wtf) {
list.add(app.getDisplayName());
}
}