Как нарисовать текстуру-линию Forge 1.7.10

Версия Minecraft
1.7.10
API
Forge
53
2
2
Всех приветствую.
Некоторые знают про мод Immersive Engineering? Там есть такие провода (пример на картинке)
1000036989.jpg

И у меня встала задача отрисовать какие-нибудь такие провода, но без провисания. Получается этакая линия с текстурой.
Я написал подобный код:
Код, где я пытаюсь отрендерить это:
public class RenderHandler {

    public static final ResourceLocation POWER_TEXTURE = new ResourceLocation(TechnoTrees.MOD_ID, "textures/power.png");

    @SideOnly(Side.CLIENT)
    @SubscribeEvent
    public void onRender(RenderWorldEvent.Post event) {
        for (TechnoConsumerTileEntity tile : TechnoTrees.proxy.getConsumers()) {
            BlockPos pos = new BlockPos(tile.xCoord, tile.yCoord, tile.zCoord);
            EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
            BlockPos playerPos = new BlockPos((int) player.posX, (int) player.posY, (int) player.posZ);

            if (pos.getDistance(playerPos) > Minecraft.getMinecraft().gameSettings.renderDistanceChunks*16) {
                return;
            } // Checking to be in caps
            Minecraft.getMinecraft().renderEngine.bindTexture(POWER_TEXTURE);
            Tessellator tessellator = Tessellator.instance;

            for (BlockPos link : tile.getLinks()) {
                tessellator.startDrawingQuads();
                tessellator.addVertexWithUV(pos.getX() + 0.4, pos.getY() + 0.5, pos.getZ() + 0.5, 0, 0);
                tessellator.addVertexWithUV(pos.getX() + 0.6, pos.getY() + 0.5, pos.getZ() + 0.5, 0, 4);
                tessellator.addVertexWithUV(link.getX() + 0.4, link.getY() + 0.5, link.getZ() + 0.5, 16, 0);
                tessellator.addVertexWithUV(link.getX() + 0.6, link.getY() + 0.5, link.getZ() + 0.5, 16, 4);
                tessellator.draw();

                tessellator.startDrawingQuads();
                tessellator.addVertexWithUV(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.4, 0, 0);
                tessellator.addVertexWithUV(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.6, 0, 4);
                tessellator.addVertexWithUV(link.getX() + 0.5, link.getY() + 0.5, link.getZ() + 0.4, 16, 0);
                tessellator.addVertexWithUV(link.getX() + 0.5, link.getY() + 0.5, link.getZ() + 0.6, 16, 4);
                tessellator.draw();
            }
        }
    }
}

У меня есть две точки: link и pos (каждая из них состоит из 3 целых чисел: X, Y и Z). Они находятся в мире и мне надо между ними срендерить эту самую линию.
Но когда я захожу в игру, я вижу такой очень странный результат...
1000036990.jpg

Это была та попытка, где у меня не подгрузилась текстура. Сейчас же, у меня каждый блок "красится" в текстуру, которую я подкидываю.

Подскажите пожалуйста, что я делаю не так и как это исправить?
 
Используй RenderWorldLastEvent вместо RenderWorldEvent.Post
Первый это рендер каждый кадр(как сундук или моб).
А второе это чот типа добавить рендер в запеченный чанк(как блок земли), и когда ты биндишь там какую-то текстуру отличную от атласа блоков, он рисует чанки с ней.

Вынеси начало и окончание рисование за цикл, чем меньше draw call-ов, тем лучше
Java:
tessellator.startDrawingQuads();
for(...){
    tessellator.addVertexWithUV(...)
    ...
}
tessellator.draw();
 
Назад
Сверху