- 17
- 0
Хотелось бы узнать, как сделать так, чтобы:
- Был вызван метод moveSlot
- Метод начинает двигать опр. слот на 100 пикселей по X
- Каждые пять тиков, допустим, на 2 пикселя, пока не наберётся сто.
Почитай про events.FedorAronov написал(а):Так?Код:static int ticks = 0; @SubscribeEvent public void onClientTick(TickEvent.ClientTickEvent event) { ticks++; if (ticks > 99) { MainClass.logger.info("5 секунд прошло!"); ticks = 0; } }
И что вписать в главный класс мода?
FedorAronov написал(а):Хотелось бы узнать, как сделать так, чтобы:
- Был вызван метод moveSlot
- Метод начинает двигать опр. слот на 100 пикселей по X
- Каждые пять тиков, допустим, на 2 пикселя, пока не наберётся сто.
Random rand = new Random();
//В одной секунде 20 тиков -> 100 тиков = 5 сек
if(rand.nextInt(100) == 0) {
if(posX != 100) {
posX += 2;
}
}
Agravaine написал(а):Рандом-то зачем? Лучше уж таймер.
Onneros написал(а):Agravaine написал(а):Рандом-то зачем? Лучше уж таймер.
Вполне. Можно и таймер
TickEvent.ClientTickEvent
Agravaine написал(а):Делаешь переменную-таймер.
Каждый тик увеличиваешь ее на 1.
Потом делаешь проверку if(timer % кол-во_тиков == 0) и увеличиваешь в нем свою позицию.
static int ticks = 0;
@SubscribeEvent
public void onClientTick(TickEvent.ClientTickEvent event) {
ticks++;
if (ticks > 99) {
MainClass.logger.info("5 секунд прошло!");
ticks = 0;
}
}
Почитай про events.FedorAronov написал(а):Так?Код:static int ticks = 0; @SubscribeEvent public void onClientTick(TickEvent.ClientTickEvent event) { ticks++; if (ticks > 99) { MainClass.logger.info("5 секунд прошло!"); ticks = 0; } }
И что вписать в главный класс мода?
public ЭтотGui(IInventory playerInv, BlockTileEntityЭтогоБлока te) {
super(new ПрилагающийсяContainer(playerInv, te));
this.playerInv = playerInv;
this.te = te;
this.xSize = 176;
this.ySize = 166;
this.guiTop = (height - ySize) / 2;
this.guiLeft = (width -xSize) / 2;
}
@Override
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) {
this.mc.renderEngine.bindTexture(new ResourceLocation(МойmodId,"textures/gui/GuiBackground.png"));
GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f);
this.drawTexturedModalRect(this.guiLeft , this.guiTop, 0, 0, xSize, ySize);
}
FedorAronov написал(а):С тиками я разобрался, просто немного неправильно регистрировал.
Теперь другая проблема. GUI (с инвентарём) отображается своим центром в левом углу экрана.
Предпологаемый ошибочный код:
Элементы внутри GUI отображаются как надо.Код:public ЭтотGui(IInventory playerInv, BlockTileEntityЭтогоБлока te) { super(new ПрилагающийсяContainer(playerInv, te)); this.playerInv = playerInv; this.te = te; this.xSize = 176; this.ySize = 166; this.guiTop = (height - ySize) / 2; this.guiLeft = (width -xSize) / 2; } @Override protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { this.mc.renderEngine.bindTexture(new ResourceLocation(МойmodId,"textures/gui/GuiBackground.png")); GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f); this.drawTexturedModalRect(this.guiLeft , this.guiTop, 0, 0, xSize, ySize); }
this.guiTop = (height / 2) - ySize;
this.guiLeft = (width / 2) - xSize;
Onneros написал(а):FedorAronov написал(а):С тиками я разобрался, просто немного неправильно регистрировал.
Теперь другая проблема. GUI (с инвентарём) отображается своим центром в левом углу экрана.
Предпологаемый ошибочный код:
Элементы внутри GUI отображаются как надо.Код:public ЭтотGui(IInventory playerInv, BlockTileEntityЭтогоБлока te) { super(new ПрилагающийсяContainer(playerInv, te)); this.playerInv = playerInv; this.te = te; this.xSize = 176; this.ySize = 166; this.guiTop = (height - ySize) / 2; this.guiLeft = (width -xSize) / 2; } @Override protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { this.mc.renderEngine.bindTexture(new ResourceLocation(МойmodId,"textures/gui/GuiBackground.png")); GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f); this.drawTexturedModalRect(this.guiLeft , this.guiTop, 0, 0, xSize, ySize); }
Проверь это, у тебя просто ошибка в расчетах, не?Код:this.guiTop = (height / 2) - ySize; this.guiLeft = (width / 2) - xSize;
this.guiTop = (height / 2) - ySize;
this.guiLeft = (width / 2) - xSize;