/** * 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.support; import cn.academy.core.block.ACBlockContainer; import cn.academy.core.client.ui.TechUI; import cn.academy.core.client.ui.WirelessPage; import cn.academy.energy.api.block.IWirelessUser; import cn.lambdalib.cgui.gui.CGuiScreen; import cn.lambdalib.util.mc.WorldUtils; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import java.util.List; /** * @author WeAthFolD */ public abstract class BlockConverterBase extends ACBlockContainer { public static class Item extends ItemBlock { BlockConverterBase converter; public Item(Block block) { super(block); converter = (BlockConverterBase) block; } @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean idk) { list.add(StatCollector.translateToLocalFormatted("ac.converter.desc_template", converter.from, converter.to)); } } public final Class<? extends TileEntity> tileType; public final String from, to; public BlockConverterBase(String name, String _from, String _to, Class<? extends TileEntity> _tileType) { super(name, Material.rock); from = _from; to = _to; tileType = _tileType; setHarvestLevel("pickaxe", 0); setHardness(2.5f); } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float tx, float ty, float tz) { TileEntity te = world.getTileEntity(x, y, z); if (te != null && tileType.isInstance(te)) { if (te instanceof IWirelessUser && !player.isSneaking()) { if (world.isRemote) { displayGui((IWirelessUser) te); } return true; } } return false; } @SideOnly(Side.CLIENT) private void displayGui(IWirelessUser te) { CGuiScreen screen = new CGuiScreen() { @Override public boolean doesGuiPauseGame() { return false; } }; screen.getGui().addWidget(WirelessPage.userPage((TileEntity) te).window()); Minecraft.getMinecraft().displayGuiScreen(screen); } }