From c6ccdb0d95eed61965d9ae0c5e094220c1c394fb Mon Sep 17 00:00:00 2001 From: Motschen Date: Wed, 26 Apr 2023 20:47:43 +0200 Subject: [PATCH] VisualOverhaul 5.0.0 - The Iconic Update - Port to 1.19.4 - Use Architectury -> Forge & native Quilt support! - New Feature: Icon Buttons! - Makes buttons look less bland by adding icons to them - Loaded from resourcepacks - Currently uses vanilla items as icons - Organize config screen in tabs --- build.gradle | 9 +- common/build.gradle | 1 - .../visualoverhaul/IconicButtons.java | 121 ++++++++++++++++++ .../visualoverhaul/VisualOverhaulClient.java | 5 + .../BrewingStandBlockEntityRenderer.java | 21 +-- .../renderer/FurnaceBlockEntityRenderer.java | 27 ++-- .../renderer/JukeboxBlockEntityRenderer.java | 22 ++-- .../visualoverhaul/config/VOConfig.java | 26 ++-- .../mixin/JukeboxBlockEntityAccessor.java | 14 ++ .../mixin/MixinJukeboxBlockEntity.java | 2 +- .../visualoverhaul/mixin/MixinPotionItem.java | 22 ---- .../mixin/MixinPressableWidget.java | 29 +++++ .../mixin/MixinSliderWidget.java | 29 +++++ .../mixin/MixinSoundSystem.java | 4 +- .../mixin/TextureManagerAccessor.java | 12 ++ .../visualoverhaul/util/ModIconUtil.java | 63 +++++++++ .../gui/icons/addserver.add.properties | 1 + ..._attribution.button.attribution.properties | 1 + ..._and_attribution.button.credits.properties | 1 + ...and_attribution.button.licenses.properties | 1 + .../gui/icons/fml.menu.mods.properties | 1 + .../gui/icons/gui.advancements.properties | 1 + .../textures/gui/icons/gui.back.properties | 1 + .../textures/gui/icons/gui.cancel.properties | 1 + .../textures/gui/icons/gui.done.properties | 1 + .../textures/gui/icons/gui.no.properties | 1 + .../textures/gui/icons/gui.proceed.properties | 1 + .../textures/gui/icons/gui.stats.properties | 1 + .../textures/gui/icons/gui.yes.properties | 1 + .../gui/icons/menu.disconnect.properties | 1 + .../gui/icons/menu.multiplayer.properties | 1 + .../textures/gui/icons/menu.online.properties | 1 + .../gui/icons/menu.options.properties | 1 + .../gui/icons/menu.playerreporting.properties | 1 + .../textures/gui/icons/menu.quit.properties | 1 + .../gui/icons/menu.reportbugs.properties | 1 + .../gui/icons/menu.returntogame.properties | 1 + .../gui/icons/menu.returntomenu.properties | 1 + .../gui/icons/menu.sendfeedback.properties | 1 + .../gui/icons/menu.sharetolan.properties | 1 + .../gui/icons/menu.singleplayer.properties | 1 + ...tconfig.enum.configbutton.false.properties | 1 + ...dnightconfig.enum.configbutton.modmenu.png | Bin 0 -> 123 bytes ...htconfig.enum.configbutton.true.properties | 1 + .../gui/icons/modmenu.title.properties | 1 + .../options.accessibility.title.properties | 1 + .../gui/icons/options.chat.title.properties | 1 + .../gui/icons/options.controls.properties | 1 + ...options.credits_and_attribution.properties | 1 + .../textures/gui/icons/options.fov.properties | 1 + .../gui/icons/options.language.properties | 1 + .../gui/icons/options.online.properties | 1 + .../gui/icons/options.resourcepack.properties | 1 + .../options.skincustomisation.properties | 1 + .../gui/icons/options.sounds.properties | 1 + .../gui/icons/options.telemetry.properties | 1 + .../gui/icons/options.video.properties | 1 + .../gui/icons/pack.openfolder.properties | 1 + .../physicsmod.menu.main.title.properties | 1 + .../gui/icons/selectserver.add.properties | 1 + .../gui/icons/selectserver.delete.properties | 1 + .../gui/icons/selectserver.direct.properties | 1 + .../gui/icons/selectserver.edit.properties | 1 + .../gui/icons/selectserver.refresh.properties | 1 + .../gui/icons/selectserver.select.properties | 1 + .../gui/icons/selectworld.create.properties | 1 + .../gui/icons/selectworld.delete.properties | 1 + .../gui/icons/selectworld.edit.properties | 1 + .../icons/selectworld.edit.save.properties | 1 + .../gui/icons/selectworld.recreate.properties | 1 + .../gui/icons/selectworld.select.properties | 1 + ...loth-config.boolean.value.false.properties | 1 + ...cloth-config.boolean.value.true.properties | 1 + .../assets/visualoverhaul/lang/de_de.json | 23 ++++ .../assets/visualoverhaul/lang/en_us.json | 11 +- .../assets/visualoverhaul/lang/fr_fr.json | 3 +- .../main/resources/visualoverhaul.mixins.json | 5 +- .../RadioJukeboxBlockEntityRenderer.java | 74 +++++------ .../compat/phonos/init/PhonosCompatInit.java | 9 +- fabric/build.gradle | 3 +- .../fabric/VisualOverhaulClientFabric.java | 50 ++++++-- .../fabric/mixin/MixinJukeboxBlock.java | 2 +- .../util/fabric/ModIconUtilImpl.java | 13 ++ forge/build.gradle | 3 +- .../forge/VisualOverhaulClientEvents.java | 29 +++-- .../forge/VisualOverhaulClientForge.java | 3 +- .../forge/mixin/MixinJukeboxBlock.java | 2 +- .../util/forge/ModIconUtilImpl.java | 13 ++ gradle.properties | 17 +-- quilt/build.gradle | 3 +- .../quilt/VisualOverhaulClientQuilt.java | 38 ++++-- .../quilt/mixin/MixinJukeboxBlock.java | 2 +- .../util/fabric/ModIconUtilImpl.java | 13 ++ settings.gradle | 1 - 94 files changed, 611 insertions(+), 169 deletions(-) create mode 100644 common/src/main/java/eu/midnightdust/visualoverhaul/IconicButtons.java create mode 100644 common/src/main/java/eu/midnightdust/visualoverhaul/mixin/JukeboxBlockEntityAccessor.java delete mode 100644 common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinPotionItem.java create mode 100644 common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinPressableWidget.java create mode 100644 common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSliderWidget.java create mode 100644 common/src/main/java/eu/midnightdust/visualoverhaul/mixin/TextureManagerAccessor.java create mode 100644 common/src/main/java/eu/midnightdust/visualoverhaul/util/ModIconUtil.java create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/addserver.add.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/credits_and_attribution.button.attribution.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/credits_and_attribution.button.credits.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/credits_and_attribution.button.licenses.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/fml.menu.mods.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/gui.advancements.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/gui.back.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/gui.cancel.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/gui.done.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/gui.no.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/gui.proceed.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/gui.stats.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/gui.yes.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/menu.disconnect.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/menu.multiplayer.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/menu.online.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/menu.options.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/menu.playerreporting.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/menu.quit.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/menu.reportbugs.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/menu.returntogame.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/menu.returntomenu.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/menu.sendfeedback.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/menu.sharetolan.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/menu.singleplayer.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/midnightlib.midnightconfig.enum.configbutton.false.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/midnightlib.midnightconfig.enum.configbutton.modmenu.png create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/midnightlib.midnightconfig.enum.configbutton.true.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/modmenu.title.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/options.accessibility.title.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/options.chat.title.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/options.controls.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/options.credits_and_attribution.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/options.fov.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/options.language.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/options.online.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/options.resourcepack.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/options.skincustomisation.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/options.sounds.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/options.telemetry.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/options.video.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/pack.openfolder.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/physicsmod.menu.main.title.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.add.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.delete.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.direct.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.edit.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.refresh.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.select.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.create.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.delete.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.edit.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.edit.save.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.recreate.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.select.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/text.cloth-config.boolean.value.false.properties create mode 100644 common/src/main/resources/assets/iconic/textures/gui/icons/text.cloth-config.boolean.value.true.properties create mode 100755 common/src/main/resources/assets/visualoverhaul/lang/de_de.json create mode 100644 fabric/src/main/java/eu/midnightdust/visualoverhaul/util/fabric/ModIconUtilImpl.java create mode 100644 forge/src/main/java/eu/midnightdust/visualoverhaul/util/forge/ModIconUtilImpl.java create mode 100644 quilt/src/main/java/eu/midnightdust/visualoverhaul/util/fabric/ModIconUtilImpl.java diff --git a/build.gradle b/build.gradle index c5d41c7..f383361 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,9 @@ plugins { id "architectury-plugin" version "3.4-SNAPSHOT" - id "dev.architectury.loom" version "1.0-SNAPSHOT" apply false + id "dev.architectury.loom" version "1.1-SNAPSHOT" apply false } architectury { - injectInjectables = false minecraft = rootProject.minecraft_version } @@ -17,16 +16,12 @@ repositories { subprojects { apply plugin: "dev.architectury.loom" - loom { - silentMojangMappingsLicense() - } - dependencies { minecraft "com.mojang:minecraft:${rootProject.minecraft_version}" // The following line declares the mojmap mappings, you may use other mappings as well //mappings loom.officialMojangMappings() // The following line declares the yarn mappings you may select this one as well. - mappings "net.fabricmc:yarn:1.19.2+build.3:v2" + mappings "net.fabricmc:yarn:${rootProject.yarn_mappings}:v2" } } diff --git a/common/build.gradle b/common/build.gradle index 64e9a53..0bc0de5 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -1,5 +1,4 @@ architectury { - injectInjectables = false common(rootProject.enabled_platforms.split(",")) } diff --git a/common/src/main/java/eu/midnightdust/visualoverhaul/IconicButtons.java b/common/src/main/java/eu/midnightdust/visualoverhaul/IconicButtons.java new file mode 100644 index 0000000..d6f250e --- /dev/null +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/IconicButtons.java @@ -0,0 +1,121 @@ +package eu.midnightdust.visualoverhaul; + +import com.mojang.blaze3d.systems.RenderSystem; +import eu.midnightdust.visualoverhaul.config.VOConfig; +import eu.midnightdust.visualoverhaul.mixin.TextureManagerAccessor; +import eu.midnightdust.visualoverhaul.util.ModIconUtil; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.widget.ClickableWidget; +import net.minecraft.client.texture.*; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.resource.ResourceManager; +import net.minecraft.text.Text; +import net.minecraft.text.TranslatableTextContent; +import net.minecraft.util.Identifier; +import org.apache.logging.log4j.LogManager; + +import java.io.InputStream; +import java.util.Properties; + +public class IconicButtons extends DrawableHelper { + MinecraftClient client = MinecraftClient.getInstance(); + private String buttonId; + private Text prevText; + private Identifier iconId; + public IconicButtons(ClickableWidget widget) { + init(widget); + } + public void init(ClickableWidget widget) { + prevText = widget.getMessage(); + buttonId = (widget.getMessage().getContent() instanceof TranslatableTextContent translatableTextContent) ? translatableTextContent.getKey().toLowerCase() : ""; + if (VOConfig.buttonIcons && !buttonId.equals("")) { + if (VOConfig.debug) System.out.println(buttonId); + iconId = new Identifier("iconic", "textures/gui/icons/" + buttonId.toLowerCase()+".png"); + if (buttonId.endsWith(".midnightconfig.title")) + { + iconId = new Identifier("modid", buttonId.replace(".midnightconfig.title", "") + "_icon"); + NativeImageBackedTexture icon = new ModIconUtil(buttonId.replace(".midnightconfig.title", "")).createModIcon(); + if (icon != null) { + client.getTextureManager().registerTexture(iconId, icon); + } else { + iconId = null; + } + } + if (iconId == null) return; + TextureManager textureManager = client.getTextureManager(); + AbstractTexture abstractTexture = textureManager.getOrDefault(iconId, null); + if (abstractTexture == null) { + abstractTexture = new ResourceTexture(iconId); + try { abstractTexture.load(((TextureManagerAccessor)textureManager).getResourceContainer()); + } catch (Exception e) {iconId = null; return;} + textureManager.registerTexture(iconId, abstractTexture); + } + if (abstractTexture == MissingSprite.getMissingSpriteTexture()) iconId = null; + } + } + public void renderIcons(MatrixStack matrices, ClickableWidget widget, float alpha) { + if (widget.getMessage() == null) return; + if (prevText != widget.getMessage()) init(widget); + if (VOConfig.buttonIcons && !buttonId.equals("") && iconId != null) { + int scaledWidth = client.getWindow().getScaledWidth(); + + boolean limitedSpace = client.textRenderer.getWidth(widget.getMessage()) > (widget.getWidth() * 0.75f); + boolean showLeftWhenBoth = (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.BOTH) && !limitedSpace) || (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.BOTH) && widget.getX() < scaledWidth/2); + boolean showRightWhenBoth = (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.BOTH) && !limitedSpace) || (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.BOTH) && widget.getX() > scaledWidth/2); + + RenderSystem.setShaderTexture(0, iconId); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, alpha); + if (!widget.active) RenderSystem.setShaderColor(0.3F, 0.3F, 0.3F, alpha); + RenderSystem.enableBlend(); + RenderSystem.enableDepthTest(); + int inset = 2; + if (VOConfig.zoomIconOnHover && widget.isSelected()) inset = 1; + int size = 20-inset*2; + + if (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.LEFT) || showLeftWhenBoth || (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.LOCATION) && widget.getX() < scaledWidth/2)) + drawTexture(matrices, widget.getX()+inset, widget.getY()+inset, 0, 0, size, size, size, size); + + if (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.RIGHT) || showRightWhenBoth || (VOConfig.buttonIconPosition.equals(VOConfig.IconPosition.LOCATION) && widget.getX()+widget.getWidth() > scaledWidth/2)) + drawTexture(matrices, widget.getX()+widget.getWidth()-20+inset, widget.getY()+inset, 0, 0, size, size, size, size); + + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + } + } + public static void reload(ResourceManager manager) { + manager.findResources("textures", path -> path.getPath().contains(".properties")).forEach((id, resource) -> { + if (manager.getResource(id).isEmpty()) return; + try (InputStream stream = manager.getResource(id).get().getInputStream()) { + Identifier iconId = new Identifier(id.getNamespace(), id.getPath().replace(".properties", ".png")); + if (manager.getResource(iconId).isPresent()) return; + + Properties properties = new Properties(); + properties.load(stream); + while (properties.get("properties") != null) { + Identifier propertiesId = new Identifier(properties.getProperty("properties")); + String textureId = propertiesId.toString().replace(".properties", ".png"); + + properties.clear(); + if (manager.getResource(Identifier.tryParse(textureId)).isPresent()) { // If a texture is present at the location of the referenced properties file, use that instead + properties.put("texture", textureId); + } + else if (manager.getResource(propertiesId).isPresent()) { + properties.load(manager.getResource(propertiesId).get().getInputStream()); // Else load the referenced properties file, if present + } else return; + } + + if (properties.get("texture") != null) { + Identifier textureId = new Identifier(properties.getProperty("texture")); + TextureManager textureManager = MinecraftClient.getInstance().getTextureManager(); + AbstractTexture abstractTexture = textureManager.getOrDefault(iconId, null); + if (abstractTexture == null) { + abstractTexture = new ResourceTexture(textureId); + textureManager.registerTexture(iconId, abstractTexture); + } + } + } catch (Exception e) { + LogManager.getLogger("Iconic").error("Error occurred while loading texture.properties " + id.toString(), e); + } + }); + } +} diff --git a/common/src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaulClient.java b/common/src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaulClient.java index b1695b6..17a7f07 100755 --- a/common/src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaulClient.java +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/VisualOverhaulClient.java @@ -2,6 +2,11 @@ package eu.midnightdust.visualoverhaul; import eu.midnightdust.visualoverhaul.config.VOConfig; import net.minecraft.block.Block; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.color.world.BiomeColors; +import net.minecraft.client.item.ModelPredicateProviderRegistry; +import net.minecraft.item.MusicDiscItem; +import net.minecraft.util.Identifier; import static eu.midnightdust.visualoverhaul.VisualOverhaul.MOD_ID; diff --git a/common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/BrewingStandBlockEntityRenderer.java b/common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/BrewingStandBlockEntityRenderer.java index f19c8f4..d025bfc 100755 --- a/common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/BrewingStandBlockEntityRenderer.java +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/BrewingStandBlockEntityRenderer.java @@ -9,15 +9,20 @@ import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.WorldRenderer; import net.minecraft.client.render.block.entity.BlockEntityRenderer; import net.minecraft.client.render.block.entity.BlockEntityRendererFactory; -import net.minecraft.client.render.model.json.ModelTransformation; +import net.minecraft.client.render.model.json.ModelTransformationMode; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; -import net.minecraft.util.math.Vec3f; +import org.joml.AxisAngle4f; +import org.joml.Math; +import org.joml.Quaternionf; import java.util.Objects; @Environment(EnvType.CLIENT) public class BrewingStandBlockEntityRenderer implements BlockEntityRenderer { + private static final Quaternionf degrees45 = new Quaternionf(new AxisAngle4f(Math.toRadians(45), 0, 1, 0)); + private static final Quaternionf degrees180 = new Quaternionf(new AxisAngle4f(Math.toRadians(180), 0, 1, 0)); + private static final Quaternionf degrees315 = new Quaternionf(new AxisAngle4f(Math.toRadians(315), 0, 1, 0)); public BrewingStandBlockEntityRenderer(BlockEntityRendererFactory.Context ctx) { } @@ -37,28 +42,28 @@ public class BrewingStandBlockEntityRenderer implements BlockEntityRenderer implements BlockEntityRenderer { + private static final Quaternionf degrees90x = new Quaternionf(new AxisAngle4f(Math.toRadians(90), 1, 0, 0)); private final FurnaceWoodenPlanksModel planks; public FurnaceBlockEntityRenderer(BlockEntityRendererFactory.Context ctx) { @@ -46,10 +49,10 @@ public class FurnaceBlockEntityRenderer im if (blockEntity.getCachedState().getBlock().equals(Blocks.SMOKER)) matrices.translate(0f, -0.06f, 0f); if (blockEntity.getCachedState().getBlock().equals(Blocks.BLAST_FURNACE)) matrices.translate(0f, -0.25f, 0f); matrices.scale(1f, 1f, 1f); - matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(angle * 3 + 180)); + matrices.multiply(new Quaternionf(new AxisAngle4f(Math.toRadians(angle * 3 + 180), 0, 1, 0))); matrices.translate(0.0f, 0.0f, -0.4f); - matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(90)); - MinecraftClient.getInstance().getItemRenderer().renderItem(item1, ModelTransformation.Mode.GROUND, lightAtBlock, overlay, matrices, vertexConsumers, 0); + matrices.multiply(degrees90x); + MinecraftClient.getInstance().getItemRenderer().renderItem(item1, ModelTransformationMode.GROUND, lightAtBlock, overlay, matrices, vertexConsumers, blockEntity.getWorld(), 0); matrices.pop(); @@ -61,10 +64,10 @@ public class FurnaceBlockEntityRenderer im if (blockEntity.getCachedState().getBlock().equals(Blocks.SMOKER)) matrices.translate(0f, 0.06f, 0f); if (blockEntity.getCachedState().getBlock().equals(Blocks.BLAST_FURNACE)) matrices.translate(0f, 0.24f, 0f); matrices.scale(1f, 1f, 1f); - matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(angle * 3 + 180)); + matrices.multiply(new Quaternionf(new AxisAngle4f(Math.toRadians(angle * 3 + 180), 0, 1, 0))); matrices.translate(0.0f, 0.0f, -0.4f); - matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(90)); - MinecraftClient.getInstance().getItemRenderer().renderItem(item2, ModelTransformation.Mode.GROUND, lightAtBlock, overlay, matrices, vertexConsumers,0); + matrices.multiply(degrees90x); + MinecraftClient.getInstance().getItemRenderer().renderItem(item2, ModelTransformationMode.GROUND, lightAtBlock, overlay, matrices, vertexConsumers, blockEntity.getWorld(), 0); matrices.pop(); } @@ -80,7 +83,7 @@ public class FurnaceBlockEntityRenderer im matrices.scale(1f, 1f, 1f); - matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(angle * 3 + 180)); + matrices.multiply(new Quaternionf(new AxisAngle4f(Math.toRadians(angle * 3 + 180), 0, 1, 0))); planks.getPart().render(matrices, vertexConsumer, lightAtBlock, overlay); matrices.pop(); } @@ -88,7 +91,7 @@ public class FurnaceBlockEntityRenderer im } public static Identifier spriteToTexture(Sprite sprite) { - String texture = sprite.getId().getPath(); - return new Identifier(sprite.getId().getNamespace(), "textures/" + texture + ".png"); + String texture = sprite.getContents().getId().getPath(); + return new Identifier(sprite.getAtlasId().getNamespace(), "textures/" + texture + ".png"); } } \ No newline at end of file diff --git a/common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/JukeboxBlockEntityRenderer.java b/common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/JukeboxBlockEntityRenderer.java index 04f3f0f..b90f77f 100755 --- a/common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/JukeboxBlockEntityRenderer.java +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/block/renderer/JukeboxBlockEntityRenderer.java @@ -13,17 +13,19 @@ import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.WorldRenderer; import net.minecraft.client.render.block.entity.BlockEntityRenderer; import net.minecraft.client.render.block.entity.BlockEntityRendererFactory; -import net.minecraft.client.render.model.json.ModelTransformation; +import net.minecraft.client.render.model.json.ModelTransformationMode; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; +import net.minecraft.registry.Registries; import net.minecraft.state.property.Properties; import net.minecraft.util.Identifier; import net.minecraft.util.Util; import net.minecraft.util.math.Direction; -import net.minecraft.util.math.Vec3f; import net.minecraft.util.math.random.Random; -import net.minecraft.util.registry.Registry; import org.apache.logging.log4j.LogManager; +import org.joml.AxisAngle4f; +import org.joml.Math; +import org.joml.Quaternionf; import java.util.Objects; @@ -41,17 +43,17 @@ public class JukeboxBlockEntityRenderer implements BlockEntityRenderer minecraft:music_disc_cat) // + // Converts the Sound ID to the item ID of the appropriate disc (minecraft:music_disc.cat -> minecraft:music_disc_cat) // discItem = new Identifier(String.valueOf(SoundTest.getSound(blockEntity.getPos())).replace(".", "_")); // Tries to get the disc item from the registry // - if (Registry.ITEM.getOrEmpty(discItem).isPresent()) { - record = new ItemStack(Registry.ITEM.get(discItem)); + if (Registries.ITEM.getOrEmpty(discItem).isPresent()) { + record = new ItemStack(Registries.ITEM.get(discItem)); } else { if (VOConfig.debug) LogManager.getLogger("VisualOverhaul").warn("Error getting music disc item for " + SoundTest.getSound(blockEntity.getPos())); @@ -71,8 +73,8 @@ public class JukeboxBlockEntityRenderer implements BlockEntityRenderer getInventory(); +} diff --git a/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinJukeboxBlockEntity.java b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinJukeboxBlockEntity.java index b95e4f6..2c7f4c0 100755 --- a/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinJukeboxBlockEntity.java +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinJukeboxBlockEntity.java @@ -17,7 +17,7 @@ public abstract class MixinJukeboxBlockEntity extends BlockEntity { super(type, pos, state); } - @Inject(at = @At("RETURN"), method = "getRecord") + @Inject(at = @At("RETURN"), method = "getStack") public void getRecord(CallbackInfoReturnable cir) { JukeboxPacketUpdate.invUpdate = true; } diff --git a/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinPotionItem.java b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinPotionItem.java deleted file mode 100644 index 7737341..0000000 --- a/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinPotionItem.java +++ /dev/null @@ -1,22 +0,0 @@ -package eu.midnightdust.visualoverhaul.mixin; - -import eu.midnightdust.visualoverhaul.config.VOConfig; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.PotionItem; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(PotionItem.class) -public abstract class MixinPotionItem extends Item { - public MixinPotionItem(Settings settings) { - super(settings); - } - - @Inject(at = @At("HEAD"), method = "hasGlint", cancellable = true) - public void vo$hasGlint(ItemStack stack, CallbackInfoReturnable cir) { - if (!VOConfig.potionEnchantmentGlint) cir.setReturnValue(super.hasGlint(stack)); - } -} diff --git a/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinPressableWidget.java b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinPressableWidget.java new file mode 100644 index 0000000..db246e3 --- /dev/null +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinPressableWidget.java @@ -0,0 +1,29 @@ +package eu.midnightdust.visualoverhaul.mixin; + +import eu.midnightdust.visualoverhaul.IconicButtons; +import net.minecraft.client.gui.widget.ClickableWidget; +import net.minecraft.client.gui.widget.PressableWidget; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(PressableWidget.class) +public abstract class MixinPressableWidget extends ClickableWidget { + @Unique IconicButtons iconicButtons; + public MixinPressableWidget(int x, int y, int width, int height, Text message) { + super(x, y, width, height, message); + } + @Inject(at = @At("TAIL"), method = "") + private void iconic$onInitButton(int i, int j, int k, int l, Text text, CallbackInfo ci) { + iconicButtons = new IconicButtons(this); + } + + @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/PressableWidget;drawMessage(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/font/TextRenderer;I)V", shift = At.Shift.BEFORE), method = "renderButton") + private void iconic$onRenderButton(MatrixStack matrices, int mouseX, int mouseY, float delta, CallbackInfo ci) { + iconicButtons.renderIcons(matrices, this, this.alpha); + } +} diff --git a/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSliderWidget.java b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSliderWidget.java new file mode 100644 index 0000000..1d957f4 --- /dev/null +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSliderWidget.java @@ -0,0 +1,29 @@ +package eu.midnightdust.visualoverhaul.mixin; + +import eu.midnightdust.visualoverhaul.IconicButtons; +import net.minecraft.client.gui.widget.ClickableWidget; +import net.minecraft.client.gui.widget.SliderWidget; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(SliderWidget.class) +public abstract class MixinSliderWidget extends ClickableWidget { + @Unique IconicButtons iconicButtons; + public MixinSliderWidget(int x, int y, int width, int height, Text message) { + super(x, y, width, height, message); + } + @Inject(at = @At("TAIL"), method = "") + private void iconic$onInitButton(int x, int y, int width, int height, Text text, double value, CallbackInfo ci) { + iconicButtons = new IconicButtons(this); + } + + @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/SliderWidget;drawScrollableText(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/font/TextRenderer;II)V", shift = At.Shift.BEFORE), method = "renderButton") + private void iconic$onRenderButton(MatrixStack matrices, int mouseX, int mouseY, float delta, CallbackInfo ci) { + iconicButtons.renderIcons(matrices, this, this.alpha); + } +} diff --git a/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSoundSystem.java b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSoundSystem.java index 8164d1c..e498eb2 100755 --- a/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSoundSystem.java +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinSoundSystem.java @@ -21,7 +21,7 @@ public abstract class MixinSoundSystem { @Inject(at = @At("TAIL"),method = "play(Lnet/minecraft/client/sound/SoundInstance;)V") public void vo$onPlayRecordSound(SoundInstance soundInstance, CallbackInfo ci) { if (soundInstance.getCategory().equals(SoundCategory.RECORDS) && this.started) { - jukeboxPos = new BlockPos(Math.floor(soundInstance.getX()), Math.floor(soundInstance.getY()), Math.floor(soundInstance.getZ())); + jukeboxPos = BlockPos.ofFloored(Math.floor(soundInstance.getX()), Math.floor(soundInstance.getY()), Math.floor(soundInstance.getZ())); SoundTest.soundPos.put(jukeboxPos, soundInstance.getId()); } } @@ -30,7 +30,7 @@ public abstract class MixinSoundSystem { public void vo$onStopRecordSound(SoundInstance soundInstance, CallbackInfo ci) { if (soundInstance != null) { if (soundInstance.getCategory().equals(SoundCategory.RECORDS)) { - jukeboxPos = new BlockPos(Math.floor(soundInstance.getX()), Math.floor(soundInstance.getY()), Math.floor(soundInstance.getZ())); + jukeboxPos = BlockPos.ofFloored(Math.floor(soundInstance.getX()), Math.floor(soundInstance.getY()), Math.floor(soundInstance.getZ())); if (SoundTest.soundPos.containsKey(jukeboxPos)) { SoundTest.soundPos.remove(jukeboxPos, soundInstance.getId()); } diff --git a/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/TextureManagerAccessor.java b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/TextureManagerAccessor.java new file mode 100644 index 0000000..78e19dd --- /dev/null +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/TextureManagerAccessor.java @@ -0,0 +1,12 @@ +package eu.midnightdust.visualoverhaul.mixin; + +import net.minecraft.client.texture.TextureManager; +import net.minecraft.resource.ResourceManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(TextureManager.class) +public interface TextureManagerAccessor { + @Accessor + ResourceManager getResourceContainer(); +} diff --git a/common/src/main/java/eu/midnightdust/visualoverhaul/util/ModIconUtil.java b/common/src/main/java/eu/midnightdust/visualoverhaul/util/ModIconUtil.java new file mode 100644 index 0000000..57341c1 --- /dev/null +++ b/common/src/main/java/eu/midnightdust/visualoverhaul/util/ModIconUtil.java @@ -0,0 +1,63 @@ +package eu.midnightdust.visualoverhaul.util; + +import eu.midnightdust.visualoverhaul.config.VOConfig; +import net.fabricmc.loader.api.FabricLoader; +import dev.architectury.injectables.annotations.ExpectPlatform; +import net.minecraft.client.texture.NativeImage; +import net.minecraft.client.texture.NativeImageBackedTexture; +import org.apache.commons.lang3.Validate; +import org.spongepowered.asm.mixin.Unique; + +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +public class ModIconUtil { + private static final Map modIconCache = new HashMap<>(); + private final String modid; + + public ModIconUtil(String modid) { + this.modid = modid; + } + @ExpectPlatform + public static Path getPath(String modid) { + throw new AssertionError(); + } + + @Unique + public NativeImageBackedTexture createModIcon() { + try { + Path path = getPath(modid); + if (VOConfig.debug) System.out.println(path); + NativeImageBackedTexture cachedIcon = getCachedModIcon(path); + if (cachedIcon != null) { + return cachedIcon; + } + cachedIcon = getCachedModIcon(path); + if (cachedIcon != null) { + return cachedIcon; + } + try (InputStream inputStream = Files.newInputStream(path)) { + NativeImage image = NativeImage.read(Objects.requireNonNull(inputStream)); + Validate.validState(image.getHeight() == image.getWidth(), "Must be square icon"); + NativeImageBackedTexture tex = new NativeImageBackedTexture(image); + cacheModIcon(path, tex); + return tex; + } + + } catch (Throwable t) { + if (VOConfig.debug) System.out.println(t.getMessage()); + return null; + } + } + static NativeImageBackedTexture getCachedModIcon(Path path) { + return modIconCache.get(path); + } + + static void cacheModIcon(Path path, NativeImageBackedTexture tex) { + modIconCache.put(path, tex); + } +} diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/addserver.add.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/addserver.add.properties new file mode 100644 index 0000000..13c6e45 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/addserver.add.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/gui.done.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/credits_and_attribution.button.attribution.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/credits_and_attribution.button.attribution.properties new file mode 100644 index 0000000..7d96a47 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/credits_and_attribution.button.attribution.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/written_book.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/credits_and_attribution.button.credits.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/credits_and_attribution.button.credits.properties new file mode 100644 index 0000000..fd0bb71 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/credits_and_attribution.button.credits.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/paper.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/credits_and_attribution.button.licenses.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/credits_and_attribution.button.licenses.properties new file mode 100644 index 0000000..008cf72 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/credits_and_attribution.button.licenses.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/knowledge_book.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/fml.menu.mods.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/fml.menu.mods.properties new file mode 100644 index 0000000..e0dfb8a --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/fml.menu.mods.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/modmenu.title.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/gui.advancements.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.advancements.properties new file mode 100644 index 0000000..8dda6ea --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.advancements.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/experience_bottle.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/gui.back.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.back.properties new file mode 100644 index 0000000..a1f50ae --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.back.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/gui.cancel.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/gui.cancel.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.cancel.properties new file mode 100644 index 0000000..b891752 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.cancel.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/coal.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/gui.done.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.done.properties new file mode 100644 index 0000000..39ed69b --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.done.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/emerald.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/gui.no.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.no.properties new file mode 100644 index 0000000..5e89730 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.no.properties @@ -0,0 +1 @@ +texture=minecraft:textures/block/redstone_lamp.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/gui.proceed.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.proceed.properties new file mode 100644 index 0000000..13c6e45 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.proceed.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/gui.done.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/gui.stats.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.stats.properties new file mode 100644 index 0000000..fd0bb71 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.stats.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/paper.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/gui.yes.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.yes.properties new file mode 100644 index 0000000..571491d --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/gui.yes.properties @@ -0,0 +1 @@ +texture=minecraft:textures/block/redstone_lamp_on.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/menu.disconnect.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.disconnect.properties new file mode 100644 index 0000000..70298fc --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.disconnect.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/menu.returntomenu.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/menu.multiplayer.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.multiplayer.properties new file mode 100644 index 0000000..87b6c54 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.multiplayer.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/diamond_sword.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/menu.online.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.online.properties new file mode 100644 index 0000000..e0423ca --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.online.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/netherite_hoe.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/menu.options.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.options.properties new file mode 100644 index 0000000..37f8344 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.options.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/command_block_minecart.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/menu.playerreporting.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.playerreporting.properties new file mode 100644 index 0000000..30429e8 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.playerreporting.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/mangrove_sign.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/menu.quit.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.quit.properties new file mode 100644 index 0000000..66543ac --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.quit.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/barrier.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/menu.reportbugs.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.reportbugs.properties new file mode 100644 index 0000000..5d95a55 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.reportbugs.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/pufferfish.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/menu.returntogame.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.returntogame.properties new file mode 100644 index 0000000..39ed69b --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.returntogame.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/emerald.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/menu.returntomenu.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.returntomenu.properties new file mode 100644 index 0000000..2bb622d --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.returntomenu.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/blaze_powder.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/menu.sendfeedback.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.sendfeedback.properties new file mode 100644 index 0000000..3491787 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.sendfeedback.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/echo_shard.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/menu.sharetolan.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.sharetolan.properties new file mode 100644 index 0000000..d85b06d --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.sharetolan.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/recovery_compass_18.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/menu.singleplayer.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.singleplayer.properties new file mode 100644 index 0000000..5cb995d --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/menu.singleplayer.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/iron_pickaxe.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/midnightlib.midnightconfig.enum.configbutton.false.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/midnightlib.midnightconfig.enum.configbutton.false.properties new file mode 100644 index 0000000..e8e2deb --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/midnightlib.midnightconfig.enum.configbutton.false.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/gui.no.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/midnightlib.midnightconfig.enum.configbutton.modmenu.png b/common/src/main/resources/assets/iconic/textures/gui/icons/midnightlib.midnightconfig.enum.configbutton.modmenu.png new file mode 100644 index 0000000000000000000000000000000000000000..225bf945d1b0f9691f5cf68b43b4cc7d64fd4af1 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`PM$7~Ar`&KBH#Y~pWn!Iz@;-y zAfeIlUXG$)a|geRZU-A<*WQMQOfz_o>}Y9}N;G)Y`tT)d3PZ7)-A=}Hy*xZT3=(xp VzDKLKt^}IK;OXk;vd$@?2>?~ACfxu4 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/midnightlib.midnightconfig.enum.configbutton.true.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/midnightlib.midnightconfig.enum.configbutton.true.properties new file mode 100644 index 0000000..d5c7d25 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/midnightlib.midnightconfig.enum.configbutton.true.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/gui.yes.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/modmenu.title.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/modmenu.title.properties new file mode 100644 index 0000000..18ad8b9 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/modmenu.title.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/totem_of_undying.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/options.accessibility.title.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/options.accessibility.title.properties new file mode 100644 index 0000000..8f80184 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/options.accessibility.title.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/axolotl_bucket.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/options.chat.title.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/options.chat.title.properties new file mode 100644 index 0000000..71248a7 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/options.chat.title.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/birch_hanging_sign.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/options.controls.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/options.controls.properties new file mode 100644 index 0000000..d4d2c07 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/options.controls.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/jungle_boat.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/options.credits_and_attribution.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/options.credits_and_attribution.properties new file mode 100644 index 0000000..3de5020 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/options.credits_and_attribution.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/name_tag.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/options.fov.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/options.fov.properties new file mode 100644 index 0000000..df23eb1 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/options.fov.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/ender_eye.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/options.language.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/options.language.properties new file mode 100644 index 0000000..77993e1 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/options.language.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/writable_book.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/options.online.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/options.online.properties new file mode 100644 index 0000000..bf03e18 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/options.online.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/comparator.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/options.resourcepack.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/options.resourcepack.properties new file mode 100644 index 0000000..9a0058d --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/options.resourcepack.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/painting.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/options.skincustomisation.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/options.skincustomisation.properties new file mode 100644 index 0000000..3580885 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/options.skincustomisation.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/armor_stand.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/options.sounds.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/options.sounds.properties new file mode 100644 index 0000000..365ea04 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/options.sounds.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/music_disc_otherside.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/options.telemetry.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/options.telemetry.properties new file mode 100644 index 0000000..1853add --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/options.telemetry.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/nether_star.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/options.video.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/options.video.properties new file mode 100644 index 0000000..516c0a5 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/options.video.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/end_crystal.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/pack.openfolder.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/pack.openfolder.properties new file mode 100644 index 0000000..ab38843 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/pack.openfolder.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/mojang_banner_pattern.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/physicsmod.menu.main.title.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/physicsmod.menu.main.title.properties new file mode 100644 index 0000000..17f4760 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/physicsmod.menu.main.title.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/slime_ball.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.add.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.add.properties new file mode 100644 index 0000000..8021e8c --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.add.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/selectworld.create.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.delete.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.delete.properties new file mode 100644 index 0000000..31d9127 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.delete.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/selectworld.delete.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.direct.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.direct.properties new file mode 100644 index 0000000..9b32331 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.direct.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/firework_rocket.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.edit.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.edit.properties new file mode 100644 index 0000000..0858d06 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.edit.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/selectworld.edit.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.refresh.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.refresh.properties new file mode 100644 index 0000000..2bb622d --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.refresh.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/blaze_powder.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.select.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.select.properties new file mode 100644 index 0000000..20c69cd --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/selectserver.select.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/selectworld.select.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.create.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.create.properties new file mode 100644 index 0000000..8caecf4 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.create.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/diamond.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.delete.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.delete.properties new file mode 100644 index 0000000..ca6cd96 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.delete.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/tnt_minecart.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.edit.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.edit.properties new file mode 100644 index 0000000..6af151e --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.edit.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/menu.options.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.edit.save.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.edit.save.properties new file mode 100644 index 0000000..13c6e45 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.edit.save.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/gui.done.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.recreate.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.recreate.properties new file mode 100644 index 0000000..63735fb --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.recreate.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/furnace_minecart.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.select.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.select.properties new file mode 100644 index 0000000..11097de --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/selectworld.select.properties @@ -0,0 +1 @@ +texture=minecraft:textures/item/trident.png diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/text.cloth-config.boolean.value.false.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/text.cloth-config.boolean.value.false.properties new file mode 100644 index 0000000..e8e2deb --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/text.cloth-config.boolean.value.false.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/gui.no.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/iconic/textures/gui/icons/text.cloth-config.boolean.value.true.properties b/common/src/main/resources/assets/iconic/textures/gui/icons/text.cloth-config.boolean.value.true.properties new file mode 100644 index 0000000..d5c7d25 --- /dev/null +++ b/common/src/main/resources/assets/iconic/textures/gui/icons/text.cloth-config.boolean.value.true.properties @@ -0,0 +1 @@ +properties=iconic:textures/gui/icons/gui.yes.properties \ No newline at end of file diff --git a/common/src/main/resources/assets/visualoverhaul/lang/de_de.json b/common/src/main/resources/assets/visualoverhaul/lang/de_de.json new file mode 100755 index 0000000..a3a4b69 --- /dev/null +++ b/common/src/main/resources/assets/visualoverhaul/lang/de_de.json @@ -0,0 +1,23 @@ +{ + "visualoverhaul.midnightconfig.title":"Visual Overhaul Konfiguration", + "visualoverhaul.midnightconfig.brewingstand":"Braustand-Verbesserungen", + "visualoverhaul.midnightconfig.jukebox":"Jukebox-Verbesserungen", + "visualoverhaul.midnightconfig.jukebox_fake_block":"Fake-Block auf der Jukebox", + "visualoverhaul.midnightconfig.furnace":"Ofen-Verbesserungen", + "visualoverhaul.midnightconfig.smoker_particles":"Räucherofen-Partikel", + "visualoverhaul.midnightconfig.blast_furnace_particles":"Schmelzofen-Partikel", + "visualoverhaul.midnightconfig.coloredItems":"Biom-basierte Item-Farben", + "visualoverhaul.midnightconfig.coloredItems.tooltip":"§cNeustart benötigt!", + "visualoverhaul.midnightconfig.coloredLilypad":"Biom-basierte Seerosenfarbe", + "visualoverhaul.midnightconfig.coloredLilypad.tooltip":"§cNeustart benötigt!", + "visualoverhaul.midnightconfig.buttonIcons": "Symbole auf Knöpfen", + "visualoverhaul.midnightconfig.buttonIconPosition": "Knopfsymbolposition", + "visualoverhaul.midnightconfig.enum.IconPosition.LOCATION": "Ortsbasiert", + "visualoverhaul.midnightconfig.enum.IconPosition.LEFT": "Links", + "visualoverhaul.midnightconfig.enum.IconPosition.RIGHT": "Rechts", + "visualoverhaul.midnightconfig.enum.IconPosition.BOTH": "Links & Rechts", + "visualoverhaul.midnightconfig.zoomIconOnHover": "Vergrößere Symbol beim Überfahren", + "visualoverhaul.midnightconfig.category.gui": "GUI", + "visualoverhaul.midnightconfig.category.blocks": "Blöcke", + "visualoverhaul.midnightconfig.category.colors": "Farben" +} \ No newline at end of file diff --git a/common/src/main/resources/assets/visualoverhaul/lang/en_us.json b/common/src/main/resources/assets/visualoverhaul/lang/en_us.json index 484b08c..2a9beb6 100755 --- a/common/src/main/resources/assets/visualoverhaul/lang/en_us.json +++ b/common/src/main/resources/assets/visualoverhaul/lang/en_us.json @@ -10,5 +10,14 @@ "visualoverhaul.midnightconfig.coloredItems.tooltip":"§cNeeds restart!", "visualoverhaul.midnightconfig.coloredLilypad":"Biome-based Lily Pad color", "visualoverhaul.midnightconfig.coloredLilypad.tooltip":"§cNeeds restart!", - "visualoverhaul.midnightconfig.potionEnchantmentGlint":"Potion enchantment glint" + "visualoverhaul.midnightconfig.buttonIcons": "Button Icons", + "visualoverhaul.midnightconfig.buttonIconPosition": "Button Icon Position", + "visualoverhaul.midnightconfig.enum.IconPosition.LOCATION": "Location-dependant", + "visualoverhaul.midnightconfig.enum.IconPosition.LEFT": "Left", + "visualoverhaul.midnightconfig.enum.IconPosition.RIGHT": "Right", + "visualoverhaul.midnightconfig.enum.IconPosition.BOTH": "Left & Right", + "visualoverhaul.midnightconfig.zoomIconOnHover": "Zoom icon on hover", + "visualoverhaul.midnightconfig.category.gui": "GUI", + "visualoverhaul.midnightconfig.category.blocks": "Blocks", + "visualoverhaul.midnightconfig.category.colors": "Colors" } \ No newline at end of file diff --git a/common/src/main/resources/assets/visualoverhaul/lang/fr_fr.json b/common/src/main/resources/assets/visualoverhaul/lang/fr_fr.json index a8df4ec..da84231 100644 --- a/common/src/main/resources/assets/visualoverhaul/lang/fr_fr.json +++ b/common/src/main/resources/assets/visualoverhaul/lang/fr_fr.json @@ -9,6 +9,5 @@ "visualoverhaul.midnightconfig.coloredItems":"Couleurs des objets basées sur le biome", "visualoverhaul.midnightconfig.coloredItems.tooltip":"§cBesoin de redémarrer !", "visualoverhaul.midnightconfig.coloredLilypad":"Couleur de nénuphar basée sur le biome", - "visualoverhaul.midnightconfig.coloredLilypad.tooltip":"§cBesoin de redémarrer !", - "visualoverhaul.midnightconfig.potionEnchantmentGlint":"Brillance d'enchantement de potion" + "visualoverhaul.midnightconfig.coloredLilypad.tooltip":"§cBesoin de redémarrer !" } diff --git a/common/src/main/resources/visualoverhaul.mixins.json b/common/src/main/resources/visualoverhaul.mixins.json index 95bf771..e5ac3ac 100644 --- a/common/src/main/resources/visualoverhaul.mixins.json +++ b/common/src/main/resources/visualoverhaul.mixins.json @@ -10,7 +10,10 @@ "MixinSoundSystem", "MixinSmokerBlock", "MixinBlastFurnaceBlock", - "MixinPotionItem" + "MixinPressableWidget", + "MixinSliderWidget", + "TextureManagerAccessor", + "JukeboxBlockEntityAccessor" ], "injectors": { "defaultRequire": 1 diff --git a/fabric-like/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/renderer/RadioJukeboxBlockEntityRenderer.java b/fabric-like/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/renderer/RadioJukeboxBlockEntityRenderer.java index 7341105..274c589 100755 --- a/fabric-like/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/renderer/RadioJukeboxBlockEntityRenderer.java +++ b/fabric-like/src/main/java/eu/midnightdust/visualoverhaul/compat/phonos/block/renderer/RadioJukeboxBlockEntityRenderer.java @@ -19,8 +19,8 @@ import net.minecraft.client.render.model.json.ModelTransformation; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3f; import net.minecraft.util.math.random.Random; +import org.joml.Vector3f; @Environment(EnvType.CLIENT) public class RadioJukeboxBlockEntityRenderer implements BlockEntityRenderer { @@ -36,42 +36,42 @@ public class RadioJukeboxBlockEntityRenderer implements BlockEntityRenderer { + Registries.ITEM.forEach((item) -> { if(item instanceof MusicDiscItem || item.getName().getString().toLowerCase().contains("music_disc") || item.getName().getString().toLowerCase().contains("record") || item.getName().getString().toLowerCase().contains("dynamic_disc")) { ModelPredicateProviderRegistry.register(item, new Identifier("round"), (stack, world, entity, seed) -> stack.getCount() == 2 ? 1.0F : 0.0F); } @@ -94,7 +106,7 @@ public class VisualOverhaulClientFabric implements ClientModInitializer { ItemStack record = attachedData.readItemStack(); client.execute(() -> { if (client.world != null && client.world.getBlockEntity(pos) != null && client.world.getBlockEntity(pos) instanceof JukeboxBlockEntity blockEntity) { - blockEntity.setRecord(record); + ((JukeboxBlockEntityAccessor)blockEntity).getInventory().set(0, record); } }); }); @@ -180,5 +192,17 @@ public class VisualOverhaulClientFabric implements ClientModInitializer { if (VOConfig.coloredLilypad) { ColorProviderRegistry.BLOCK.register((state, world, pos, tintIndex) -> world != null ? world.getColor(pos, BiomeColors.FOLIAGE_COLOR) : 0, Blocks.LILY_PAD); } + + ResourceManagerHelper.get(ResourceType.CLIENT_RESOURCES).registerReloadListener(new SimpleSynchronousResourceReloadListener() { + @Override + public Identifier getFabricId() { + return new Identifier("iconic", "button_icons"); + } + + @Override + public void reload(ResourceManager manager) { + IconicButtons.reload(manager); + } + }); } } diff --git a/fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/mixin/MixinJukeboxBlock.java b/fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/mixin/MixinJukeboxBlock.java index cc6e785..313c669 100755 --- a/fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/mixin/MixinJukeboxBlock.java +++ b/fabric/src/main/java/eu/midnightdust/visualoverhaul/fabric/mixin/MixinJukeboxBlock.java @@ -45,7 +45,7 @@ public abstract class MixinJukeboxBlock extends BlockWithEntity { Stream watchingPlayers = PlayerLookup.tracking(blockEntity).stream(); PacketByteBuf passedData = new PacketByteBuf(Unpooled.buffer()); passedData.writeBlockPos(pos); - passedData.writeItemStack(blockEntity.getRecord()); + passedData.writeItemStack(blockEntity.getStack()); watchingPlayers.forEach(player -> ServerPlayNetworking.send(player, VisualOverhaul.UPDATE_RECORD, passedData)); JukeboxPacketUpdate.invUpdate = false; diff --git a/fabric/src/main/java/eu/midnightdust/visualoverhaul/util/fabric/ModIconUtilImpl.java b/fabric/src/main/java/eu/midnightdust/visualoverhaul/util/fabric/ModIconUtilImpl.java new file mode 100644 index 0000000..f595fbb --- /dev/null +++ b/fabric/src/main/java/eu/midnightdust/visualoverhaul/util/fabric/ModIconUtilImpl.java @@ -0,0 +1,13 @@ +package eu.midnightdust.visualoverhaul.util.fabric; + +import net.fabricmc.loader.api.FabricLoader; +import net.fabricmc.loader.api.ModContainer; + +import java.nio.file.Path; + +public class ModIconUtilImpl { + public static Path getPath(String modid) { + ModContainer mod = FabricLoader.getInstance().getModContainer(modid).orElseThrow(() -> new RuntimeException("Cannot get ModContainer for Fabric mod with id ")); + return mod.findPath(mod.getMetadata().getIconPath(16).orElseThrow()).orElseThrow(); + } +} diff --git a/forge/build.gradle b/forge/build.gradle index 886aa16..29ef701 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -3,7 +3,6 @@ plugins { } architectury { - injectInjectables = false platformSetupLoomIde() forge() } @@ -32,7 +31,7 @@ dependencies { // Remove the next line if you don't want to depend on the API modApi "dev.architectury:architectury-forge:${rootProject.architectury_version}" modImplementation "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-forge" - include "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-forge" + //include "maven.modrinth:midnightlib:${rootProject.midnightlib_version}-forge" common(project(path: ":common", configuration: "namedElements")) { transitive false } shadowCommon(project(path: ":common", configuration: "transformProductionForge")) { transitive = false } diff --git a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientEvents.java b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientEvents.java index fa905b2..af4371c 100644 --- a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientEvents.java +++ b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientEvents.java @@ -1,5 +1,6 @@ package eu.midnightdust.visualoverhaul.forge; +import eu.midnightdust.visualoverhaul.IconicButtons; import eu.midnightdust.visualoverhaul.block.model.FurnaceWoodenPlanksModel; import eu.midnightdust.visualoverhaul.block.renderer.BrewingStandBlockEntityRenderer; import eu.midnightdust.visualoverhaul.block.renderer.FurnaceBlockEntityRenderer; @@ -9,11 +10,11 @@ import net.minecraft.block.entity.BlockEntityType; import net.minecraft.client.MinecraftClient; import net.minecraft.client.color.world.BiomeColors; import net.minecraft.resource.*; -import net.minecraft.resource.metadata.PackResourceMetadata; import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; +import net.minecraftforge.client.event.RegisterClientReloadListenersEvent; import net.minecraftforge.event.AddPackFindersEvent; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -22,8 +23,6 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.forgespi.locating.IModFile; import net.minecraftforge.resource.PathPackResources; -import java.io.IOException; - import static eu.midnightdust.visualoverhaul.VisualOverhaul.MOD_ID; @Mod.EventBusSubscriber(modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) @@ -57,6 +56,16 @@ public class VisualOverhaulClientEvents { event.registerBlockEntityRenderer(BlockEntityType.BLAST_FURNACE, FurnaceBlockEntityRenderer::new); } @SubscribeEvent + public static void addReloadListener(RegisterClientReloadListenersEvent event) { + event.registerReloadListener(new IconReloadListener()); + } + public static class IconReloadListener implements SynchronousResourceReloader { + @Override + public void reload(ResourceManager manager) { + IconicButtons.reload(manager); + } + } + @SubscribeEvent public static void addPackFinders(AddPackFindersEvent event) { if (event.getPackType() == ResourceType.CLIENT_RESOURCES) { registerResourcePack(event, new Identifier(MOD_ID,"nobrewingbottles"), false, true); @@ -66,13 +75,15 @@ public class VisualOverhaulClientEvents { } } private static void registerResourcePack(AddPackFindersEvent event, Identifier id, boolean alwaysEnabled, boolean defaultEnabled) { - event.addRepositorySource(((profileAdder, factory) -> { + event.addRepositorySource(((profileAdder) -> { IModFile file = ModList.get().getModFileById(id.getNamespace()).getFile(); - try (PathPackResources pack = new PathPackResources(id.toString(), file.findResource("resourcepacks/" +id.getPath()))) { - ResourcePackProfile packProfile = new ResourcePackProfile(id.toString(), alwaysEnabled, () -> pack, Text.of(id.getNamespace()+"/"+id.getPath()), pack.parseMetadata(PackResourceMetadata.READER).getDescription().copy().append(" §7(built-in)"), ResourcePackCompatibility.COMPATIBLE, ResourcePackProfile.InsertionPosition.TOP, false, ResourcePackSource.PACK_SOURCE_BUILTIN, false); - profileAdder.accept(packProfile); - if (defaultEnabled && !alwaysEnabled) VisualOverhaulClientForge.defaultEnabledPacks.add(packProfile); - } catch (IOException | NullPointerException e) {e.printStackTrace();} + try (PathPackResources pack = new PathPackResources(id.toString(), true, file.findResource("resourcepacks/" +id.getPath()))) { + ResourcePackProfile packProfile = ResourcePackProfile.create(id.toString(), Text.of(id.getNamespace()+"/"+id.getPath()), alwaysEnabled, a -> pack, ResourceType.CLIENT_RESOURCES, ResourcePackProfile.InsertionPosition.TOP, ResourcePackSource.BUILTIN); + if (packProfile != null) { + profileAdder.accept(packProfile); + if (defaultEnabled && !alwaysEnabled) VisualOverhaulClientForge.defaultEnabledPacks.add(packProfile); + } + } catch (NullPointerException e) {e.printStackTrace();} })); } } diff --git a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientForge.java b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientForge.java index 7789a68..f85303b 100644 --- a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientForge.java +++ b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/VisualOverhaulClientForge.java @@ -4,6 +4,7 @@ import dev.architectury.networking.NetworkManager; import eu.midnightdust.lib.config.MidnightConfig; import eu.midnightdust.visualoverhaul.VisualOverhaulClient; import eu.midnightdust.visualoverhaul.block.JukeboxTop; +import eu.midnightdust.visualoverhaul.mixin.JukeboxBlockEntityAccessor; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.block.entity.AbstractFurnaceBlockEntity; @@ -84,7 +85,7 @@ public class VisualOverhaulClientForge { ItemStack record = attachedData.readItemStack(); client.execute(() -> { if (client.world != null && client.world.getBlockEntity(pos) != null && client.world.getBlockEntity(pos) instanceof JukeboxBlockEntity blockEntity) { - blockEntity.setRecord(record); + ((JukeboxBlockEntityAccessor)blockEntity).getInventory().set(0, record); } }); }); diff --git a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinJukeboxBlock.java b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinJukeboxBlock.java index 9ccc2f0..9320723 100755 --- a/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinJukeboxBlock.java +++ b/forge/src/main/java/eu/midnightdust/visualoverhaul/forge/mixin/MixinJukeboxBlock.java @@ -46,7 +46,7 @@ public abstract class MixinJukeboxBlock extends BlockWithEntity { Stream watchingPlayers = ((ServerChunkManager)world.getChunkManager()).threadedAnvilChunkStorage.getPlayersWatchingChunk(new ChunkPos(pos), false).stream(); PacketByteBuf passedData = new PacketByteBuf(Unpooled.buffer()); passedData.writeBlockPos(pos); - passedData.writeItemStack(blockEntity.getRecord()); + passedData.writeItemStack(blockEntity.getStack()); watchingPlayers.forEach(player -> NetworkManager.sendToPlayer(player, VisualOverhaul.UPDATE_RECORD, passedData)); JukeboxPacketUpdate.invUpdate = false; diff --git a/forge/src/main/java/eu/midnightdust/visualoverhaul/util/forge/ModIconUtilImpl.java b/forge/src/main/java/eu/midnightdust/visualoverhaul/util/forge/ModIconUtilImpl.java new file mode 100644 index 0000000..aab0674 --- /dev/null +++ b/forge/src/main/java/eu/midnightdust/visualoverhaul/util/forge/ModIconUtilImpl.java @@ -0,0 +1,13 @@ +package eu.midnightdust.visualoverhaul.util.forge; + +import net.minecraftforge.fml.ModList; +import net.minecraftforge.forgespi.language.IModInfo; + +import java.nio.file.Path; + +public class ModIconUtilImpl { + public static Path getPath(String modid) { + IModInfo mod = ModList.get().getMods().stream().filter(modInfo -> modInfo.getModId().equals(modid)).findFirst().orElseThrow(() -> new RuntimeException("Cannot get ModContainer for Forge mod with id ")); + return mod.getOwningFile().getFile().findResource(mod.getLogoFile().orElseThrow()); + } +} diff --git a/gradle.properties b/gradle.properties index c9f3357..4e1cad4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,20 +1,21 @@ org.gradle.jvmargs=-Xmx4096M -minecraft_version=1.19.2 +minecraft_version=1.19.4 +yarn_mappings=1.19.4+build.1 enabled_platforms=quilt,fabric,forge archives_base_name=visualoverhaul mod_version=5.0.0 maven_group=eu.midnightdust -architectury_version=6.2.43 -midnightlib_version=1.0.0 +architectury_version=8.1.75 +midnightlib_version=1.3.0 phonos_version=0.3.0+1.19.2 -fabric_loader_version=0.14.9 -fabric_api_version=0.59.0+1.19.2 +fabric_loader_version=0.14.18 +fabric_api_version=0.76.0+1.19.4 -forge_version=1.19.2-43.0.8 +forge_version=1.19.4-45.0.24 -quilt_loader_version=0.17.2-beta.3 -quilt_fabric_api_version=4.0.0-beta.7+0.59.0-1.19.2 +quilt_loader_version=0.18.6 +quilt_fabric_api_version=6.0.0-beta.2+0.76.0-1.19.4 diff --git a/quilt/build.gradle b/quilt/build.gradle index 18dd006..46cc19c 100644 --- a/quilt/build.gradle +++ b/quilt/build.gradle @@ -8,7 +8,6 @@ repositories { } architectury { - injectInjectables = false platformSetupLoomIde() loader("quilt") } @@ -39,7 +38,7 @@ dependencies { common(project(path: ":common", configuration: "namedElements")) { transitive false } shadowCommon(project(path: ":common", configuration: "transformProductionQuilt")) { transitive false } - common(project(path: ":fabric-like", configuration: "namedElements")) { transitive false } + //common(project(path: ":fabric-like", configuration: "namedElements")) { transitive false } //shadowCommon(project(path: ":fabric-like", configuration: "transformProductionQuilt")) { transitive false } } diff --git a/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/VisualOverhaulClientQuilt.java b/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/VisualOverhaulClientQuilt.java index 74c291d..ba354f4 100644 --- a/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/VisualOverhaulClientQuilt.java +++ b/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/VisualOverhaulClientQuilt.java @@ -1,5 +1,6 @@ package eu.midnightdust.visualoverhaul.quilt; +import eu.midnightdust.visualoverhaul.IconicButtons; import eu.midnightdust.visualoverhaul.VisualOverhaulClient; import eu.midnightdust.visualoverhaul.block.JukeboxTop; import eu.midnightdust.visualoverhaul.block.model.FurnaceWoodenPlanksModel; @@ -7,7 +8,7 @@ import eu.midnightdust.visualoverhaul.block.renderer.BrewingStandBlockEntityRend import eu.midnightdust.visualoverhaul.block.renderer.FurnaceBlockEntityRenderer; import eu.midnightdust.visualoverhaul.block.renderer.JukeboxBlockEntityRenderer; import eu.midnightdust.visualoverhaul.config.VOConfig; -import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry; +import eu.midnightdust.visualoverhaul.mixin.JukeboxBlockEntityAccessor; import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry; import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry; import net.minecraft.block.Blocks; @@ -18,15 +19,19 @@ import net.minecraft.block.entity.JukeboxBlockEntity; import net.minecraft.client.color.world.BiomeColors; import net.minecraft.client.item.ModelPredicateProviderRegistry; import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.block.entity.BlockEntityRendererFactories; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.item.MusicDiscItem; import net.minecraft.potion.PotionUtil; import net.minecraft.potion.Potions; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.resource.ResourceManager; +import net.minecraft.resource.ResourceType; import net.minecraft.util.Identifier; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.registry.Registry; import org.quiltmc.loader.api.ModContainer; import org.quiltmc.loader.api.QuiltLoader; import org.quiltmc.qsl.base.api.entrypoint.client.ClientModInitializer; @@ -35,6 +40,7 @@ import org.quiltmc.qsl.lifecycle.api.client.event.ClientTickEvents; import org.quiltmc.qsl.networking.api.client.ClientPlayNetworking; import org.quiltmc.qsl.resource.loader.api.ResourceLoader; import org.quiltmc.qsl.resource.loader.api.ResourcePackActivationType; +import org.quiltmc.qsl.resource.loader.api.reloader.SimpleSynchronousResourceReloader; import static eu.midnightdust.visualoverhaul.VisualOverhaul.*; import static eu.midnightdust.visualoverhaul.VisualOverhaulClient.JukeBoxTop; @@ -45,7 +51,7 @@ public class VisualOverhaulClientQuilt implements ClientModInitializer { VisualOverhaulClient.onInitializeClient(); JukeBoxTop = new JukeboxTop(); // Block only registered on client, because it's just used for the renderer // - Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"jukebox_top"), JukeBoxTop); + Registry.register(Registries.BLOCK, new Identifier(MOD_ID,"jukebox_top"), JukeBoxTop); EntityModelLayerRegistry.registerModelLayer(FurnaceWoodenPlanksModel.WOODEN_PLANKS_MODEL_LAYER, FurnaceWoodenPlanksModel::getTexturedModelData); @@ -55,18 +61,18 @@ public class VisualOverhaulClientQuilt implements ClientModInitializer { BlockRenderLayerMap.put(RenderLayer.getCutout(), Blocks.SMOKER); BlockRenderLayerMap.put(RenderLayer.getCutout(), Blocks.BLAST_FURNACE); - BlockEntityRendererRegistry.register(BlockEntityType.BREWING_STAND, BrewingStandBlockEntityRenderer::new); - BlockEntityRendererRegistry.register(BlockEntityType.JUKEBOX, JukeboxBlockEntityRenderer::new); - BlockEntityRendererRegistry.register(BlockEntityType.FURNACE, FurnaceBlockEntityRenderer::new); - BlockEntityRendererRegistry.register(BlockEntityType.SMOKER, FurnaceBlockEntityRenderer::new); - BlockEntityRendererRegistry.register(BlockEntityType.BLAST_FURNACE, FurnaceBlockEntityRenderer::new); + BlockEntityRendererFactories.register(BlockEntityType.BREWING_STAND, BrewingStandBlockEntityRenderer::new); + BlockEntityRendererFactories.register(BlockEntityType.JUKEBOX, JukeboxBlockEntityRenderer::new); + BlockEntityRendererFactories.register(BlockEntityType.FURNACE, FurnaceBlockEntityRenderer::new); + BlockEntityRendererFactories.register(BlockEntityType.SMOKER, FurnaceBlockEntityRenderer::new); + BlockEntityRendererFactories.register(BlockEntityType.BLAST_FURNACE, FurnaceBlockEntityRenderer::new); // Phonos Compat // if (QuiltLoader.isModLoaded("phonos")) { //PhonosCompatInit.init(); } - Registry.ITEM.forEach((item) -> { + Registries.ITEM.forEach((item) -> { if(item instanceof MusicDiscItem || item.getName().getString().toLowerCase().contains("music_disc") || item.getName().getString().toLowerCase().contains("record") || item.getName().getString().toLowerCase().contains("dynamic_disc")) { ModelPredicateProviderRegistry.register(item, new Identifier("round"), (stack, world, entity, seed) -> stack.getCount() == 2 ? 1.0F : 0.0F); } @@ -95,7 +101,7 @@ public class VisualOverhaulClientQuilt implements ClientModInitializer { ItemStack record = attachedData.readItemStack(); client.execute(() -> { if (client.world != null && client.world.getBlockEntity(pos) != null && client.world.getBlockEntity(pos) instanceof JukeboxBlockEntity blockEntity) { - blockEntity.setRecord(record); + ((JukeboxBlockEntityAccessor)blockEntity).getInventory().set(0, record); } }); }); @@ -178,5 +184,17 @@ public class VisualOverhaulClientQuilt implements ClientModInitializer { if (VOConfig.coloredLilypad) { ColorProviderRegistry.BLOCK.register((state, world, pos, tintIndex) -> world != null ? world.getColor(pos, BiomeColors.FOLIAGE_COLOR) : 0, Blocks.LILY_PAD); } + ResourceLoader.get(ResourceType.CLIENT_RESOURCES).registerReloader(new SimpleSynchronousResourceReloader() { + + @Override + public Identifier getQuiltId() { + return new Identifier("iconic", "button_icons"); + } + + @Override + public void reload(ResourceManager manager) { + IconicButtons.reload(manager); + } + }); } } diff --git a/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinJukeboxBlock.java b/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinJukeboxBlock.java index 0b13e1b..5528f18 100755 --- a/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinJukeboxBlock.java +++ b/quilt/src/main/java/eu/midnightdust/visualoverhaul/quilt/mixin/MixinJukeboxBlock.java @@ -45,7 +45,7 @@ public abstract class MixinJukeboxBlock extends BlockWithEntity { Stream watchingPlayers = PlayerLookup.tracking(blockEntity).stream(); PacketByteBuf passedData = new PacketByteBuf(Unpooled.buffer()); passedData.writeBlockPos(pos); - passedData.writeItemStack(blockEntity.getRecord()); + passedData.writeItemStack(blockEntity.getStack()); watchingPlayers.forEach(player -> ServerPlayNetworking.send(player, VisualOverhaul.UPDATE_RECORD, passedData)); JukeboxPacketUpdate.invUpdate = false; diff --git a/quilt/src/main/java/eu/midnightdust/visualoverhaul/util/fabric/ModIconUtilImpl.java b/quilt/src/main/java/eu/midnightdust/visualoverhaul/util/fabric/ModIconUtilImpl.java new file mode 100644 index 0000000..092289c --- /dev/null +++ b/quilt/src/main/java/eu/midnightdust/visualoverhaul/util/fabric/ModIconUtilImpl.java @@ -0,0 +1,13 @@ +package eu.midnightdust.visualoverhaul.util.fabric; + +import org.quiltmc.loader.api.ModContainer; +import org.quiltmc.loader.api.QuiltLoader; + +import java.nio.file.Path; + +public class ModIconUtilImpl { + public static Path getPath(String modid) { + ModContainer mod = QuiltLoader.getModContainer(modid).orElseThrow(() -> new RuntimeException("Cannot get ModContainer for Fabric mod with id ")); + return mod.getPath(mod.metadata().icon(16)); + } +} diff --git a/settings.gradle b/settings.gradle index 3b1361c..9436376 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,7 +8,6 @@ pluginManagement { } include("common") -include("fabric-like") include("fabric") include("quilt") include("forge")