Как разделить рендеры?

Версия Minecraft
1.15.2
103
2
2
Я обнаружил, что если я буду ставить свои тайлы, то переменная угла всё время увеличивается и из-за этого если стоит много блоков, то быстро происходит анимация.
sprinklertileentityrenderer:
public class sprinklertilerenderer extends TileEntityRenderer<sprinklertile> {
    private int angle;

    public sprinklertilerenderer(TileEntityRendererDispatcher rendererDispatcherIn) {
        super(rendererDispatcherIn);
    }

    @Override
    public void render(sprinklertile tileEntityIn, float partialTicks, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int combinedLightIn, int combinedOverlayIn) {
        this.angle++;
        matrixStackIn.push();
        matrixStackIn.translate(0, 0.62, 0);//matrix up
        //move matrix to center and rotate it
        matrixStackIn.translate(0.5,0,0.5);
        matrixStackIn.rotate(Vector3f.YP.rotationDegrees(angle));
        matrixStackIn.translate(-0.5,0,-0.5);

        BlockRendererDispatcher blockRenderer = Minecraft.getInstance().getBlockRendererDispatcher();
        BlockState state = ModBlocks.sprinkler_top.get().getDefaultState();
        blockRenderer.renderBlock(state, matrixStackIn, bufferIn, combinedLightIn, combinedOverlayIn, EmptyModelData.INSTANCE);

        matrixStackIn.pop();
        if (angle>360){angle=0;}
    }
}
 
103
2
2
я перенёс angle в тайл, но вращение стало каким-то дёрганным.
обновление угла:
public int returnangle(){
        return angle;
    }

    protected void updateAnimation() {
        angle+=2;
        if (angle>360){angle=0;}
    }

@Override
public void tick() {
updateAnimation();
}
В рендере
рендер:
matrixStackIn.rotate(Vector3f.YP.rotationDegrees(tileEntityIn.returnangle()));
 
7,099
324
1,510
Прибавляй partialTick к значению угла. Эта переменная плавно изменяет между тиками, специально для рендера
 
7,099
324
1,510
Так для случая угла достаточно просто прибавить
Ой, сначала показалось, что каждый тик прибавляется 1 градус ,а тут 2.
Ну ок, тогда нужно прибавлять partialTick*2
 
103
2
2
Ещё вопрос, я пихаю updateAnimation в проверку !this.world.isRemote и в дебаге я вижу что меняю переменную, но я не могу её вернуть в рендер. Точнее в рендер возвращается 0. Что не так?
 

GoogleTan

Картошка :3
1,354
43
310
Пакеты
 
103
2
2
я пакетами пользовался немного, делал кнопку которая меняет режим редстоуна у механизмов, тоесть от клиента на сервер отправлял пакет.
а как сервер должен отправить пакет рендеру и как узнать какому?
 
103
2
2
у меня там проверка на режим редстоуна, если я уберу проверку, ничего работать не будет.
if (!this.world.isRemote) {
boolean redstonesignal = world.getBlockState(pos).get(REDSTONE_SIGNAL);
if ((redstonesignal & redstoneControl == 1) || redstoneControl == 0) {
updateAnimation();
}
}
 
103
2
2
я убрал и анимация всё равно не переключается.
Java:
public void updateAnimation() {
        boolean redstonesignal = world.getBlockState(pos).get(REDSTONE_SIGNAL);
        if ((redstonesignal & redstoneControl == 1) || redstoneControl == 0) {
            this.angle += 2;
            if (this.angle > 358) {
                this.angle = 0;
            }
        }
    }
 
7,099
324
1,510
Сверху