TESR wires!

visibileWires
Astoria 2 years ago
parent d50e817bcd
commit 18ba7d74dc

@ -1,11 +1,13 @@
package net.brokenmoon.afloydwiremod; package net.brokenmoon.afloydwiremod;
import net.brokenmoon.afloydwiremod.api.AbstractWireTileEntity;
import net.brokenmoon.afloydwiremod.item.ToolWiring; import net.brokenmoon.afloydwiremod.item.ToolWiring;
import net.brokenmoon.afloydwiremod.tile.ChipTile; import net.brokenmoon.afloydwiremod.tile.ChipTile;
import net.brokenmoon.afloydwiremod.item.ToolProgrammer; import net.brokenmoon.afloydwiremod.item.ToolProgrammer;
import net.brokenmoon.afloydwiremod.tile.RedstoneLinkTile; import net.brokenmoon.afloydwiremod.tile.RedstoneLinkTile;
import net.brokenmoon.afloydwiremod.tileentity.ChipTileEntity; import net.brokenmoon.afloydwiremod.tileentity.ChipTileEntity;
import net.brokenmoon.afloydwiremod.tileentity.RedstoneLinkTileEntity; import net.brokenmoon.afloydwiremod.tileentity.RedstoneLinkTileEntity;
import net.brokenmoon.afloydwiremod.tileentity.TERWire;
import net.fabricmc.api.ModInitializer; import net.fabricmc.api.ModInitializer;
import net.minecraft.src.Block; import net.minecraft.src.Block;
import net.minecraft.src.Item; import net.minecraft.src.Item;
@ -35,5 +37,6 @@ public class WireMod implements ModInitializer {
LinkTileActive.notInCreativeMenu = true; LinkTileActive.notInCreativeMenu = true;
EntityHelper.createTileEntity(ChipTileEntity.class, "Chip"); EntityHelper.createTileEntity(ChipTileEntity.class, "Chip");
EntityHelper.createTileEntity(RedstoneLinkTileEntity.class, "Redstone Link"); EntityHelper.createTileEntity(RedstoneLinkTileEntity.class, "Redstone Link");
EntityHelper.createSpecialTileEntity(AbstractWireTileEntity.class, new TERWire(), "Wire");
} }
} }

@ -58,9 +58,4 @@ public abstract class AbstractWireTile extends BlockContainer {
public int getRenderType(){ public int getRenderType(){
return 28; return 28;
} }
@Override
public int getRenderBlockPass() {
return 1;
}
} }

@ -21,7 +21,7 @@ public class WireConnection {
public float green = 0; public float green = 0;
public float blue = 0; public float blue = 0;
public float alpha = 1; public float alpha = 1;
public float width = 5f; public float width = 0.5f;
public WireConnection(){ public WireConnection(){
this.isMade = false; this.isMade = false;

@ -2,13 +2,19 @@ package net.brokenmoon.afloydwiremod.gui;
import net.brokenmoon.afloydwiremod.item.ToolWiring; import net.brokenmoon.afloydwiremod.item.ToolWiring;
import net.brokenmoon.afloydwiremod.tileentity.ChipTileEntity; import net.brokenmoon.afloydwiremod.tileentity.ChipTileEntity;
import net.minecraft.src.EntityPlayerSP; import net.minecraft.client.Minecraft;
import net.minecraft.src.GuiButton; import net.minecraft.src.*;
import net.minecraft.src.GuiScreen; import net.minecraft.src.render.Shaders;
import net.minecraft.src.GuiSlider; import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
public class GuiWireTool extends GuiScreen { public class GuiWireTool extends GuiScreen {
public ToolWiring tool; public ToolWiring tool;
public GuiSlider red;
public GuiSlider green;
public GuiSlider blue;
public GuiSlider alpha;
public GuiSlider widthslider;
public GuiWireTool(EntityPlayerSP entityPlayerSP, ToolWiring toolWiring) { public GuiWireTool(EntityPlayerSP entityPlayerSP, ToolWiring toolWiring) {
super.initGui(); super.initGui();
this.tool = toolWiring; this.tool = toolWiring;
@ -16,33 +22,34 @@ public class GuiWireTool extends GuiScreen {
@Override @Override
public void initGui() { public void initGui() {
this.controlList.add(new GuiSlider(1, this.width/2-100, this.height/2-40, 200, 20, "Red", tool.red)); red = new GuiSlider(1, this.width/2-100, this.height/2-40, 200, 20, "Red", tool.red);
this.controlList.add(new GuiSlider(2, this.width/2-100, this.height/2-20, 200, 20, "Green", tool.green)); green = new GuiSlider(2, this.width/2-100, this.height/2-20, 200, 20, "Blue", tool.green);
this.controlList.add(new GuiSlider(3, this.width/2-100, this.height/2+00, 200, 20, "Blue", tool.blue)); blue = new GuiSlider(3, this.width/2-100, this.height/2-0, 200, 20, "Green", tool.blue);
this.controlList.add(new GuiSlider(4, this.width/2-100, this.height/2+20, 200, 20, "Alpha", tool.alpha)); alpha = new GuiSlider(4, this.width/2-100, this.height/2+20, 200, 20, "Alpha", tool.alpha);
this.controlList.add(new GuiSlider(5, this.width/2-100, this.height/2+40, 200, 20, "Width", tool.width)); widthslider = new GuiSlider(5, this.width/2-100, this.height/2+40, 200, 20, "Width", tool.width);
this.controlList.add(red);
this.controlList.add(green);
this.controlList.add(blue);
this.controlList.add(alpha);
this.controlList.add(widthslider);
} }
@Override @Override
protected void actionPerformed(GuiButton guiButton){ public void drawScreen(int x, int y, float renderPartialTicks) {
if(guiButton instanceof GuiSlider){ super.drawScreen(x, y, renderPartialTicks);
switch(guiButton.id){ if (this.red.dragging) {
case 1: this.tool.red = red.sliderValue;
tool.red = ((GuiSlider) guiButton).sliderValue; }
break; if (this.green.dragging) {
case 2: this.tool.green = green.sliderValue;
tool.green = ((GuiSlider) guiButton).sliderValue; }
break; if (this.blue.dragging) {
case 3: this.tool.blue = blue.sliderValue;
tool.blue = ((GuiSlider) guiButton).sliderValue; }
break; if (this.alpha.dragging) {
case 4: this.tool.alpha = alpha.sliderValue;
tool.alpha = ((GuiSlider) guiButton).sliderValue; }
break; if (this.widthslider.dragging) {
case 5: this.tool.width = widthslider.sliderValue;
tool.width = ((GuiSlider) guiButton).sliderValue;
break;
}
} }
} }

@ -73,8 +73,6 @@ public class GuiWiring extends GuiScrollable {
} else if(!this.tool.type.equals("unpaired")) { } else if(!this.tool.type.equals("unpaired")) {
if(this.tool.type.equals("input")) { if(this.tool.type.equals("input")) {
wireEntity.outputs[guibutton.slot].wire = new WireConnection(this.tool.x, this.tool.y, this.tool.z, guibutton.slot, tool.slot, tool.xadd, tool.yadd, tool.zadd, tool.sideadd, false, tool.red, tool.green, tool.blue, tool.alpha, tool.width); wireEntity.outputs[guibutton.slot].wire = new WireConnection(this.tool.x, this.tool.y, this.tool.z, guibutton.slot, tool.slot, tool.xadd, tool.yadd, tool.zadd, tool.sideadd, false, tool.red, tool.green, tool.blue, tool.alpha, tool.width);
Minecraft.getMinecraft().theWorld.markBlocksDirty(x, y, z, x, y, z);
Minecraft.getMinecraft().theWorld.markBlocksDirty(this.wireEntity.xCoord, this.wireEntity.yCoord, this.wireEntity.zCoord, this.wireEntity.xCoord, this.wireEntity.yCoord, this.wireEntity.zCoord);
tool.xadd = new ArrayList<Integer>(); tool.xadd = new ArrayList<Integer>();
tool.yadd = new ArrayList<Integer>(); tool.yadd = new ArrayList<Integer>();
tool.zadd = new ArrayList<Integer>(); tool.zadd = new ArrayList<Integer>();
@ -84,8 +82,6 @@ public class GuiWiring extends GuiScrollable {
AbstractWireTileEntity otherEntity = (AbstractWireTileEntity)Minecraft.getMinecraft().theWorld.getBlockTileEntity(tool.x, tool.y, tool.z); AbstractWireTileEntity otherEntity = (AbstractWireTileEntity)Minecraft.getMinecraft().theWorld.getBlockTileEntity(tool.x, tool.y, tool.z);
if(otherEntity != null) if(otherEntity != null)
otherEntity.outputs[tool.slot].wire = new WireConnection(this.wireEntity.xCoord, this.wireEntity.yCoord, this.wireEntity.zCoord, tool.slot, guibutton.slot, tool.xadd, tool.yadd, tool.zadd, tool.sideadd, true, tool.red, tool.green, tool.blue, tool.alpha, tool.width); otherEntity.outputs[tool.slot].wire = new WireConnection(this.wireEntity.xCoord, this.wireEntity.yCoord, this.wireEntity.zCoord, tool.slot, guibutton.slot, tool.xadd, tool.yadd, tool.zadd, tool.sideadd, true, tool.red, tool.green, tool.blue, tool.alpha, tool.width);
Minecraft.getMinecraft().theWorld.markBlocksDirty(x, y, z, x, y, z);
Minecraft.getMinecraft().theWorld.markBlocksDirty(this.wireEntity.xCoord, this.wireEntity.yCoord, this.wireEntity.zCoord, this.wireEntity.xCoord, this.wireEntity.yCoord, this.wireEntity.zCoord);
tool.xadd = new ArrayList<Integer>(); tool.xadd = new ArrayList<Integer>();
tool.yadd = new ArrayList<Integer>(); tool.yadd = new ArrayList<Integer>();
tool.zadd = new ArrayList<Integer>(); tool.zadd = new ArrayList<Integer>();

@ -26,32 +26,18 @@ public class MixinBlockRenderer {
@Inject(method = "Lnet/minecraft/src/RenderBlocks;renderBlockByRenderType(Lnet/minecraft/src/Block;III)Z", at = @At("HEAD"), cancellable = true) @Inject(method = "Lnet/minecraft/src/RenderBlocks;renderBlockByRenderType(Lnet/minecraft/src/Block;III)Z", at = @At("HEAD"), cancellable = true)
public void injectMethod(Block block, int i, int j, int k, CallbackInfoReturnable<Boolean> cir){ public void injectMethod(Block block, int i, int j, int k, CallbackInfoReturnable<Boolean> cir){
if(block.getRenderType() == 28){ if(block.getRenderType() == 28){
AbstractWireTileEntity wireEntity = (AbstractWireTileEntity)this.world.getBlockTileEntity(i, j, k);
if(block instanceof AbstractWireTileSided) { if(block instanceof AbstractWireTileSided) {
this.renderSidedBlock(block, i, j, k); this.renderSidedBlock(block, i, j, k);
} else { } else {
this.renderStandardBlock(block, i, j, k); this.renderStandardBlock(block, i, j, k);
} }
if(wireEntity.outputs != null){
for(int it = 0; it < wireEntity.outputs.length; it++){
if(wireEntity.outputs[it].wire != null && wireEntity.outputs[it].wire.isMade){
this.renderLineBetweenTwoPoints(
i, j, k,
wireEntity.outputs[it].wire.x, wireEntity.outputs[it].wire.y, wireEntity.outputs[it].wire.z,
wireEntity.outputs[it].wire.red, wireEntity.outputs[it].wire.green, wireEntity.outputs[it].wire.blue, wireEntity.outputs[it].wire.alpha, wireEntity.outputs[it].wire.width * 10,
wireEntity.outputs[it].wire.xadd, wireEntity.outputs[it].wire.yadd, wireEntity.outputs[it].wire.zadd, wireEntity.outputs[it].wire.sideadd,
wireEntity.outputs[it].wire.backwired,
block instanceof AbstractWireTileSided,
Block.getBlock(world.getBlockId(wireEntity.outputs[it].wire.x, wireEntity.outputs[it].wire.y, wireEntity.outputs[it].wire.z)) instanceof AbstractWireTileSided);
}
}
}
cir.setReturnValue(true); cir.setReturnValue(true);
} }
} }
public boolean renderSidedBlock(Block block, int i, int j, int k) { public boolean renderSidedBlock(Block block, int i, int j, int k) {
Tessellator tessellator = Tessellator.instance; Tessellator tessellator = Tessellator.instance;
GL11.glDisable(GL11.GL_BLEND);
int l = block.getBlockTextureFromSide(0); int l = block.getBlockTextureFromSide(0);
if (this.overrideBlockTexture >= 0) { if (this.overrideBlockTexture >= 0) {
l = this.overrideBlockTexture; l = this.overrideBlockTexture;
@ -107,272 +93,4 @@ public class MixinBlockRenderer {
} }
return true; return true;
} }
public void renderLineBetweenTwoPoints(long x1, long y1, long z1, long x2, long y2, long z2, float red, float green, float blue, float alpha, float width, ArrayList<Integer> xadd, ArrayList<Integer> yadd, ArrayList<Integer> zadd, ArrayList<Integer> sideadd, boolean backwired, boolean firstblocksided, boolean secondblocksided){
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(red, green, blue, alpha);
GL11.glLineWidth(width);
GL11.glBegin(GL11.GL_LINE_STRIP);
if(!backwired) {
if(firstblocksided){
float xoffset = 0;
float yoffset = 0;
float zoffset = 0;
switch(world.getBlockMetadata((int)x1,(int)y1,(int)z1)){
case 0:
xoffset = 0.5f;
yoffset = 0.9f;
zoffset = 0.5f;
break;
case 1:
xoffset = 0.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 2:
xoffset = 0.9f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 3:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.1f;
break;
case 4:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.9f;
break;
case 5:
xoffset = 0.5f;
yoffset = 0.1f;
zoffset = 0.5f;
break;
}
GL11.glVertex3f(Math.floorMod(x1, 16l) + xoffset, Math.floorMod(y1, 16l) + yoffset, Math.floorMod(z1, 16l) + zoffset);
} else {
GL11.glVertex3f(Math.floorMod(x1, 16l) + 0.5f, Math.floorMod(y1, 16l) + 0.5f, Math.floorMod(z1, 16l) + 0.5f);
}
} else{
if(secondblocksided) {
float xoffset = 0;
float yoffset = 0;
float zoffset = 0;
switch (world.getBlockMetadata((int) x2, (int) y2, (int) z2)) {
case 0:
xoffset = 0.5f;
yoffset = 0.9f;
zoffset = 0.5f;
break;
case 1:
xoffset = 0.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 2:
xoffset = 0.9f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 3:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.1f;
break;
case 4:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.9f;
break;
case 5:
xoffset = 0.5f;
yoffset = 0.1f;
zoffset = 0.5f;
break;
}
GL11.glVertex3f(Math.floorMod(x1, 16l) - (x1 - x2) + xoffset, Math.floorMod(y1, 16l) - (y1 - y2) + yoffset, Math.floorMod(z1, 16l) - (z1 - z2) + zoffset);
} else {
GL11.glVertex3f(Math.floorMod(x1, 16l) - (x1 - x2) + 0.5f, Math.floorMod(y1, 16l) - (y1 - y2) + 0.5f, Math.floorMod(z1, 16l) - (z1 - z2) + 0.5f);
}
}
if(backwired){
for(int i = 0; i < xadd.size(); i++){
float xoffset = 0;
float yoffset = 0;
float zoffset = 0;
switch(sideadd.get(i)){
case 0:
xoffset = 0.5f;
yoffset = -0.1f;
zoffset = 0.5f;
break;
case 1:
xoffset = 0.5f;
yoffset = 1.1f;
zoffset = 0.5f;
break;
case 2:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = -0.1f;
break;
case 3:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 1.1f;
break;
case 4:
xoffset = -0.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 5:
xoffset = 1.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
}
GL11.glVertex3f(Math.floorMod(x1, 16l) - (x1 - xadd.get(i)) + xoffset, Math.floorMod(y1, 16l) - (y1 - yadd.get(i)) + yoffset, Math.floorMod(z1, 16l) - (z1 - zadd.get(i)) + zoffset);
}
} else{
for(int i = xadd.size() - 1; i >= 0 ; i--){
float xoffset = 0;
float yoffset = 0;
float zoffset = 0;
switch(sideadd.get(i)){
case 0:
xoffset = 0.5f;
yoffset = -0.1f;
zoffset = 0.5f;
break;
case 1:
xoffset = 0.5f;
yoffset = 1.1f;
zoffset = 0.5f;
break;
case 2:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = -0.1f;
break;
case 3:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 1.1f;
break;
case 4:
xoffset = -0.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 5:
xoffset = 1.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
}
GL11.glVertex3f(Math.floorMod(x1, 16l) - (x1 - xadd.get(i)) + xoffset, Math.floorMod(y1, 16l) - (y1 - yadd.get(i)) + yoffset, Math.floorMod(z1, 16l) - (z1 - zadd.get(i)) + zoffset);
}
}
if(backwired) {
if(firstblocksided){
float xoffset = 0;
float yoffset = 0;
float zoffset = 0;
switch(world.getBlockMetadata((int) x1, (int) y1, (int) z1)){
case 0:
xoffset = 0.5f;
yoffset = 0.9f;
zoffset = 0.5f;
break;
case 1:
xoffset = 0.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 2:
xoffset = 0.9f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 3:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.1f;
break;
case 4:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.9f;
break;
case 5:
xoffset = 0.5f;
yoffset = 0.1f;
zoffset = 0.5f;
break;
}
GL11.glVertex3f(Math.floorMod(x1, 16l) + xoffset, Math.floorMod(y1, 16l) + yoffset, Math.floorMod(z1, 16l) + zoffset);
} else {
GL11.glVertex3f(Math.floorMod(x1, 16l) + 0.5f, Math.floorMod(y1, 16l) + 0.5f, Math.floorMod(z1, 16l) + 0.5f);
}
} else{
if(secondblocksided) {
float xoffset = 0;
float yoffset = 0;
float zoffset = 0;
switch (world.getBlockMetadata((int) x2, (int) y2, (int) z2)) {
case 0:
xoffset = 0.5f;
yoffset = 0.9f;
zoffset = 0.5f;
break;
case 1:
xoffset = 0.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 2:
xoffset = 0.9f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 3:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.1f;
break;
case 4:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.9f;
break;
case 5:
xoffset = 0.5f;
yoffset = 0.1f;
zoffset = 0.5f;
break;
}
GL11.glVertex3f(Math.floorMod(x1, 16l) - (x1 - x2) + xoffset, Math.floorMod(y1, 16l) - (y1 - y2) + yoffset, Math.floorMod(z1, 16l) - (z1 - z2) + zoffset);
} else {
GL11.glVertex3f(Math.floorMod(x1, 16l) - (x1 - x2) + 0.5f, Math.floorMod(y1, 16l) - (y1 - y2) + 0.5f, Math.floorMod(z1, 16l) - (z1 - z2) + 0.5f);
}
}
GL11.glEnd();
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glPopMatrix();
}
public void renderLineBetweenTwoPoints(long x1, long y1, long z1, long x2, long y2, long z2, float red, float green, float blue, float alpha, ArrayList<Integer> xadd, ArrayList<Integer> yadd, ArrayList<Integer> zadd, ArrayList<Integer> sideadd, boolean backwired, boolean firstblocksided, boolean secondblocksided){
renderLineBetweenTwoPoints(x1, y1, z1, x2, y2, z2, red, green, blue, alpha, 1, xadd, yadd, zadd, sideadd, backwired, firstblocksided, secondblocksided);
}
public void renderLineBetweenTwoPoints(long x1, long y1, long z1, long x2, long y2, long z2, float red, float green, float blue, ArrayList<Integer> xadd, ArrayList<Integer> yadd, ArrayList<Integer> zadd, ArrayList<Integer> sideadd, boolean backwired, boolean firstblocksided, boolean secondblocksided){
renderLineBetweenTwoPoints(x1, y1, z1, x2, y2, z2, red, green, blue, 255, 1, xadd, yadd, zadd, sideadd, backwired, firstblocksided, secondblocksided);
}
public void renderLineBetweenTwoPoints(long x1, long y1, long z1, long x2, long y2, long z2, ArrayList<Integer> xadd, ArrayList<Integer> yadd, ArrayList<Integer> zadd, ArrayList<Integer> sideadd, boolean backwired, boolean firstblocksided, boolean secondblocksided){
renderLineBetweenTwoPoints(x1, y1, z1, x2, y2, z2, 255, 0, 0, 255f / 2, 5, xadd, yadd, zadd, sideadd, backwired, firstblocksided, secondblocksided);
}
} }

@ -0,0 +1,258 @@
package net.brokenmoon.afloydwiremod.tileentity;
import net.brokenmoon.afloydwiremod.api.AbstractWireTileEntity;
import net.brokenmoon.afloydwiremod.api.AbstractWireTileSided;
import net.minecraft.client.Minecraft;
import net.minecraft.src.*;
import org.lwjgl.Sys;
import org.lwjgl.opengl.GL11;
import java.util.ArrayList;
public class TERWire extends TileEntitySpecialRenderer {
@Override
public void renderTileEntityAt(TileEntity tileEntity, double d, double e, double f, float g) {
this.renderWireAt((AbstractWireTileEntity)tileEntity, d, e, f, g);
}
public void renderWireAt(AbstractWireTileEntity wireEntity, double x, double y, double z, float weird) {
if(wireEntity.outputs != null){
for(int it = 0; it < wireEntity.outputs.length; it++){
if(wireEntity.outputs[it].wire != null && wireEntity.outputs[it].wire.isMade){
this.renderLineBetweenTwoPoints(
wireEntity.xCoord, wireEntity.yCoord, wireEntity.zCoord,
wireEntity.outputs[it].wire.x, wireEntity.outputs[it].wire.y, wireEntity.outputs[it].wire.z,
wireEntity.outputs[it].wire.red, wireEntity.outputs[it].wire.green, wireEntity.outputs[it].wire.blue, wireEntity.outputs[it].wire.alpha, wireEntity.outputs[it].wire.width * 10,
wireEntity.outputs[it].wire.xadd, wireEntity.outputs[it].wire.yadd, wireEntity.outputs[it].wire.zadd, wireEntity.outputs[it].wire.sideadd,
wireEntity.outputs[it].wire.backwired,
Block.getBlock(Minecraft.getMinecraft().theWorld.getBlockId(wireEntity.xCoord, wireEntity.yCoord, wireEntity.zCoord)) instanceof AbstractWireTileSided,
Block.getBlock(Minecraft.getMinecraft().theWorld.getBlockId(wireEntity.outputs[it].wire.x, wireEntity.outputs[it].wire.y, wireEntity.outputs[it].wire.z)) instanceof AbstractWireTileSided, x, y, z);
}
}
}
}
public void renderLineBetweenTwoPoints(int x1, int y1, int z1, long x2, long y2, long z2, float red, float green, float blue, float alpha, float width, ArrayList<Integer> xadd, ArrayList<Integer> yadd, ArrayList<Integer> zadd, ArrayList<Integer> sideadd, boolean backwired, boolean firstblocksided, boolean secondblocksided, double x, double y, double z){
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(red, green, blue, alpha);
GL11.glLineWidth(width);
GL11.glTranslated(x, y, z);
GL11.glDepthMask(false);
GL11.glBegin(GL11.GL_LINE_STRIP);
//First
if(!backwired) {
if(firstblocksided){
float xoffset = 0;
float yoffset = 0;
float zoffset = 0;
switch(Minecraft.getMinecraft().theWorld.getBlockMetadata((int)x1,(int)y1,(int)z1)){
case 0:
xoffset = 0.5f;
yoffset = 0.9f;
zoffset = 0.5f;
break;
case 1:
xoffset = 0.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 2:
xoffset = 0.9f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 3:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.1f;
break;
case 4:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.9f;
break;
case 5:
xoffset = 0.5f;
yoffset = 0.1f;
zoffset = 0.5f;
break;
}
GL11.glVertex3f(xoffset, yoffset, zoffset);
} else {
GL11.glVertex3f(0.5f, 0.5f, 0.5f);
}
} else{
if(secondblocksided) {
float xoffset = 0;
float yoffset = 0;
float zoffset = 0;
switch (Minecraft.getMinecraft().theWorld.getBlockMetadata((int) x2, (int) y2, (int) z2)) {
case 0:
xoffset = 0.5f;
yoffset = 0.9f;
zoffset = 0.5f;
break;
case 1:
xoffset = 0.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 2:
xoffset = 0.9f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 3:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.1f;
break;
case 4:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.9f;
break;
case 5:
xoffset = 0.5f;
yoffset = 0.1f;
zoffset = 0.5f;
break;
}
GL11.glVertex3d(-(x1 - x2) + xoffset,-(y1 - y2) + yoffset, -(z1 - z2) + zoffset);
} else {
GL11.glVertex3d(-(x1 - x2) + 0.5f, -(y1 - y2) + 0.5f, -(z1 - z2) + 0.5f);
}
}
//Middle
for(int i = xadd.size() - 1; i >= 0 ; i--){
float xoffset = 0;
float yoffset = 0;
float zoffset = 0;
switch(sideadd.get(i)){
case 0:
xoffset = 0.5f;
yoffset = -0.1f;
zoffset = 0.5f;
break;
case 1:
xoffset = 0.5f;
yoffset = 1.1f;
zoffset = 0.5f;
break;
case 2:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = -0.1f;
break;
case 3:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 1.1f;
break;
case 4:
xoffset = -0.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 5:
xoffset = 1.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
}
GL11.glVertex3d(-(x1 - xadd.get(i)) + xoffset, -(y1 - yadd.get(i)) + yoffset, -(z1 - zadd.get(i)) + zoffset);
}
//Second
if(backwired) {
if(firstblocksided){
float xoffset = 0;
float yoffset = 0;
float zoffset = 0;
switch(Minecraft.getMinecraft().theWorld.getBlockMetadata(x1, y1, z1)){
case 0:
xoffset = 0.5f;
yoffset = 0.9f;
zoffset = 0.5f;
break;
case 1:
xoffset = 0.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 2:
xoffset = 0.9f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 3:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.1f;
break;
case 4:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.9f;
break;
case 5:
xoffset = 0.5f;
yoffset = 0.1f;
zoffset = 0.5f;
break;
}
GL11.glVertex3f(xoffset, yoffset, zoffset);
} else {
GL11.glVertex3f(0.5f, 0.5f, 0.5f);
}
} else{
if(secondblocksided) {
float xoffset = 0;
float yoffset = 0;
float zoffset = 0;
switch (Minecraft.getMinecraft().theWorld.getBlockMetadata((int) x2, (int) y2, (int) z2)) {
case 0:
xoffset = 0.5f;
yoffset = 0.9f;
zoffset = 0.5f;
break;
case 1:
xoffset = 0.1f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 2:
xoffset = 0.9f;
yoffset = 0.5f;
zoffset = 0.5f;
break;
case 3:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.1f;
break;
case 4:
xoffset = 0.5f;
yoffset = 0.5f;
zoffset = 0.9f;
break;
case 5:
xoffset = 0.5f;
yoffset = 0.1f;
zoffset = 0.5f;
break;
}
GL11.glVertex3d(-(x1 - x2) + xoffset, -(y1 - y2) + yoffset, -(z1 - z2) + zoffset);
} else {
GL11.glVertex3d(-(x1 - x2) + 0.5f, -(y1 - y2) + 0.5f, -(z1 - z2) + 0.5f);
}
}
GL11.glEnd();
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glDepthMask(true);
GL11.glPopMatrix();
}
}
Loading…
Cancel
Save