155 lines
6.3 KiB
Java
155 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;
|
|
}
|
|
}
|