diff --git a/build.gradle b/build.gradle index e6bf8505..65c368d2 100644 --- a/build.gradle +++ b/build.gradle @@ -163,6 +163,8 @@ dependencies { // then special handling is done to allow a setup of a vanilla dependency without the use of an external repository. minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" + implementation "org.joml:joml:1.10.5" + // Example mod dependency with JEI - using fg.deobf() ensures the dependency is remapped to your development mappings // The JEI API is declared for compile time use, while the full JEI artifact is used at runtime // compileOnly fg.deobf("mezz.jei:jei-${mc_version}-common-api:${jei_version}") diff --git a/src/main/java/com/cstav/genshinstrument/ModCreativeModeTabs.java b/src/main/java/com/cstav/genshinstrument/ModCreativeModeTabs.java index 0970836c..b86f4c2c 100644 --- a/src/main/java/com/cstav/genshinstrument/ModCreativeModeTabs.java +++ b/src/main/java/com/cstav/genshinstrument/ModCreativeModeTabs.java @@ -2,38 +2,21 @@ import com.cstav.genshinstrument.item.ModItems; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.event.CreativeModeTabEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; @EventBusSubscriber(modid = Main.MODID, bus = Bus.MOD) public class ModCreativeModeTabs { - private static CreativeModeTab instrumentsTab; - public static CreativeModeTab getInstrumentsTab() { - return instrumentsTab; - } + public static final CreativeModeTab instrumentsTab = (new CreativeModeTab("genshinstrument.itemGroup.instruments") { - @SubscribeEvent - public static void registerCreativeModeTabs(final CreativeModeTabEvent.Register event) { - - instrumentsTab = event.registerCreativeModeTab(new ResourceLocation(Main.MODID, "instruments_tab"), (builder) -> builder - .title(Component.translatable("genshinstrument.itemGroup.instruments")) - .icon(() -> new ItemStack(ModItems.FLORAL_ZITHER.get())) - .noScrollBar() - - .displayItems((features, output, opTabEnabled) -> - ModItems.ITEMS.getEntries().forEach((item) -> - output.accept(item.get()) - ) - ) - ); + @Override + public ItemStack makeIcon() { + return new ItemStack(ModItems.FLORAL_ZITHER.get()); + } - } + }).hideScroll(); } diff --git a/src/main/java/com/cstav/genshinstrument/client/AnimationController.java b/src/main/java/com/cstav/genshinstrument/client/AnimationController.java index 70c2fb2b..e647827a 100644 --- a/src/main/java/com/cstav/genshinstrument/client/AnimationController.java +++ b/src/main/java/com/cstav/genshinstrument/client/AnimationController.java @@ -1,8 +1,13 @@ package com.cstav.genshinstrument.client; +import java.lang.reflect.Field; + +import com.mojang.logging.LogUtils; + import net.minecraft.client.Minecraft; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.util.ObfuscationReflectionHelper; @OnlyIn(Dist.CLIENT) public abstract class AnimationController { @@ -31,7 +36,7 @@ public void update() { if (!isPlaying()) return; - final int fps = minecraft.getFps(); + final int fps = getFps(); final float targetTime = fps * duration; if (animTime++ >= targetTime) { @@ -42,6 +47,17 @@ public void update() { animFrame(targetTime, targetValue / targetTime); } + private static int getFps() { + try { + final Field fps = ObfuscationReflectionHelper.findField(Minecraft.class, "f_91021_"); + fps.setAccessible(true); + return fps.getInt(Minecraft.getInstance()); + } catch (Exception e) { + LogUtils.getLogger().error("Exception occured during the proccess of getting FPS! Defaulting to 90", e); + return 90; + } + } + protected abstract void animFrame(final float targetTime, final float deltaValue); diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/GenshinConsentScreen.java b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/GenshinConsentScreen.java index 76dd42bf..8bd7c917 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/GenshinConsentScreen.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/GenshinConsentScreen.java @@ -49,20 +49,22 @@ protected int getLineHeight() { @Override protected void init() { - final Button acknowledgeButton = Button.builder(CommonComponents.GUI_ACKNOWLEDGE, (button) -> { - ModClientConfigs.ACCEPTED_GENSHIN_CONSENT.set(true); - minecraft.setScreen(previousScreen); - }).build(); + final Button acknowledgeButton = new Button( + 0, 0, + 160, 20, CommonComponents.GUI_ACKNOWLEDGE, + (button) -> { + ModClientConfigs.ACCEPTED_GENSHIN_CONSENT.set(true); + minecraft.setScreen(previousScreen); + } + ); + acknowledgeButton.x = (width - acknowledgeButton.getWidth()) / 2; // Make space for if the button is overlayed atop of the greeting final int perferredButtonY = 100 + 140, annoyingButtonY = height - acknowledgeButton.getHeight() - 10; if (annoyingButtonY <= perferredButtonY) { - acknowledgeButton.setPosition( - (width - acknowledgeButton.getWidth()) / 2, - annoyingButtonY - ); + acknowledgeButton.y = annoyingButtonY; if (hasGreeting) { // i have to eradicate brothers alike UmU @@ -73,10 +75,7 @@ protected void init() { hasGreeting = false; } } else { - acknowledgeButton.setPosition( - (width - acknowledgeButton.getWidth()) / 2, - perferredButtonY - ); + acknowledgeButton.y = perferredButtonY; if (!hasGreeting) { CONTENT.append("\n\n\n\n") diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/drum/AratakisGreatAndGloriousDrumScreen.java b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/drum/AratakisGreatAndGloriousDrumScreen.java index c5113812..1a3615c6 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/drum/AratakisGreatAndGloriousDrumScreen.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/drum/AratakisGreatAndGloriousDrumScreen.java @@ -9,12 +9,12 @@ import com.cstav.genshinstrument.client.gui.screens.instrument.partial.note.NoteButton; import com.cstav.genshinstrument.client.gui.screens.options.instrument.AbstractInstrumentOptionsScreen; import com.cstav.genshinstrument.client.gui.screens.options.instrument.DrumOptionsScren; +import com.cstav.genshinstrument.client.gui.widget.copied.LinearLayoutWidget; +import com.cstav.genshinstrument.client.gui.widget.copied.LinearLayoutWidget.Orientation; import com.cstav.genshinstrument.sound.ModSounds; import com.cstav.genshinstrument.sound.NoteSound; import com.mojang.blaze3d.platform.InputConstants.Key; -import net.minecraft.client.gui.components.LinearLayoutWidget; -import net.minecraft.client.gui.components.LinearLayoutWidget.Orientation; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionHand; import net.minecraftforge.api.distmarker.Dist; @@ -69,8 +69,10 @@ protected void init() { layout1.pack(); layout2.pack(); - layout1.setPosition((width - layout1.getWidth()) / 2, (int)(height * .8f)); - layout2.setPosition((width - layout2.getWidth()) / 2, layout1.getY() - layout1.getHeight()); + layout1.x = (width - layout1.getWidth()) / 2; + layout1.y = (int)(height * .8f); + layout2.x = (width - layout2.getWidth()) / 2; + layout2.y = layout1.y - layout1.getHeight(); layout1.pack(); layout2.pack(); diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/AbstractInstrumentScreen.java b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/AbstractInstrumentScreen.java index ba7d9975..4d9c3716 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/AbstractInstrumentScreen.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/AbstractInstrumentScreen.java @@ -172,13 +172,14 @@ protected void init() { * @return A new Instrument Options button */ protected AbstractWidget initOptionsButton(final int vertOffset) { - final Button button = Button.builder( - Component.translatable("button.genshinstrument.instrumentOptions").append("..."), (btn) -> onOptionsOpen() - ) - .width(150) - .build(); + final Button button = new Button(0, 0, + 150, 20, + Component.translatable("button.genshinstrument.instrumentOptions").append("..."), + (btn) -> onOptionsOpen() + ); - button.setPosition((width - button.getWidth())/2, vertOffset - button.getHeight()/2); + button.x = (width - button.getWidth())/2; + button.y = vertOffset - button.getHeight()/2; addRenderableWidget(button); return button; diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/note/NoteButton.java b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/note/NoteButton.java index b1172248..3d0ba60a 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/note/NoteButton.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/note/NoteButton.java @@ -147,11 +147,11 @@ protected ResourceLocation getResourceFromRoot(final String path) { * This is done for the animations to work properly - for them to stick to the same position. */ public void initPos() { - initX = getX(); - initY = getY(); + initX = x; + initY = y; - textX = getX() + width/2; - textY = getY() + height/2 + 7; + textX = x + width/2; + textY = y + height/2 + 7; } public int getInitX() { @@ -166,7 +166,8 @@ public Point getCenter() { } public void moveToCenter() { final Point center = getCenter(); - setPosition(center.x, center.y); + x = center.x; + y = center.y; } @@ -207,7 +208,7 @@ public void renderButton(PoseStack stack, int mouseX, int mouseY, float partialT ClientUtil.displaySprite(noteBgLocation); blit(stack, - this.getX(), this.getY(), + x, y, blitOffset, 0, width, height, width*3, height @@ -221,7 +222,7 @@ public void renderButton(PoseStack stack, int mouseX, int mouseY, float partialT ClientUtil.displaySprite(noteLocation); blit(stack, - this.getX() + noteWidth/2, this.getY() + noteHeight/2, + x + noteWidth/2, y + noteHeight/2, //NOTE: I have no clue whatsoever how on earth these 1.025 and .9 multipliers actually work. // Like seriously wtf why fkuaherjgaeorg i hate maths //NOTE: Moved said numbers to the randomAss vars @@ -294,7 +295,7 @@ public void playDownSound(SoundManager pHandler) {} @Override - protected void updateWidgetNarration(final NarrationElementOutput neo) { + public void updateNarration(final NarrationElementOutput neo) { neo.add(NarratedElementType.TITLE, getMessage()); } diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/note/animation/NoteAnimationController.java b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/note/animation/NoteAnimationController.java index ef8944c0..b0712db2 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/note/animation/NoteAnimationController.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/note/animation/NoteAnimationController.java @@ -41,7 +41,8 @@ protected void resetAnimVars() { button.setHeight(NoteButton.getSize()); dSize = NoteButton.getSize(); - button.setPosition(button.getInitX(), button.getInitY()); + button.x = button.getInitX(); + button.y = button.getInitY(); } public void play(final boolean isForeign) { diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/notegrid/AbstractGridInstrumentScreen.java b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/notegrid/AbstractGridInstrumentScreen.java index 9358f46e..5067fb55 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/notegrid/AbstractGridInstrumentScreen.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/notegrid/AbstractGridInstrumentScreen.java @@ -104,7 +104,7 @@ protected void init() { grid = noteGrid.initNoteGridWidget(.9f, width, height); addRenderableWidget(grid); - initOptionsButton(grid.getY() - 15); + initOptionsButton(grid.y - 15); super.init(); } @@ -129,7 +129,7 @@ protected void renderInstrumentBackground(final PoseStack stack) { if (columns() != 3) return; - final int clefX = grid.getX() - NoteButton.getSize() + 8; + final int clefX = grid.x - NoteButton.getSize() + 8; for (int i = 0; i < columns(); i++) { renderClef(stack, i, clefX); @@ -141,7 +141,7 @@ protected void renderClef(final PoseStack stack, final int index, final int x) { ClientUtil.displaySprite(getResourceFromGlob("background/clefs.png")); blit(stack, - x, grid.getY() + (NoteButton.getSize() + 16) * index, + x, grid.y + (NoteButton.getSize() + 16) * index, index * CLEF_WIDTH, 0, CLEF_WIDTH, CLEF_HEIGHT, CLEF_WIDTH*3, CLEF_HEIGHT @@ -152,7 +152,7 @@ protected void renderStaff(final PoseStack stack, final int index) { ClientUtil.displaySprite(getResourceFromGlob("background/staff.png")); blit(stack, - grid.getX() + 2, grid.getY() + 8 + ((NoteButton.getSize() + NoteGrid.PADDING_VERT + 6) * index), + grid.x + 2, grid.y + 8 + ((NoteButton.getSize() + NoteGrid.PADDING_VERT + 6) * index), 0, 0, grid.getWidth() - 5, NoteButton.getSize(), grid.getWidth() - 5, NoteButton.getSize() diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/notegrid/NoteGrid.java b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/notegrid/NoteGrid.java index 23d66463..70544b97 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/notegrid/NoteGrid.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/notegrid/NoteGrid.java @@ -6,13 +6,12 @@ import com.cstav.genshinstrument.client.config.ModClientConfigs; import com.cstav.genshinstrument.client.gui.screens.instrument.partial.note.NoteButton; import com.cstav.genshinstrument.client.gui.screens.instrument.partial.note.label.NoteLabelSupplier; +import com.cstav.genshinstrument.client.gui.widget.copied.GridWidget; +import com.cstav.genshinstrument.client.gui.widget.copied.GridWidget.RowHelper; import com.cstav.genshinstrument.sound.NoteSound; import com.mojang.blaze3d.platform.InputConstants.Key; import net.minecraft.client.gui.components.AbstractWidget; -import net.minecraft.client.gui.components.FrameWidget; -import net.minecraft.client.gui.components.GridWidget; -import net.minecraft.client.gui.components.GridWidget.RowHelper; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -109,8 +108,9 @@ public AbstractWidget initNoteGridWidget(final float vertAlignment, final int sc forEach(rowHelper::addChild); grid.pack(); - - FrameWidget.alignInRectangle(grid, 0, 0, screenWidth, screenHeight, 0.5f, vertAlignment); + grid.x = (screenWidth - grid.getWidth()) / 2; + grid.y = screenHeight - grid.getHeight() - 25; + grid.pack(); // Initialize all the notes forEach(NoteButton::init); diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/notegrid/NoteGridButton.java b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/notegrid/NoteGridButton.java index 9bc473d3..83649da2 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/notegrid/NoteGridButton.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/screens/instrument/partial/notegrid/NoteGridButton.java @@ -86,7 +86,7 @@ protected void renderAccidental(PoseStack stack, int index, int offsetX, int off ClientUtil.displaySprite(accidentalsLocation); blit(stack, - getX() - 9 + offsetX, getY() - 6 + offsetY, + x - 9 + offsetX, y - 6 + offsetY, // Handle sharp imperfections isPlaying() ? textureWidth/2 : 0, (spritePartHeight) * index - index, textureWidth/2, spritePartHeight + ((index == 1) ? 3 : 0), diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/screens/options/instrument/AbstractInstrumentOptionsScreen.java b/src/main/java/com/cstav/genshinstrument/client/gui/screens/options/instrument/AbstractInstrumentOptionsScreen.java index 55da49c0..3fb1d760 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/screens/options/instrument/AbstractInstrumentOptionsScreen.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/screens/options/instrument/AbstractInstrumentOptionsScreen.java @@ -2,6 +2,7 @@ import java.awt.Color; import java.util.HashMap; +import java.util.function.Function; import javax.annotation.Nullable; @@ -12,19 +13,18 @@ import com.cstav.genshinstrument.client.gui.screens.instrument.partial.note.NoteButton; import com.cstav.genshinstrument.client.gui.screens.instrument.partial.note.label.AbsGridLabels; import com.cstav.genshinstrument.client.gui.screens.instrument.partial.note.label.INoteLabel; +import com.cstav.genshinstrument.client.gui.widget.copied.GridWidget; +import com.cstav.genshinstrument.client.gui.widget.copied.GridWidget.RowHelper; +import com.cstav.genshinstrument.client.gui.widget.copied.SpacerWidget; import com.cstav.genshinstrument.sound.NoteSound; import com.ibm.icu.text.DecimalFormat; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; +import net.minecraft.client.OptionInstance.TooltipSupplier; import net.minecraft.client.gui.components.AbstractSliderButton; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.CycleButton; -import net.minecraft.client.gui.components.FrameWidget; -import net.minecraft.client.gui.components.GridWidget; -import net.minecraft.client.gui.components.GridWidget.RowHelper; -import net.minecraft.client.gui.components.SpacerWidget; -import net.minecraft.client.gui.components.Tooltip; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; @@ -129,20 +129,19 @@ protected void init() { initOptionsGrid(grid, rowHelper); grid.pack(); - - FrameWidget.alignInRectangle(grid, 0, 0, width, height, 0.5f, 0); + + grid.setX((width - grid.getWidth()) / 2); grid.setY(40); grid.pack(); addRenderableWidget(grid); + - - final Button doneBtn = Button.builder(CommonComponents.GUI_DONE, (btn) -> onClose()) - .width(getSmallButtonWidth()) - .pos((width - getSmallButtonWidth())/2, Math.min(grid.getY() + grid.getHeight() + 50, height - getButtonHeight() - 15)) - .build(); + final Button doneBtn = new Button( + (width - getSmallButtonWidth())/2, + Math.min(grid.y + grid.getHeight() + 60, height - getButtonHeight() - 15), + getSmallButtonWidth(), getButtonHeight(), CommonComponents.GUI_DONE, (btn) -> onClose()); addRenderableWidget(doneBtn); - } protected void initAudioSection(final GridWidget grid, final RowHelper rowHelper) { @@ -152,7 +151,7 @@ protected void initAudioSection(final GridWidget grid, final RowHelper rowHelper .withValues(InstrumentChannelType.values()) .withInitialValue(ModClientConfigs.CHANNEL_TYPE.get()) - .withTooltip((soundType) -> Tooltip.create(switch (soundType) { + .withTooltip(tooltip((soundType) -> switch (soundType) { case MIXED -> translatableArgs(SOUND_CHANNEL_KEY+".mixed.tooltip", NoteSound.STEREO_RANGE); case STEREO -> Component.translatable(SOUND_CHANNEL_KEY+".stereo.tooltip"); default -> CommonComponents.EMPTY; @@ -198,7 +197,7 @@ private static double divisibleBy5(double number) { final CycleButton stopMusic = CycleButton.booleanBuilder(CommonComponents.OPTION_ON, CommonComponents.OPTION_OFF) .withInitialValue(ModClientConfigs.STOP_MUSIC_ON_PLAY.get()) - .withTooltip((value) -> Tooltip.create(Component.translatable(STOP_MUSIC_KEY+".tooltip", NoteSound.STOP_SOUND_DISTANCE))) + .withTooltip(tooltip((value) -> Component.translatable(STOP_MUSIC_KEY+".tooltip", NoteSound.STOP_SOUND_DISTANCE))) .create(0, 0, getSmallButtonWidth(), getButtonHeight(), Component.translatable(STOP_MUSIC_KEY), this::onMusicStopChanged @@ -218,7 +217,7 @@ protected void initVisualsSection(final GridWidget grid, final RowHelper rowHelp final CycleButton sharedInstrument = CycleButton.booleanBuilder(CommonComponents.OPTION_ON, CommonComponents.OPTION_OFF) .withInitialValue(ModClientConfigs.SHARED_INSTRUMENT.get()) - .withTooltip((value) -> Tooltip.create(Component.translatable("button.genshinstrument.shared_instrument.tooltip"))) + .withTooltip(tooltip((value) -> Component.translatable("button.genshinstrument.shared_instrument.tooltip"))) .create(0, 0, getSmallButtonWidth(), getButtonHeight(), Component.translatable("button.genshinstrument.shared_instrument"), this::onSharedInstrumentChanged @@ -227,7 +226,7 @@ protected void initVisualsSection(final GridWidget grid, final RowHelper rowHelp final CycleButton accurateAccidentals = CycleButton.booleanBuilder(CommonComponents.OPTION_ON, CommonComponents.OPTION_OFF) .withInitialValue(ModClientConfigs.ACCURATE_ACCIDENTALS.get()) - .withTooltip((value) -> Tooltip.create(Component.translatable("button.genshinstrument.accurate_accidentals.tooltip"))) + .withTooltip(tooltip((value) -> Component.translatable("button.genshinstrument.accurate_accidentals.tooltip"))) .create(0, 0, getSmallButtonWidth(), getButtonHeight(), Component.translatable("button.genshinstrument.accurate_accidentals"), this::onAccurateAccidentalsChanged @@ -247,6 +246,10 @@ protected void initVisualsSection(final GridWidget grid, final RowHelper rowHelp } } + private TooltipSupplier tooltip(final Function text) { + return (value) -> minecraft.font.split(text.apply(value), 200); + } + /** * Fills the settings grid with all the necessary widgets, buttons and such @@ -302,7 +305,6 @@ protected void onEmitRingChanged(final CycleButton button, final boolea } protected void onSharedInstrumentChanged(final CycleButton button, final boolean value) { ModClientConfigs.SHARED_INSTRUMENT.set(value); - System.out.println("sharing is caring"); } protected void onAccurateAccidentalsChanged(final CycleButton button, final boolean value) { ModClientConfigs.ACCURATE_ACCIDENTALS.set(value); @@ -358,10 +360,4 @@ private static MutableComponent translatableArgs(final String key, final Object ); } - @Override - public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { - // System.out.println("clicked on screen"); - return super.mouseClicked(pMouseX, pMouseY, pButton); - } - } \ No newline at end of file diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/screens/options/instrument/FloralZitherOptionsScreen.java b/src/main/java/com/cstav/genshinstrument/client/gui/screens/options/instrument/FloralZitherOptionsScreen.java index df8fa34e..5329aea0 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/screens/options/instrument/FloralZitherOptionsScreen.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/screens/options/instrument/FloralZitherOptionsScreen.java @@ -5,12 +5,12 @@ import com.cstav.genshinstrument.client.config.ModClientConfigs; import com.cstav.genshinstrument.client.config.enumType.ZitherSoundType; import com.cstav.genshinstrument.client.gui.screens.instrument.floralzither.FloralZitherScreen; +import com.cstav.genshinstrument.client.gui.widget.copied.GridWidget; +import com.cstav.genshinstrument.client.gui.widget.copied.GridWidget.RowHelper; +import com.cstav.genshinstrument.client.gui.widget.copied.SpacerWidget; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.gui.components.CycleButton; -import net.minecraft.client.gui.components.GridWidget; -import net.minecraft.client.gui.components.GridWidget.RowHelper; -import net.minecraft.client.gui.components.SpacerWidget; import net.minecraft.network.chat.Component; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/screens/options/instrument/GridInstrumentOptionsScreen.java b/src/main/java/com/cstav/genshinstrument/client/gui/screens/options/instrument/GridInstrumentOptionsScreen.java index ac0e6045..487a509b 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/screens/options/instrument/GridInstrumentOptionsScreen.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/screens/options/instrument/GridInstrumentOptionsScreen.java @@ -3,10 +3,10 @@ import com.cstav.genshinstrument.client.config.ModClientConfigs; import com.cstav.genshinstrument.client.config.enumType.label.NoteGridLabel; import com.cstav.genshinstrument.client.gui.screens.instrument.partial.notegrid.AbstractGridInstrumentScreen; +import com.cstav.genshinstrument.client.gui.widget.copied.GridWidget; +import com.cstav.genshinstrument.client.gui.widget.copied.GridWidget.RowHelper; import net.minecraft.client.gui.components.CycleButton; -import net.minecraft.client.gui.components.GridWidget; -import net.minecraft.client.gui.components.GridWidget.RowHelper; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraftforge.api.distmarker.Dist; diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/widget/BetterSlider.java b/src/main/java/com/cstav/genshinstrument/client/gui/widget/BetterSlider.java deleted file mode 100644 index e690cf31..00000000 --- a/src/main/java/com/cstav/genshinstrument/client/gui/widget/BetterSlider.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.cstav.genshinstrument.client.gui.screens.options.widget; - -import net.minecraft.network.chat.Component; -import net.minecraftforge.client.gui.widget.ForgeSlider; - -public class BetterSlider extends ForgeSlider { - - protected final SliderEvent onSliderChanged; - public BetterSlider(int x, int y, int width, int height, Component prefix, Component suffix, double minValue, - double maxValue, double currentValue, double stepSize, SliderEvent onSliderChanged) { - super(x, y, width, height, prefix, suffix, minValue, maxValue, currentValue, stepSize, 0, true); - - this.onSliderChanged = onSliderChanged; - } - - @Override - protected void applyValue() { - onSliderChanged.run(this, getValue()); - } - - // Forge's very, very clever overflow implementation makes clients - // (primarily Optifine clients) crash - // For some reason the ellipsize method is undefined - // Beats me idk - //NOTE: Seems to note exist in 1.19.2 - // @Override - // public void renderButton(@NotNull PoseStack poseStack, int mouseX, int mouseY, float partialTick) - // { - // RenderSystem.setShader(GameRenderer::getPositionTexShader); - // RenderSystem.setShaderTexture(0, WIDGETS_LOCATION); - - // final Minecraft mc = Minecraft.getInstance(); - // final int bgYImage = this.getYImage(this.isHoveredOrFocused()); - // ScreenUtils.blitWithBorder(poseStack, - // this.x, this.y, - // 0, 46 + bgYImage * 20, - // this.width, this.height, - // 200, 20, - // 2, 3, - // 2, 2 - // , this.getBlitOffset()); - - // final int sliderYImage = (this.isHoveredOrFocused() ? 2 : 1) * 20; - // ScreenUtils.blitWithBorder(poseStack, - // this.getX() + (int)(this.value * (double)(this.width - 8)), this.getY(), - // 0, 46 + sliderYImage, - // 8, this.height, - // 200, 20, - // 2, 3, 2, 2 - // , this.getBlitOffset()); - - // // final FormattedText message = mc.font.ellipsize(getMessage(), this.width - 6); - // drawCenteredString(poseStack, mc.font, getMessage(), this.getX() + this.width / 2, this.getY() + (this.height - 8) / 2, getFGColor()); - // } - - - @FunctionalInterface - public static interface SliderEvent { - void run(final BetterSlider slider, final double value); - } -} diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/AbstractContainerWidget.java b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/AbstractContainerWidget.java index 98010e34..1a9d3cbe 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/AbstractContainerWidget.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/AbstractContainerWidget.java @@ -1,4 +1,4 @@ -package com.cstav.genshinstrument.client.gui.screens.options.widget.copied; +package com.cstav.genshinstrument.client.gui.widget.copied; import java.util.List; import java.util.Optional; diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/AbstractWidget2.java b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/AbstractWidget2.java index 06051cb0..a86bd8ca 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/AbstractWidget2.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/AbstractWidget2.java @@ -1,4 +1,4 @@ -package com.cstav.genshinstrument.client.gui.screens.options.widget.copied; +package com.cstav.genshinstrument.client.gui.widget.copied; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.network.chat.Component; diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/BelowOrAboveWidgetTooltipPositioner.java b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/BelowOrAboveWidgetTooltipPositioner.java index b6716f34..9ed7f9ba 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/BelowOrAboveWidgetTooltipPositioner.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/BelowOrAboveWidgetTooltipPositioner.java @@ -1,4 +1,4 @@ -package com.cstav.genshinstrument.client.gui.screens.options.widget.copied; +package com.cstav.genshinstrument.client.gui.widget.copied; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.screens.Screen; diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/ClientTooltipPositioner.java b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/ClientTooltipPositioner.java index 45108cdc..cfa651fc 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/ClientTooltipPositioner.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/ClientTooltipPositioner.java @@ -1,4 +1,4 @@ -package com.cstav.genshinstrument.client.gui.screens.options.widget.copied; +package com.cstav.genshinstrument.client.gui.widget.copied; import org.joml.Vector2ic; diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/CreateNarration.java b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/CreateNarration.java index 3470f69c..8ae78c2f 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/CreateNarration.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/CreateNarration.java @@ -1,4 +1,4 @@ -package com.cstav.genshinstrument.client.gui.screens.options.widget.copied; +package com.cstav.genshinstrument.client.gui.widget.copied; import java.util.function.Supplier; diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/Divisor.java b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/Divisor.java index e63174be..b448537a 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/Divisor.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/Divisor.java @@ -1,4 +1,4 @@ -package com.cstav.genshinstrument.client.gui.screens.options.widget.copied; +package com.cstav.genshinstrument.client.gui.widget.copied; import com.google.common.annotations.VisibleForTesting; import it.unimi.dsi.fastutil.ints.IntIterator; diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/GridWidget.java b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/GridWidget.java index 3313db22..208b2b33 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/GridWidget.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/GridWidget.java @@ -1,4 +1,4 @@ -package com.cstav.genshinstrument.client.gui.screens.options.widget.copied; +package com.cstav.genshinstrument.client.gui.widget.copied; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/LayoutSettings.java b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/LayoutSettings.java index 4eb52cfb..5c2117be 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/LayoutSettings.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/LayoutSettings.java @@ -1,4 +1,4 @@ -package com.cstav.genshinstrument.client.gui.screens.options.widget.copied; +package com.cstav.genshinstrument.client.gui.widget.copied; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/LinearLayoutWidget.java b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/LinearLayoutWidget.java index a6073734..67c1a6c5 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/LinearLayoutWidget.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/LinearLayoutWidget.java @@ -1,4 +1,4 @@ -package com.cstav.genshinstrument.client.gui.screens.options.widget.copied; +package com.cstav.genshinstrument.client.gui.widget.copied; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/OnPress.java b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/OnPress.java index 78c41813..c0da6d35 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/OnPress.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/OnPress.java @@ -1,4 +1,4 @@ -package com.cstav.genshinstrument.client.gui.screens.options.widget.copied; +package com.cstav.genshinstrument.client.gui.widget.copied; import net.minecraft.client.gui.components.Button; import net.minecraftforge.api.distmarker.Dist; diff --git a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/SpacerWidget.java b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/SpacerWidget.java index 6bd5db1c..1504dfc5 100644 --- a/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/SpacerWidget.java +++ b/src/main/java/com/cstav/genshinstrument/client/gui/widget/copied/SpacerWidget.java @@ -1,4 +1,4 @@ -package com.cstav.genshinstrument.client.gui.screens.options.widget.copied; +package com.cstav.genshinstrument.client.gui.widget.copied; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.narration.NarrationElementOutput; diff --git a/src/main/java/com/cstav/genshinstrument/item/InstrumentItem.java b/src/main/java/com/cstav/genshinstrument/item/InstrumentItem.java index 76ec4071..830155d0 100644 --- a/src/main/java/com/cstav/genshinstrument/item/InstrumentItem.java +++ b/src/main/java/com/cstav/genshinstrument/item/InstrumentItem.java @@ -2,6 +2,7 @@ import java.util.function.Consumer; +import com.cstav.genshinstrument.ModCreativeModeTabs; import com.cstav.genshinstrument.capability.instrumentOpen.InstrumentOpenProvider; import com.cstav.genshinstrument.client.gui.screens.instrument.partial.AbstractInstrumentScreen; import com.cstav.genshinstrument.item.clientExtensions.ClientInstrumentItem; @@ -26,12 +27,13 @@ public class InstrumentItem extends Item { protected final ServerPlayerRunnable onOpenRequest; /** + * Creates an instrument item and registers it to the Instruments item group. * @param onOpenRequest A server-side event fired when the player has requested to interact * with the instrument. * It should should send a packet to the given player for opening this instrument's screen. */ public InstrumentItem(final ServerPlayerRunnable onOpenRequest) { - this(onOpenRequest, new Properties()); + this(onOpenRequest, new Properties().tab(ModCreativeModeTabs.instrumentsTab)); } /** * @param onOpenRequest A server-side event fired when the player has requested to interact diff --git a/src/main/java/com/cstav/genshinstrument/item/ModItems.java b/src/main/java/com/cstav/genshinstrument/item/ModItems.java index 56f93cfc..f35517e7 100644 --- a/src/main/java/com/cstav/genshinstrument/item/ModItems.java +++ b/src/main/java/com/cstav/genshinstrument/item/ModItems.java @@ -2,11 +2,8 @@ import com.cstav.genshinstrument.Main; -import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.Item; -import net.minecraftforge.event.CreativeModeTabEvent; import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; import net.minecraftforge.registries.DeferredRegister; @@ -45,14 +42,4 @@ public static void register(final IEventBus bus) { ) ; - - @SubscribeEvent - public static void registerItemsToTab(final CreativeModeTabEvent.BuildContents event) { - if (!event.getTab().equals(CreativeModeTabs.TOOLS_AND_UTILITIES)) - return; - - for (final RegistryObject itemObj : ITEMS.getEntries()) - event.accept(itemObj.get()); - } - } diff --git a/src/main/java/com/cstav/genshinstrument/sound/NoteSound.java b/src/main/java/com/cstav/genshinstrument/sound/NoteSound.java index 7d3d9817..9b82d21f 100644 --- a/src/main/java/com/cstav/genshinstrument/sound/NoteSound.java +++ b/src/main/java/com/cstav/genshinstrument/sound/NoteSound.java @@ -154,7 +154,7 @@ public void playAtPos(float pitch, UUID playerUUID, InteractionHand hand, return; if (distanceFromPlayer > LOCAL_RANGE) - level.playLocalSound(pos, + level.playLocalSound(pos.getX(), pos.getY(), pos.getZ(), getByPreference(distanceFromPlayer), SoundSource.RECORDS, 1, NoteSound.clampPitch(pitch) , false); @@ -179,13 +179,13 @@ public static float clampPitch(final float pitch) { public void writeToNetwork(final FriendlyByteBuf buf) { - mono.writeToNetwork(buf); - buf.writeOptional(stereo, (fbb, sound) -> sound.writeToNetwork(fbb)); + buf.writeResourceLocation(mono.getLocation()); + buf.writeOptional(stereo, (fbb, sound) -> fbb.writeResourceLocation(sound.getLocation())); } public static NoteSound readFromNetwork(final FriendlyByteBuf buf) { return new NoteSound( - SoundEvent.readFromNetwork(buf), - buf.readOptional(SoundEvent::readFromNetwork) + new SoundEvent(buf.readResourceLocation()), + buf.readOptional((fbb) -> new SoundEvent(fbb.readResourceLocation())) ); } diff --git a/src/main/java/com/cstav/genshinstrument/sound/NoteSoundRegistrer.java b/src/main/java/com/cstav/genshinstrument/sound/NoteSoundRegistrer.java index c8f8c229..66a4cfe6 100644 --- a/src/main/java/com/cstav/genshinstrument/sound/NoteSoundRegistrer.java +++ b/src/main/java/com/cstav/genshinstrument/sound/NoteSoundRegistrer.java @@ -63,7 +63,7 @@ public static NoteSound registerNote(DeferredRegister soundRegistrer } public static SoundEvent createSoundUnsafe(final ResourceLocation location) { - return SoundEvent.createVariableRangeEvent(location); + return new SoundEvent(location); }