- 205
- 12
- 103
Доброго и не очень времени суток.
Есть GUI, в нём есть две кнопочки: повышающие и понижающие интовую переменную в тайле (По аналогии со счётчиком из учебника). Насколько мне известно, пакеты - довольно хрупкая и опасная система в плане уязвимостей, так что хотелось бы сразу понять как правильно передавать подобные простые действия.
Цель: Передать результат нажатия кнопочки в GUI, согласно результату изменить значение переменной.
Если я всё верно понял, делать нужно по следующей аналогии: GUI -> Контейнер -> Тайл. Но из этой серии мне более ничего не известно, поскольку руководства в интернете в этом плане весьма ограничены.
Как делать контейнер в этом случае - вообще не знаю, поскольку пока доводилось работать только с контейнерами обычных инвентарей.
Есть GUI, в нём есть две кнопочки: повышающие и понижающие интовую переменную в тайле (По аналогии со счётчиком из учебника). Насколько мне известно, пакеты - довольно хрупкая и опасная система в плане уязвимостей, так что хотелось бы сразу понять как правильно передавать подобные простые действия.
Цель: Передать результат нажатия кнопочки в GUI, согласно результату изменить значение переменной.
Если я всё верно понял, делать нужно по следующей аналогии: GUI -> Контейнер -> Тайл. Но из этой серии мне более ничего не известно, поскольку руководства в интернете в этом плане весьма ограничены.
Тайл:
public class TileBarrier extends TileEntity {
public static int multiplier;
@Override
public NBTTagCompound writeToNBT(NBTTagCompound tagCompound) {
tagCompound.setInteger("multiplier", multiplier);
return super.writeToNBT(tagCompound);
}
@Override
public void readFromNBT(NBTTagCompound tagCompound) {
this.multiplier = tagCompound.getInteger("multiplier");
super.readFromNBT(tagCompound);
}
public static int getMultiplier() {
return multiplier;
}
public void incrementMultiplier() {
this.multiplier++;
this.markDirty();
}
public void decrementMultiplier() {
this.multiplier--;
this.markDirty();
}
}
GUI:
public class GuiBarrier extends GuiScreen {
private GuiButtonExt buttonIncrement;
private GuiButtonExt buttonDecrement;
@Override
public void initGui() {
buttonIncrement = new GuiButtonExt(0, width / 2, height / 2 + 100, 100, 20, "+");
buttonDecrement = new GuiButtonExt(1, width / 2, height / 2 + 100, 100, 20, "-");
//Не обращаем внимания на координаты
buttonList.add(buttonIncrement);
buttonList.add(buttonDecrement);
}
@Override
protected void keyTyped(char typedChar, int keyCode) throws IOException {
super.keyTyped(typedChar, keyCode);
}
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
super.mouseClicked(mouseX, mouseY, mouseButton);
}
@Override
public void updateScreen() {
}
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
drawDefaultBackground();
super.drawScreen(mouseX, mouseY, partialTicks);
}
@Override
protected void actionPerformed(GuiButton button) throws IOException {
if (button == this.buttonIncrement) {
//Повышение значение
}
if (button == this.buttonDecrement) {
//Понижение значения
}
}
}
Как делать контейнер в этом случае - вообще не знаю, поскольку пока доводилось работать только с контейнерами обычных инвентарей.