изменение размера модели obj блока через gui

Версия Minecraft
1.7.10
API
Forge
Сделала гуишку, правой кнопкой по блоку.
Мне нужно, чтобы при нажатии кнопок в гуишке scale модели блока увеличивался или уменьшался.
Как я могу это реализовать?
(только только начинаю разбираться в forge.api)
 
Решение
При нажатии на кнопку в гуи отправляй пакет об изменении размера на сервер с содержанием размеров И BlockPos. На сервере при обработке по BlockPos ищешь необходимый тайл и записываешь в него данные о размере (назовём их xScale, yScale, zScale - т.к. стандартные x, y, z заняты).
В рендере уже используешь данные с тайла, а не рандомные (или не очень рандомные) значения.я
То, что сейчас делает твой код:
При обработке пакета сделать размер по переданным xyz, но при рендере использовать 1.5 по xyz. Именно поэтому ничего и не происходит.
P.S. Использовать глобальные переменные - не выход, т.к. в таком случае размеры с одного тайла будут применяться на все тайлы, даже на те, что за 1000 блоков от того, в котором были установлены значения.
1,038
57
229
GL11.glScalef перед отрисовкой модели должен изменить её масштаб. WebGL - Scaling
На сайте есть туторы по GUI, смотри их.

Приятно что девушки тоже умеют в программирование.
 
GL11.glScalef перед отрисовкой модели должен изменить её масштаб. WebGL - Scaling
На сайте есть туторы по GUI, смотри их.
Я понимаю, это, но я не понимаю как это реализовать измнение масштаба, он уже как бы задан, и нужно при нажатии кнопки изменять его, гуишка уже есть
 
1,038
57
229
покажи код отрисовки, потому что вот в этом посте [1.12.2] TileEntityRender получает всегда air как предмет из TileEntity
есть glScalef который и масштабирует модель. Так же если в гугл вбить это слово, по нему очень много будет информации.
Самое главное в масштабировании, чтобы оно было после glTranslate
 
GL11.glScalef перед отрисовкой модели должен изменить её масштаб. WebGL - Scaling
На сайте есть туторы по GUI, смотри их.

Приятно что девушки тоже умеют в программирование.
Я уверена, что это работает абсолютно не так, как я сделала, но попытка - не пытка.... Помогите криворучке...

Отрисовка:
public static void GetScale(float i, float o, float p)
    {
        GL11.glScalef(i, o, p);
    }

    @Override
    public void renderTileEntityAt(TileEntity entity, double x, double y, double z, float p_147500_8_) {

        bindTexture(texture);

        GL11.glPushMatrix();
        GL11.glEnable(GL12.GL_RESCALE_NORMAL);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        GL11.glTranslatef((float) x + 0.5F, (float) y + 0.0F, (float) z + 0.5F);
        GetScale(1.5F, 1.5F, 1.5F);


        model.renderAll();
        GL11.glPopMatrix();
    }

Пакетик:
TESRZil ZIL = new TESRZil();
    float x;
    float y;
    float z;
    public ServerScalePacket(float x, float y, float z){
       this.x = x;
       this.y = y;
       this.z = z;
    }
    @Override
    public void fromBytes(ByteBuf buf) {
        x = buf.readFloat();
        y = buf.readFloat();
        z = buf.readFloat();
    }
    public void toBytes(ByteBuf buf) {
        buf.writeFloat(x);
        buf.writeFloat(y);
        buf.writeFloat(z);
    }
    public static class Handler implements IMessageHandler<ServerScalePacket, IMessage>{
        @Override
        public IMessage onMessage(ServerScalePacket packet, MessageContext ctx) {
            float x = packet.x;
            float y = packet.y;
            float z = packet.z;
            EntityPlayerMP player = ctx.getServerHandler().playerEntity;
            TESRZil.GetScale(x, y, z);
            return null;
        }
    }
отправка пакета по кнопке в гуи(изменение размера модели):
@Override
    @SideOnly(Side.CLIENT)
    protected void actionPerformed(GuiButton button)
    {
        switch (button.id)
        {
            case 1:
                Main.NETWORK.sendToServer(new ServerScalePacket(4F, 4F, 4F));
            case 2:
        }
        actionPerformed(button);
    }
 
1,369
112
241
При нажатии на кнопку в гуи отправляй пакет об изменении размера на сервер с содержанием размеров И BlockPos. На сервере при обработке по BlockPos ищешь необходимый тайл и записываешь в него данные о размере (назовём их xScale, yScale, zScale - т.к. стандартные x, y, z заняты).
В рендере уже используешь данные с тайла, а не рандомные (или не очень рандомные) значения.я
То, что сейчас делает твой код:
При обработке пакета сделать размер по переданным xyz, но при рендере использовать 1.5 по xyz. Именно поэтому ничего и не происходит.
P.S. Использовать глобальные переменные - не выход, т.к. в таком случае размеры с одного тайла будут применяться на все тайлы, даже на те, что за 1000 блоков от того, в котором были установлены значения.
 
При нажатии на кнопку в гуи отправляй пакет об изменении размера на сервер с содержанием размеров И BlockPos. На сервере при обработке по BlockPos ищешь необходимый тайл и записываешь в него данные о размере (назовём их xScale, yScale, zScale - т.к. стандартные x, y, z заняты).
В рендере уже используешь данные с тайла, а не рандомные (или не очень рандомные) значения.я
То, что сейчас делает твой код:
При обработке пакета сделать размер по переданным xyz, но при рендере использовать 1.5 по xyz. Именно поэтому ничего и не происходит.
P.S. Использовать глобальные переменные - не выход, т.к. в таком случае размеры с одного тайла будут применяться на все тайлы, даже на те, что за 1000 блоков от того, в котором были установлены значения.
супергодно, спасибо
 
Последнее редактирование:
Сверху