/**
* 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.energy.block;
import cn.academy.core.block.ACBlockContainer;
import cn.academy.energy.api.WirelessHelper;
import cn.academy.energy.api.block.IWirelessNode;
import cn.academy.energy.api.event.node.LinkUserEvent;
import cn.academy.energy.api.event.node.UnlinkUserEvent;
import cn.lambdalib.template.client.render.block.RenderEmptyBlock;
import cn.lambdalib.util.generic.RandUtils;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import java.util.List;
/**
* @author WeAthFolD
*/
public class BlockCatEngine extends ACBlockContainer {
public BlockCatEngine() {
super("cat_engine", Material.rock, null);
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileCatEngine();
}
@Override
public boolean isOpaqueCube() {
return false;
}
@SideOnly(Side.CLIENT)
@Override
public int getRenderType() {
return RenderEmptyBlock.id;
}
// just let it be...
@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 instanceof TileCatEngine) {
if(!world.isRemote) {
TileCatEngine gen = (TileCatEngine) te;
if(WirelessHelper.isGeneratorLinked(gen)) {
MinecraftForge.EVENT_BUS.post(new UnlinkUserEvent(gen));
player.addChatMessage(new ChatComponentTranslation("ac.cat_engine.unlink"));
} else {
List<IWirelessNode> nodes = WirelessHelper.getNodesInRange(world, x, y, z);
if(nodes.isEmpty()) {
player.addChatMessage(new ChatComponentTranslation("ac.cat_engine.notfound"));
} else {
IWirelessNode node = nodes.get(RandUtils.rangei(0, nodes.size()));
player.addChatMessage(new ChatComponentTranslation("ac.cat_engine.linked", node.getNodeName()));
MinecraftForge.EVENT_BUS.post(new LinkUserEvent(gen, node));
}
}
}
return true;
}
return false;
}
}