mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-03-16 06:35:35 +00:00
chat i'm gonna rizz him up
This commit is contained in:
parent
fc714dd6c8
commit
24f41d33c9
@ -1,9 +1,11 @@
|
|||||||
package com.hbm.hrist;
|
package com.hbm.hrist;
|
||||||
|
|
||||||
import com.hbm.hrist.ConduitPiece.ConnectionDefinition;
|
import com.hbm.hrist.ConduitPiece.ConnectionDefinition;
|
||||||
|
import com.hbm.util.Vec3NT;
|
||||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
@ -28,6 +30,36 @@ public class BlockConduitBend extends BlockConduitBase {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, Object renderBlocks) {
|
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, Object renderBlocks) {
|
||||||
|
int meta = world.getBlockMetadata(x, y, z);
|
||||||
|
if(meta >= 12) {
|
||||||
|
double angle = 0;
|
||||||
|
ForgeDirection dir = ForgeDirection.getOrientation(meta - 10);
|
||||||
|
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||||
|
if(dir == ForgeDirection.NORTH) angle += 0;
|
||||||
|
if(dir == ForgeDirection.WEST) angle += 90;
|
||||||
|
if(dir == ForgeDirection.SOUTH) angle += 180;
|
||||||
|
if(dir == ForgeDirection.EAST) angle += 270;
|
||||||
|
|
||||||
|
double diff = 90D / 5D;
|
||||||
|
|
||||||
|
Vec3NT sv0 = new Vec3NT(dir.offsetX, 0, dir.offsetZ).rotateAroundYDeg(90);
|
||||||
|
Vec3NT sv1 = new Vec3NT(dir.offsetX, 0, dir.offsetZ).rotateAroundYDeg(90 + diff);
|
||||||
|
Vec3NT supVec = new Vec3NT(3.9375 * dir.offsetX, 0, 3.9375 * dir.offsetZ).rotateAroundYDeg(90 + diff / 2);
|
||||||
|
double outer = 4.75D + 0.03125D;
|
||||||
|
double inner = 3.25D - 0.03125D;
|
||||||
|
double dx = x + 0.5 + dir.offsetX * 0.5 + rot.offsetX * 4.5;
|
||||||
|
double dz = z + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * 4.5;
|
||||||
|
|
||||||
|
for(int i = 0; i < 5; i++) {
|
||||||
|
ConduitRenderUtil.renderSupport(Tessellator.instance, blockIcon, dx + supVec.xCoord, y, dz + supVec.zCoord, angle + diff / 2);
|
||||||
|
ConduitRenderUtil.renderSteel(Tessellator.instance, blockIcon, dx + sv1.xCoord * outer, y, dz + sv1.zCoord * outer, angle + diff, dx + sv0.xCoord * outer, y, dz + sv0.zCoord * outer, angle);
|
||||||
|
ConduitRenderUtil.renderSteel(Tessellator.instance, blockIcon, dx + sv1.xCoord * inner, y, dz + sv1.zCoord * inner, angle + diff, dx + sv0.xCoord * inner, y, dz + sv0.zCoord * inner, angle);
|
||||||
|
supVec.rotateAroundYDeg(diff);
|
||||||
|
sv0.rotateAroundYDeg(diff);
|
||||||
|
sv1.rotateAroundYDeg(diff);
|
||||||
|
angle += diff;
|
||||||
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -46,8 +46,8 @@ public class BlockConduitStraight extends BlockConduitBase {
|
|||||||
x + 0.5 - dir.offsetX * 2.5 - rot.offsetX * 0.28125, y, z + 0.5 - dir.offsetZ * 2.5 - rot.offsetZ * 0.28125, angle,
|
x + 0.5 - dir.offsetX * 2.5 - rot.offsetX * 0.28125, y, z + 0.5 - dir.offsetZ * 2.5 - rot.offsetZ * 0.28125, angle,
|
||||||
x + 0.5 + dir.offsetX * 2.5 - rot.offsetX * 0.28125, y, z + 0.5 + dir.offsetZ * 2.5 - rot.offsetZ * 0.28125, angle);
|
x + 0.5 + dir.offsetX * 2.5 - rot.offsetX * 0.28125, y, z + 0.5 + dir.offsetZ * 2.5 - rot.offsetZ * 0.28125, angle);
|
||||||
ConduitRenderUtil.renderSteel(Tessellator.instance, blockIcon,
|
ConduitRenderUtil.renderSteel(Tessellator.instance, blockIcon,
|
||||||
x + 0.5 - dir.offsetX * 2.5 - rot.offsetX * -1.21875, y, z + 0.5 - dir.offsetZ * 2.5 - rot.offsetZ * -1.21875, angle,
|
x + 0.5 - dir.offsetX * 2.5 - rot.offsetX * -1.28125, y, z + 0.5 - dir.offsetZ * 2.5 - rot.offsetZ * -1.28125, angle,
|
||||||
x + 0.5 + dir.offsetX * 2.5 - rot.offsetX * -1.21875, y, z + 0.5 + dir.offsetZ * 2.5 - rot.offsetZ * -1.21875, angle);
|
x + 0.5 + dir.offsetX * 2.5 - rot.offsetX * -1.28125, y, z + 0.5 + dir.offsetZ * 2.5 - rot.offsetZ * -1.28125, angle);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
package com.hbm.hrist;
|
package com.hbm.hrist;
|
||||||
|
|
||||||
import com.hbm.hrist.ConduitPiece.ConnectionDefinition;
|
import com.hbm.hrist.ConduitPiece.ConnectionDefinition;
|
||||||
|
import com.hbm.util.Vec3NT;
|
||||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
@ -34,6 +36,51 @@ public class BlockConduitSwitch extends BlockConduitBase {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, Object renderBlocks) {
|
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, Object renderBlocks) {
|
||||||
|
int meta = world.getBlockMetadata(x, y, z);
|
||||||
|
if(meta >= 12) {
|
||||||
|
double angle = 0;
|
||||||
|
ForgeDirection dir = ForgeDirection.getOrientation(meta - 10);
|
||||||
|
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||||
|
if(dir == ForgeDirection.NORTH) angle += 0;
|
||||||
|
if(dir == ForgeDirection.WEST) angle += 90;
|
||||||
|
if(dir == ForgeDirection.SOUTH) angle += 180;
|
||||||
|
if(dir == ForgeDirection.EAST) angle += 270;
|
||||||
|
|
||||||
|
double diff = 90D / 5D;
|
||||||
|
|
||||||
|
Vec3NT sv0 = new Vec3NT(dir.offsetX, 0, dir.offsetZ).rotateAroundYDeg(90);
|
||||||
|
Vec3NT sv1 = new Vec3NT(dir.offsetX, 0, dir.offsetZ).rotateAroundYDeg(90 + diff);
|
||||||
|
Vec3NT sv2 = new Vec3NT(dir.offsetX, 0, dir.offsetZ).rotateAroundYDeg(-90);
|
||||||
|
Vec3NT sv3 = new Vec3NT(dir.offsetX, 0, dir.offsetZ).rotateAroundYDeg(-90 - diff);
|
||||||
|
Vec3NT supVec0 = new Vec3NT(3.9375 * dir.offsetX, 0, 3.9375 * dir.offsetZ).rotateAroundYDeg(90 + diff / 2);
|
||||||
|
Vec3NT supVec1 = new Vec3NT(3.9375 * dir.offsetX, 0, 3.9375 * dir.offsetZ).rotateAroundYDeg(-90 - diff / 2);
|
||||||
|
double outer = 4.75D + 0.03125D;
|
||||||
|
double inner = 3.25D - 0.03125D;
|
||||||
|
double dx0 = x + 0.5 + dir.offsetX * 0.5 + rot.offsetX * 4.5;
|
||||||
|
double dz0 = z + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * 4.5;
|
||||||
|
double dx1 = x + 0.5 + dir.offsetX * 0.5 - rot.offsetX * 3.5;
|
||||||
|
double dz1 = z + 0.5 + dir.offsetZ * 0.5 - rot.offsetZ * 3.5;
|
||||||
|
|
||||||
|
ConduitRenderUtil.renderSupport(Tessellator.instance, blockIcon, dx0 + supVec0.xCoord, y, dz0 + supVec0.zCoord, angle);
|
||||||
|
|
||||||
|
for(int i = 0; i < 5; i++) {
|
||||||
|
if(i > 1) {
|
||||||
|
ConduitRenderUtil.renderSupport(Tessellator.instance, blockIcon, dx0 + supVec0.xCoord, y, dz0 + supVec0.zCoord, angle + diff / 2);
|
||||||
|
ConduitRenderUtil.renderSupport(Tessellator.instance, blockIcon, dx1 + supVec1.xCoord, y, dz1 + supVec1.zCoord, -angle - diff / 2);
|
||||||
|
}
|
||||||
|
ConduitRenderUtil.renderSteel(Tessellator.instance, blockIcon, dx0 + sv1.xCoord * outer, y, dz0 + sv1.zCoord * outer, angle + diff, dx0 + sv0.xCoord * outer, y, dz0 + sv0.zCoord * outer, angle);
|
||||||
|
ConduitRenderUtil.renderSteel(Tessellator.instance, blockIcon, dx0 + sv1.xCoord * inner, y, dz0 + sv1.zCoord * inner, angle + diff, dx0 + sv0.xCoord * inner, y, dz0 + sv0.zCoord * inner, angle);
|
||||||
|
ConduitRenderUtil.renderSteel(Tessellator.instance, blockIcon, dx1 + sv3.xCoord * outer, y, dz1 + sv3.zCoord * outer, -angle - diff, dx1 + sv2.xCoord * outer, y, dz1 + sv2.zCoord * outer, -angle);
|
||||||
|
ConduitRenderUtil.renderSteel(Tessellator.instance, blockIcon, dx1 + sv3.xCoord * inner, y, dz1 + sv3.zCoord * inner, -angle - diff, dx1 + sv2.xCoord * inner, y, dz1 + sv2.zCoord * inner, -angle);
|
||||||
|
supVec0.rotateAroundYDeg(diff);
|
||||||
|
supVec1.rotateAroundYDeg(-diff);
|
||||||
|
sv0.rotateAroundYDeg(diff);
|
||||||
|
sv1.rotateAroundYDeg(diff);
|
||||||
|
sv2.rotateAroundYDeg(-diff);
|
||||||
|
sv3.rotateAroundYDeg(-diff);
|
||||||
|
angle += diff;
|
||||||
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,7 +36,7 @@ public class ConDbg {
|
|||||||
|
|
||||||
int color = line.hashCode() & 0xFFFFFF;
|
int color = line.hashCode() & 0xFFFFFF;
|
||||||
|
|
||||||
ParticleUtil.spawnDroneLine(world, x, y, z, dx, dy, dz, !line.valid ? (BobMathUtil.getBlink() ? 0xff0000 : 0xff8000) : color, true);
|
ParticleUtil.spawnDroneLine(world, x, y, z, dx, dy, dz, !line.valid ? (BobMathUtil.getBlink() ? 0xff0000 : 0x000000) : color, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -105,13 +105,13 @@ public class ConduitSpace {
|
|||||||
|
|
||||||
line = orphan.getLine();
|
line = orphan.getLine();
|
||||||
// if the current line is null
|
// if the current line is null
|
||||||
if(line == null || !line.valid) {
|
if(line == null || !line.isValid()) {
|
||||||
if(connectedDef.connectors[0].equals(connection) || connectedDef.connectors[1].equals(connection)) {
|
if(connectedDef.connectors[0].equals(connection) || connectedDef.connectors[1].equals(connection)) {
|
||||||
orphan.setLine(connectedLine);
|
orphan.setLine(connectedLine);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// if not, merge
|
// if not, merge
|
||||||
} else {
|
} else if(line.isValid()) {
|
||||||
// larger one eats the smaller one for performance
|
// larger one eats the smaller one for performance
|
||||||
ConduitLine larger = line.getDefCount() > connectedLine.getDefCount() ? line : connectedLine;
|
ConduitLine larger = line.getDefCount() > connectedLine.getDefCount() ? line : connectedLine;
|
||||||
ConduitLine smaller = larger == connectedLine ? line : connectedLine;
|
ConduitLine smaller = larger == connectedLine ? line : connectedLine;
|
||||||
@ -120,7 +120,7 @@ public class ConduitSpace {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(orphan.getLine() == null) {
|
if(orphan.getLine() == null || !orphan.getLine().isValid()) {
|
||||||
orphan.setLine(new ConduitLine(world));
|
orphan.setLine(new ConduitLine(world));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user