// MAIN GUI!! public class ShinobiStats extends Screen implements INamedContainerProvider { GuiButtonEyeSlot guiButtonEyeSlot; GuiButtonArrowUp guiButtonArrowUp; GuiButtonArrowDown guiButtonArrowDown; GuiButtonPlayerHead guiButtonPlayerHead; GuiButtonPlayerBody guiButtonPlayerBody; GuiButtonPlayerArm guiButtonPlayerArm1; GuiButtonPlayerArm guiButtonPlayerArm2; GuiButtonPlayerLeg guiButtonPlayerLeg1; GuiButtonPlayerLeg guiButtonPlayerLeg2; private boolean toggleEyeSelection; private int guiTop; private int guiLeft; private int playerEyeSlot; public ShinobiStats() { super(new TranslationTextComponent("gui." + Main.MODID + ".title.shinobistats")); } @Override protected void init() { buttons.clear(); this.guiLeft = (this.width) / 2; this.guiTop = (this.height) / 2; Minecraft mc = Minecraft.getInstance(); AbstractClientPlayerEntity player = mc.player; ClientPlayerEntity clientPlayer = Minecraft.getInstance().player; LazyOptional player_cap = player.getCapability(PlayerProvider.CAPABILITY_PLAYER, null); IPlayerHandler playerc = player_cap.orElse(new PlayerCapability()); addButton(guiButtonEyeSlot = new GuiButtonEyeSlot(this.width - 31, 10, $ -> { System.out.println("CLICKEDINS"); this.onGuiButtonEyeSlotPress(); })); addButton(guiButtonArrowUp = new GuiButtonArrowUp(this.guiLeft + 50, this.guiTop - 15, $ -> { this.onGuiButtonArrowUpPress(); })); addButton(guiButtonArrowDown = new GuiButtonArrowDown(this.guiLeft + 50, this.guiTop + 15, $ -> { this.onGuiButtonArrowDownPress(); })); addButton(guiButtonPlayerHead = new GuiButtonPlayerHead(this.guiLeft - 16, this.guiTop - 48, player, $ -> { Minecraft.getInstance().displayGuiScreen(new PlayerDojutsu()); })); addButton(guiButtonPlayerBody = new GuiButtonPlayerBody(this.guiLeft - 16, this.guiTop - 16, player, $ -> { Minecraft.getInstance().displayGuiScreen(new PlayerChakraandBodyInfusion()); })); addButton(guiButtonPlayerArm1 = new GuiButtonPlayerArm(this.guiLeft - 32, this.guiTop - 16, player, $ -> { Minecraft.getInstance().displayGuiScreen(new PlayerJutsu()); })); addButton(guiButtonPlayerArm2 = new GuiButtonPlayerArm(this.guiLeft + 16, this.guiTop - 16, player, $ -> { Minecraft.getInstance().displayGuiScreen(new PlayerJutsu()); })); addButton(guiButtonPlayerLeg1 = new GuiButtonPlayerLeg(this.guiLeft - 16, this.guiTop + 32, player, $ -> { Minecraft.getInstance().displayGuiScreen(new PlayerTaijutsu()); })); addButton(guiButtonPlayerLeg2 = new GuiButtonPlayerLeg(this.guiLeft, this.guiTop + 32, player, $ -> { Minecraft.getInstance().displayGuiScreen(new PlayerTaijutsu()); })); this.guiButtonArrowUp.visible = false; this.guiButtonArrowDown.visible = false; if (playerc.returnplayerEyeSlot() <= 0) { this.playerEyeSlot = 4; } else { this.playerEyeSlot = playerc.returnplayerEyeSlot(); } super.init(); } @Override public void render(int p_render_1_, int p_render_2_, float p_render_3_) { Minecraft mc = Minecraft.getInstance(); AbstractClientPlayerEntity player = mc.player; super.render(p_render_1_, p_render_2_, p_render_3_); mc.textureManager.bindTexture(new ResourceLocation(Main.MODID + ":textures/gui/shinobistatsbackground.png")); if (this.toggleEyeSelection) { mc.ingameGUI.blit(this.guiLeft - 8, (this.guiTop - 48) + (this.playerEyeSlot * 4), 0, 252, 16, 4); } this.checkHovered(p_render_1_, p_render_2_); } @Override public ITextComponent getDisplayName() { return null; } @Nullable @Override public Container createMenu(int p_createMenu_1_, PlayerInventory p_createMenu_2_, PlayerEntity p_createMenu_3_) { return null; } @Override public boolean isPauseScreen() { return false; } public static void open() { Minecraft.getInstance().displayGuiScreen(new ShinobiStats()); } public void onGuiButtonEyeSlotPress() { ClientPlayerEntity player = Minecraft.getInstance().player; LazyOptional player_cap = player.getCapability(PlayerProvider.CAPABILITY_PLAYER, null); IPlayerHandler playerc = player_cap.orElse(new PlayerCapability()); if (!this.toggleEyeSelection) { this.guiButtonArrowUp.visible = true; this.guiButtonArrowDown.visible = true; this.toggleEyeSelection = true; } else { this.guiButtonArrowUp.visible = false; this.guiButtonArrowDown.visible = false; this.toggleEyeSelection = false; playerc.setplayerEyeSlot(this.playerEyeSlot); int eyeSlot = playerc.returnplayerEyeSlot(); NetworkLoader.INSTANCE.sendToServer(new PacketEyeSlotSync(eyeSlot)); } } public void onGuiButtonArrowUpPress() { if (this.guiButtonArrowUp.visible) { if (this.playerEyeSlot >= 1) { this.playerEyeSlot -= 1; } } } public void onGuiButtonArrowDownPress() { if (this.guiButtonArrowDown.visible) { if (this.playerEyeSlot < 7) { this.playerEyeSlot += 1; } } } @Override public boolean mouseClicked(double p_mouseClicked_1_, double p_mouseClicked_3_, int p_mouseClicked_5_) { return super.mouseClicked(p_mouseClicked_1_, p_mouseClicked_3_, p_mouseClicked_5_); } @Override public void onClose() { super.onClose(); ClientPlayerEntity player = Minecraft.getInstance().player; LazyOptional player_cap = player.getCapability(PlayerProvider.CAPABILITY_PLAYER, null); IPlayerHandler playerc = player_cap.orElse(new PlayerCapability()); playerc.setplayerEyeSlot(this.playerEyeSlot); int eyeSlot = playerc.returnplayerEyeSlot(); NetworkLoader.INSTANCE.sendToServer(new PacketEyeSlotSync(eyeSlot)); if (this.guiButtonArrowUp.visible) { player.sendMessage(new StringTextComponent("Saved Settings")); } } public void checkHovered(int p_render_1_, int p_render_2_) { if (guiButtonEyeSlot.isHovered()) { renderTooltip("Change Player Eye Slot", p_render_1_, p_render_2_); } if (guiButtonPlayerHead.isHovered()) { renderTooltip(new TranslationTextComponent("gui." + Main.MODID + ".title.dojutsu").getString(), p_render_1_, p_render_2_); } if (guiButtonPlayerBody.isHovered()) { renderTooltip(new TranslationTextComponent("gui." + Main.MODID + ".title.bodychakra").getString(), p_render_1_, p_render_2_); } if (guiButtonPlayerArm1.isHovered()) { renderTooltip(new TranslationTextComponent("gui." + Main.MODID + ".title.handjutsu").getString(), p_render_1_, p_render_2_); } if (guiButtonPlayerArm2.isHovered()) { renderTooltip(new TranslationTextComponent("gui." + Main.MODID + ".title.handjutsu").getString(), p_render_1_, p_render_2_); } if (guiButtonPlayerLeg1.isHovered()) { renderTooltip(new TranslationTextComponent("gui." + Main.MODID + ".title.legtaijutsu").getString(), p_render_1_, p_render_2_); } if (guiButtonPlayerLeg2.isHovered()) { renderTooltip(new TranslationTextComponent("gui." + Main.MODID + ".title.legtaijutsu").getString(), p_render_1_, p_render_2_); } } } //ONE CUSTOM BUTTON CLASS public class GuiButtonPlayerArm extends Button { AbstractClientPlayerEntity player; protected final IPressable onPress; int u = (44 * 4); int v = (20 * 4); int widthIn; int heightIn; public void onPress() { this.onPress.onPress(this); } public GuiButtonPlayerArm(int widthIn, int heightIn, AbstractClientPlayerEntity player, IPressable onPress) { super(widthIn, heightIn, (4 * 4), (12 * 4), "", onPress); this.widthIn = widthIn; this.heightIn = heightIn; this.onPress = onPress; this.player = player; } @Override public void renderButton(int p_renderButton_1_, int p_renderButton_2_, float p_renderButton_3_) { super.renderButton(p_renderButton_1_, p_renderButton_2_, p_renderButton_3_); Minecraft mc = Minecraft.getInstance(); mc.textureManager.bindTexture(player.getLocationSkin()); if (!visible) { return; } mc.ingameGUI.blit(widthIn, heightIn, u, v, width, height); } }