159 lines
6.3 KiB
Java
159 lines
6.3 KiB
Java
package com.pahimar.ee3.handler;
|
|
|
|
import com.pahimar.ee3.item.ITransmutationStone;
|
|
import com.pahimar.ee3.util.TransmutationHelper;
|
|
import cpw.mods.fml.client.FMLClientHandler;
|
|
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.util.MovingObjectPosition.MovingObjectType;
|
|
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public class DrawBlockHighlightHandler {
|
|
private static int pulse;
|
|
private static boolean doInc;
|
|
|
|
@SubscribeEvent
|
|
public void onDrawBlockHighlightEvent(final DrawBlockHighlightEvent event) {
|
|
final Minecraft minecraft = FMLClientHandler.instance().getClient();
|
|
if (event.currentItem != null
|
|
&& event.currentItem.getItem() instanceof ITransmutationStone
|
|
&& event.target.typeOfHit == MovingObjectType.BLOCK) {
|
|
TransmutationHelper.updateTargetBlock(
|
|
event.player.worldObj,
|
|
event.target.blockX,
|
|
event.target.blockY,
|
|
event.target.blockZ
|
|
);
|
|
/*if (Minecraft.isGuiEnabled() && minecraft.inGameHasFocus &&
|
|
ConfigurationSettings.ENABLE_OVERLAY_WORLD_TRANSMUTATION) {
|
|
this.drawInWorldTransmutationOverlay(event);
|
|
}*/
|
|
}
|
|
}
|
|
|
|
/*public void drawInWorldTransmutationOverlay(final DrawBlockHighlightEvent event) {
|
|
final double x = event.target.blockX + 0.5f;
|
|
final double y = event.target.blockY + 0.5f;
|
|
final double z = event.target.blockZ + 0.5f;
|
|
final double iPX = ((Entity)event.player).prevPosX + (((Entity)event.player).posX
|
|
- ((Entity)event.player).prevPosX) * event.partialTicks; final double iPY =
|
|
((Entity)event.player).prevPosY + (((Entity)event.player).posY -
|
|
((Entity)event.player).prevPosY) * event.partialTicks; final double iPZ =
|
|
((Entity)event.player).prevPosZ + (((Entity)event.player).posZ -
|
|
((Entity)event.player).prevPosZ) * event.partialTicks; final int texture =
|
|
event.context.renderEngine.func_78341_b("/mods/ee3/textures/effects/noise.png"); float
|
|
xScale = 1.0f; float yScale = 1.0f; float zScale = 1.0f; float xShift = 0.1f; float
|
|
yShift = 0.1f; float zShift = 0.1f; int itemChargeLevel = 0; if
|
|
(event.currentItem.getItem() instanceof IChargeable) { itemChargeLevel =
|
|
((IChargeable)event.currentItem.getItem()).getCharge(event.currentItem);
|
|
}
|
|
final int chargeLevel = 1 + itemChargeLevel * 2;
|
|
final ForgeDirection sideHit =
|
|
ForgeDirection.getOrientation(event.target.sideHit); switch (sideHit) { case UP: {
|
|
xScale = chargeLevel + 0.1f;
|
|
zScale = chargeLevel + 0.1f;
|
|
xShift = 0.0f;
|
|
zShift = 0.0f;
|
|
break;
|
|
}
|
|
case DOWN: {
|
|
xScale = chargeLevel + 0.1f;
|
|
zScale = chargeLevel + 0.1f;
|
|
xShift = 0.0f;
|
|
yShift = -yShift;
|
|
zShift = 0.0f;
|
|
break;
|
|
}
|
|
case NORTH: {
|
|
xScale = chargeLevel + 0.1f;
|
|
yScale = chargeLevel + 0.1f;
|
|
xShift = 0.0f;
|
|
yShift = 0.0f;
|
|
zShift = -zShift;
|
|
break;
|
|
}
|
|
case SOUTH: {
|
|
xScale = chargeLevel + 0.1f;
|
|
yScale = chargeLevel + 0.1f;
|
|
xShift = 0.0f;
|
|
yShift = 0.0f;
|
|
break;
|
|
}
|
|
case EAST: {
|
|
yScale = chargeLevel + 0.1f;
|
|
zScale = chargeLevel + 0.1f;
|
|
yShift = 0.0f;
|
|
zShift = 0.0f;
|
|
break;
|
|
}
|
|
case WEST: {
|
|
yScale = chargeLevel + 0.1f;
|
|
zScale = chargeLevel + 0.1f;
|
|
xShift = -xShift;
|
|
yShift = 0.0f;
|
|
zShift = 0.0f;
|
|
break;
|
|
}
|
|
}
|
|
GL11.glDepthMask(false);
|
|
GL11.glDisable(2884);
|
|
for (int i = 0; i < 6; ++i) {
|
|
final ForgeDirection forgeDir = ForgeDirection.getOrientation(i);
|
|
final int zCorrection = (i == 2) ? -1 : 1;
|
|
GL11.glPushMatrix();
|
|
GL11.glTranslated(-iPX + x + xShift, -iPY + y + yShift, -iPZ + z + zShift);
|
|
GL11.glScalef(1.0f * xScale, 1.0f * yScale, 1.0f * zScale);
|
|
GL11.glRotatef(90.0f, (float)forgeDir.offsetX, (float)forgeDir.offsetY,
|
|
(float)forgeDir.offsetZ); GL11.glTranslated(0.0, 0.0, (double)(0.5f * zCorrection));
|
|
GL11.glClear(256);
|
|
renderPulsingQuad(texture, 0.75f);
|
|
GL11.glPopMatrix();
|
|
}
|
|
GL11.glEnable(2884);
|
|
GL11.glDepthMask(true);
|
|
}
|
|
|
|
public static void renderPulsingQuad(final int texture, final float maxTransparency) {
|
|
final float pulseTransparency = getPulseValue() * maxTransparency / 3000.0f;
|
|
GL11.glBindTexture(3553, texture);
|
|
final Tessellator tessellator = Tessellator.instance;
|
|
GL11.glEnable(32826);
|
|
GL11.glEnable(3042);
|
|
GL11.glBlendFunc(770, 771);
|
|
GL11.glColor4f(1.0f, 1.0f, 1.0f, pulseTransparency);
|
|
tessellator.startDrawingQuads();
|
|
tessellator.setColorRGBA_F(1.0f, 1.0f, 1.0f, pulseTransparency);
|
|
tessellator.addVertexWithUV(-0.5, 0.5, 0.0, 0.0, 1.0);
|
|
tessellator.addVertexWithUV(0.5, 0.5, 0.0, 1.0, 1.0);
|
|
tessellator.addVertexWithUV(0.5, -0.5, 0.0, 1.0, 0.0);
|
|
tessellator.addVertexWithUV(-0.5, -0.5, 0.0, 0.0, 0.0);
|
|
tessellator.draw();
|
|
GL11.glDisable(3042);
|
|
GL11.glDisable(32826);
|
|
}
|
|
|
|
private static int getPulseValue() {
|
|
if (DrawBlockHighlightHandler.doInc) {
|
|
DrawBlockHighlightHandler.pulse += 8;
|
|
}
|
|
else {
|
|
DrawBlockHighlightHandler.pulse -= 8;
|
|
}
|
|
if (DrawBlockHighlightHandler.pulse == 3000) {
|
|
DrawBlockHighlightHandler.doInc = false;
|
|
}
|
|
if (DrawBlockHighlightHandler.pulse == 0) {
|
|
DrawBlockHighlightHandler.doInc = true;
|
|
}
|
|
return DrawBlockHighlightHandler.pulse;
|
|
}*/
|
|
|
|
static {
|
|
DrawBlockHighlightHandler.pulse = 0;
|
|
DrawBlockHighlightHandler.doInc = true;
|
|
}
|
|
}
|