Files
ForgeMultipart/codechicken/microblock/handler/MicroblockEventHandler.scala
T
2013-12-30 13:52:08 +10:00

62 lines
2.7 KiB
Scala

package codechicken.microblock.handler
import cpw.mods.fml.common.network.IConnectionHandler
import net.minecraftforge.event.ForgeSubscribe
import cpw.mods.fml.relauncher.SideOnly
import cpw.mods.fml.relauncher.Side
import net.minecraftforge.client.event.TextureStitchEvent
import codechicken.microblock.MicroMaterialRegistry
import net.minecraftforge.client.event.DrawBlockHighlightEvent
import net.minecraft.util.EnumMovingObjectType
import org.lwjgl.opengl.GL11
import codechicken.lib.render.RenderUtils
import codechicken.microblock.ItemMicroPartRenderer
import net.minecraft.network.NetLoginHandler
import net.minecraft.network.INetworkManager
import codechicken.lib.packet.PacketCustom
import net.minecraft.network.packet.NetHandler
import net.minecraft.server.MinecraftServer
import net.minecraft.network.packet.Packet1Login
import cpw.mods.fml.common.Loader
import cpw.mods.fml.common.network.Player
import cpw.mods.fml.common.LoaderState
object MicroblockEventHandler extends IConnectionHandler
{
@ForgeSubscribe
@SideOnly(Side.CLIENT)
def postTextureStitch(event:TextureStitchEvent.Post)
{
if(event.map.textureType == 0 && Loader.instance.hasReachedState(LoaderState.POSTINITIALIZATION))
MicroMaterialRegistry.getIdMap.foreach(e => e._2.loadIcons())
}
@ForgeSubscribe
@SideOnly(Side.CLIENT)
def drawBlockHighlight(event:DrawBlockHighlightEvent)
{
if(event.currentItem != null && event.currentItem.getItem == MicroblockProxy.itemMicro &&
event.target != null && event.target.typeOfHit == EnumMovingObjectType.TILE)
{
GL11.glPushMatrix()
RenderUtils.translateToWorldCoords(event.player, event.partialTicks)
if(ItemMicroPartRenderer.renderHighlight(event.player.worldObj, event.player, event.currentItem, event.target))
event.setCanceled(true)
GL11.glPopMatrix()
}
}
def connectionReceived(loginHandler:NetLoginHandler, netManager:INetworkManager):String =
{
val packet = new PacketCustom(MicroblockSPH.registryChannel, 1)
MicroMaterialRegistry.writeIDMap(packet)
netManager.addToSendQueue(packet.toPacket)
return null
}
def clientLoggedIn(netHandler:NetHandler, netManager:INetworkManager, packet:Packet1Login){}
def playerLoggedIn(player:Player, netHandler:NetHandler, netManager:INetworkManager){}
def connectionOpened(netHandler:NetHandler, server:String, port:Int, netManager:INetworkManager){}
def connectionOpened(netHandler:NetHandler, server:MinecraftServer, netManager:INetworkManager){}
def connectionClosed(netManager:INetworkManager){}
}