I'm russian, sorry for bad english.
I want to make a role-play server. I added some sliders for stats like strength or charisma, but i can't set value. It must be from 4 to 10, but slider does not work. Here is my code, sorry, I'm new in java.
Slider class:
public class StatsSlider extends SliderPercentageOption {
private int value = 4;
public String name;
public StatsSlider(String statName, Function<GameSettings, Double> p_i51155_7_, BiConsumer<GameSettings, Double> p_i51155_8_, BiFunction<GameSettings, SliderPercentageOption, ITextComponent> p_i51155_9_) {
super(statName, 4, 10, 1, p_i51155_7_, p_i51155_8_, p_i51155_9_);
this.name = statName;
}
public static double getStat(StatsSlider stat, GameSettings settings) {
return stat.value;
}
public static void setStat(StatsSlider stat, int newValue, GameSettings settings) {
stat.value = newValue;
}
public static StringTextComponent getName(StatsSlider stat) {
return new StringTextComponent(stat.name + ": " + stat.value);
}
}
Screen class:
public CharacterScreen() {
super(new StringTextComponent("Создание персонажа"));
}
@Override
protected void init() {
this.addButton(new Button(
(this.width - BUTTON_WIDTH) / 2,
this.height - DONE_BUTTON_TOP_OFFSET,
BUTTON_WIDTH, BUTTON_HEIGHT,
// Text shown on the button
new StringTextComponent("Готово"),
// Action performed when the button is pressed
button -> this.closedWithButton()
));
this.nameTextField = new TextFieldWidget(
this.font,
(this.width - BUTTON_WIDTH) / 8,
DONE_BUTTON_TOP_OFFSET,
(int) (BUTTON_WIDTH / 1.5),
BUTTON_HEIGHT, new StringTextComponent("Имя персонажа"));
this.stats = new OptionsRowList(this.minecraft, this.width, this.height, nameTextField.getHeight() + 50, this.height - DONE_BUTTON_TOP_OFFSET - 20, BUTTON_HEIGHT);
this.str = new StatsSlider("Сила", unused -> (double) StatsSlider.getStat(str, Minecraft.getInstance().options),
(unused, newValue) -> StatsSlider.setStat(str, newValue.intValue(), Minecraft.getInstance().options),
(gs, option) -> StatsSlider.getName(str));
this.dex = new StatsSlider("Ловкость", unused -> (double) StatsSlider.getStat(dex, Minecraft.getInstance().options),
(unused, newValue) -> StatsSlider.setStat(dex, newValue.intValue(), Minecraft.getInstance().options),
(gs, option) -> StatsSlider.getName(dex));
this.con = new StatsSlider("Телосложение", unused -> (double) StatsSlider.getStat(con, Minecraft.getInstance().options),
(unused, newValue) -> StatsSlider.setStat(con, newValue.intValue(), Minecraft.getInstance().options),
(gs, option) -> StatsSlider.getName(con));
this.per = new StatsSlider("Восприятие", unused -> (double) StatsSlider.getStat(per, Minecraft.getInstance().options),
(unused, newValue) -> StatsSlider.setStat(per, newValue.intValue(), Minecraft.getInstance().options),
(gs, option) -> StatsSlider.getName(per));
this.intt = new StatsSlider("Интеллект", unused -> (double) StatsSlider.getStat(intt, Minecraft.getInstance().options),
(unused, newValue) -> StatsSlider.setStat(intt, newValue.intValue(), Minecraft.getInstance().options),
(gs, option) -> StatsSlider.getName(intt));
this.cha = new StatsSlider("Харизма", unused -> (double) StatsSlider.getStat(cha, Minecraft.getInstance().options),
(unused, newValue) -> StatsSlider.setStat(cha, newValue.intValue(), Minecraft.getInstance().options),
(gs, option) -> StatsSlider.getName(cha));
this.stats.addBig(str);
this.stats.addBig(dex);
this.stats.addBig(con);
this.stats.addBig(per);
this.stats.addBig(intt);
this.stats.addBig(cha);
str.set(Minecraft.getInstance().options, 6);
nameTextField.setVisible(true);
this.children.add(nameTextField);
}
@Override
public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
this.renderBackground(matrixStack);
this.stats.render(matrixStack, mouseX, mouseY, partialTicks);
drawCenteredString(matrixStack, this.font, this.title.getString(), this.width / 2, TITLE_HEIGHT, TextFormatting.WHITE.getColor());
super.render(matrixStack, mouseX, mouseY, partialTicks);
this.nameTextField.render(matrixStack, mouseX, mouseY, partialTicks);
this.font.draw(matrixStack, "Имя персонажа",
(int) this.nameTextField.x,
DONE_BUTTON_TOP_OFFSET + nameTextField.getHeight() + 2,
TextFormatting.WHITE.getColor());
}
@Override
public boolean shouldCloseOnEsc() {
return false;
}
@Override
public boolean isPauseScreen() {
return false;
}
@Override
public void onClose() {
return;
}
public void closedWithButton() {
closedWithButton = true;
super.onClose();
String uuid = Minecraft.getInstance().getUser().getUuid();
}
}