From f29cd26f0229efbefd6950b85c35fa1809cb0367 Mon Sep 17 00:00:00 2001 From: tartaric_acid Date: Mon, 30 Sep 2024 20:09:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E5=9B=BE=E6=A0=87=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/block/ModelSwitcherModelGui.java | 3 ++- .../gui/entity/cache/CacheIconManager.java | 23 ++++++++++--------- .../gui/entity/model/AbstractModelGui.java | 14 +++++++++++ .../gui/entity/model/ChairModelGui.java | 3 ++- .../client/gui/entity/model/MaidModelGui.java | 3 ++- .../config/subconfig/MiscConfig.java | 4 ++++ .../assets/touhou_little_maid/lang/en_us.json | 1 + .../assets/touhou_little_maid/lang/zh_cn.json | 1 + 8 files changed, 38 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/block/ModelSwitcherModelGui.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/block/ModelSwitcherModelGui.java index 052c197df..0c89d6d04 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/block/ModelSwitcherModelGui.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/block/ModelSwitcherModelGui.java @@ -4,6 +4,7 @@ import com.github.tartaricacid.touhoulittlemaid.client.gui.entity.model.AbstractModelGui; import com.github.tartaricacid.touhoulittlemaid.client.resource.CustomPackLoader; import com.github.tartaricacid.touhoulittlemaid.client.resource.pojo.MaidModelInfo; +import com.github.tartaricacid.touhoulittlemaid.config.subconfig.MiscConfig; import com.github.tartaricacid.touhoulittlemaid.entity.passive.EntityMaid; import com.github.tartaricacid.touhoulittlemaid.tileentity.TileEntityModelSwitcher; import com.github.tartaricacid.touhoulittlemaid.util.EntityCacheUtil; @@ -47,7 +48,7 @@ protected void drawLeftEntity(GuiGraphics graphics, int middleX, int middleY, fl protected void drawRightEntity(GuiGraphics graphics, int posX, int posY, MaidModelInfo modelItem) { ResourceLocation cacheIconId = modelItem.getCacheIconId(); var allTextures = Minecraft.getInstance().textureManager.byPath; - if (allTextures.containsKey(cacheIconId)) { + if (MiscConfig.MODEL_ICON_CACHE.get() && allTextures.containsKey(cacheIconId)) { int textureSize = 24; graphics.blit(cacheIconId, posX - textureSize / 2, posY - textureSize, textureSize, textureSize, 0, 0, textureSize, textureSize, textureSize, textureSize); } else { diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/cache/CacheIconManager.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/cache/CacheIconManager.java index fa702e6ad..797fa1cf6 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/cache/CacheIconManager.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/cache/CacheIconManager.java @@ -8,6 +8,7 @@ import com.github.tartaricacid.touhoulittlemaid.client.resource.pojo.ChairModelInfo; import com.github.tartaricacid.touhoulittlemaid.client.resource.pojo.CustomModelPack; import com.github.tartaricacid.touhoulittlemaid.client.resource.pojo.MaidModelInfo; +import com.github.tartaricacid.touhoulittlemaid.config.subconfig.MiscConfig; import com.github.tartaricacid.touhoulittlemaid.entity.item.EntityChair; import com.github.tartaricacid.touhoulittlemaid.entity.passive.EntityMaid; import com.github.tartaricacid.touhoulittlemaid.init.InitEntities; @@ -42,31 +43,31 @@ public static void addChairPack(CustomModelPack customModelPack) public static void openMaidModelGui(EntityMaid maid) { MaidModelGui maidModelGui = new MaidModelGui(maid); - if (MAID_CACHE_QUEUE.isEmpty()) { - Minecraft.getInstance().setScreen(maidModelGui); - } else { + if (MiscConfig.MODEL_ICON_CACHE.get() && !MAID_CACHE_QUEUE.isEmpty()) { var maidCacheScreen = getMaidCacheScreen(maidModelGui); Minecraft.getInstance().setScreen(maidCacheScreen); + } else { + Minecraft.getInstance().setScreen(maidModelGui); } } public static void openChairModelGui(EntityChair chair) { ChairModelGui chairModelGui = new ChairModelGui(chair); - if (CHAIR_CACHE_QUEUE.isEmpty()) { - Minecraft.getInstance().setScreen(chairModelGui); - } else { + if (MiscConfig.MODEL_ICON_CACHE.get() && !CHAIR_CACHE_QUEUE.isEmpty()) { var chairCacheScreen = getChairCacheScreen(chairModelGui); Minecraft.getInstance().setScreen(chairCacheScreen); + } else { + Minecraft.getInstance().setScreen(chairModelGui); } } public static void openModelSwitcherModelGui(EntityMaid maid, TileEntityModelSwitcher.ModeInfo info, ModelSwitcherGui modelSwitcherGui) { ModelSwitcherModelGui switcherModelGui = new ModelSwitcherModelGui(maid, info, modelSwitcherGui); - if (MAID_CACHE_QUEUE.isEmpty()) { - Minecraft.getInstance().setScreen(switcherModelGui); - } else { + if (MiscConfig.MODEL_ICON_CACHE.get() && !MAID_CACHE_QUEUE.isEmpty()) { var maidCacheScreen = getMaidCacheScreen(switcherModelGui); Minecraft.getInstance().setScreen(maidCacheScreen); + } else { + Minecraft.getInstance().setScreen(switcherModelGui); } } @@ -81,8 +82,8 @@ private static CacheScreen getMaidCacheScreen(Abstrac int scale = scaleModified / 2; InventoryScreen.renderEntityInInventoryFollowsMouse(graphics, posX + scale, - posY + scaleModified - 5, - (int) (scale * modelInfo.getRenderItemScale() * 0.9), + posY + scaleModified, + (int) (scale * modelInfo.getRenderItemScale()), -25, -20, maid); }); } diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/model/AbstractModelGui.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/model/AbstractModelGui.java index e28d726ad..329bf4381 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/model/AbstractModelGui.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/model/AbstractModelGui.java @@ -5,6 +5,7 @@ import com.github.tartaricacid.touhoulittlemaid.client.renderer.texture.SizeTexture; import com.github.tartaricacid.touhoulittlemaid.client.resource.pojo.CustomModelPack; import com.github.tartaricacid.touhoulittlemaid.client.resource.pojo.IModelInfo; +import com.github.tartaricacid.touhoulittlemaid.config.subconfig.MiscConfig; import com.github.tartaricacid.touhoulittlemaid.util.ParseI18n; import com.google.common.collect.Lists; import com.mojang.blaze3d.systems.RenderSystem; @@ -12,6 +13,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.components.Checkbox; import net.minecraft.client.gui.components.ImageButton; import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.screens.Screen; @@ -127,6 +129,18 @@ public void init() { // 模型包翻页 addScrollButton(startX, startY); + + // 添加开启、关闭模型包图标缓存的按钮 + MutableComponent enableCache = Component.translatable("gui.touhou_little_maid.skin.enable_cache"); + int checkBoxWidth = font.width(enableCache) + 20; + int xOffset = (startX - 256 / 2) / 2 - checkBoxWidth / 2; + this.addRenderableWidget(new Checkbox(xOffset, startY - 101, 20, 20, enableCache, MiscConfig.MODEL_ICON_CACHE.get()) { + @Override + public void onPress() { + super.onPress(); + MiscConfig.MODEL_ICON_CACHE.set(this.selected()); + } + }); } private void addModelButton(int startX, int startY) { diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/model/ChairModelGui.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/model/ChairModelGui.java index 14676ebc4..5fb3548fd 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/model/ChairModelGui.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/model/ChairModelGui.java @@ -3,6 +3,7 @@ import com.github.tartaricacid.touhoulittlemaid.client.gui.entity.detail.ChairModelDetailsGui; import com.github.tartaricacid.touhoulittlemaid.client.resource.CustomPackLoader; import com.github.tartaricacid.touhoulittlemaid.client.resource.pojo.ChairModelInfo; +import com.github.tartaricacid.touhoulittlemaid.config.subconfig.MiscConfig; import com.github.tartaricacid.touhoulittlemaid.entity.item.EntityChair; import com.github.tartaricacid.touhoulittlemaid.network.NetworkHandler; import com.github.tartaricacid.touhoulittlemaid.network.message.ChairModelMessage; @@ -38,7 +39,7 @@ protected void drawLeftEntity(GuiGraphics graphics, int middleX, int middleY, fl protected void drawRightEntity(GuiGraphics graphics, int posX, int posY, ChairModelInfo modelItem) { ResourceLocation cacheIconId = modelItem.getCacheIconId(); var allTextures = Minecraft.getInstance().textureManager.byPath; - if (allTextures.containsKey(cacheIconId)) { + if (MiscConfig.MODEL_ICON_CACHE.get() && allTextures.containsKey(cacheIconId)) { int textureSize = 24; graphics.blit(cacheIconId, posX - textureSize / 2, posY - textureSize, textureSize, textureSize, 0, 0, textureSize, textureSize, textureSize, textureSize); } else { diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/model/MaidModelGui.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/model/MaidModelGui.java index 87a454b8f..73e4cfaba 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/model/MaidModelGui.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/client/gui/entity/model/MaidModelGui.java @@ -3,6 +3,7 @@ import com.github.tartaricacid.touhoulittlemaid.client.gui.entity.detail.MaidModelDetailsGui; import com.github.tartaricacid.touhoulittlemaid.client.resource.CustomPackLoader; import com.github.tartaricacid.touhoulittlemaid.client.resource.pojo.MaidModelInfo; +import com.github.tartaricacid.touhoulittlemaid.config.subconfig.MiscConfig; import com.github.tartaricacid.touhoulittlemaid.entity.passive.EntityMaid; import com.github.tartaricacid.touhoulittlemaid.network.NetworkHandler; import com.github.tartaricacid.touhoulittlemaid.network.message.MaidModelMessage; @@ -45,7 +46,7 @@ protected void drawLeftEntity(GuiGraphics graphics, int middleX, int middleY, fl protected void drawRightEntity(GuiGraphics graphics, int posX, int posY, MaidModelInfo modelItem) { ResourceLocation cacheIconId = modelItem.getCacheIconId(); var allTextures = Minecraft.getInstance().textureManager.byPath; - if (allTextures.containsKey(cacheIconId)) { + if (MiscConfig.MODEL_ICON_CACHE.get() && allTextures.containsKey(cacheIconId)) { int textureSize = 24; graphics.blit(cacheIconId, posX - textureSize / 2, posY - textureSize, textureSize, textureSize, 0, 0, textureSize, textureSize, textureSize, textureSize); } else { diff --git a/src/main/java/com/github/tartaricacid/touhoulittlemaid/config/subconfig/MiscConfig.java b/src/main/java/com/github/tartaricacid/touhoulittlemaid/config/subconfig/MiscConfig.java index 5d45da771..d386ac585 100644 --- a/src/main/java/com/github/tartaricacid/touhoulittlemaid/config/subconfig/MiscConfig.java +++ b/src/main/java/com/github/tartaricacid/touhoulittlemaid/config/subconfig/MiscConfig.java @@ -20,6 +20,7 @@ public final class MiscConfig { public static ForgeConfigSpec.BooleanValue CLOSE_OPTIFINE_WARNING; public static ForgeConfigSpec.IntValue SCARECROW_RANGE; public static ForgeConfigSpec.BooleanValue USE_NEW_MAID_FAIRY_MODEL; + public static ForgeConfigSpec.BooleanValue MODEL_ICON_CACHE; public static void init(ForgeConfigSpec.Builder builder) { builder.push("misc"); @@ -62,6 +63,9 @@ public static void init(ForgeConfigSpec.Builder builder) { builder.comment("Whether to use the new version of the Fairy Maid model"); USE_NEW_MAID_FAIRY_MODEL = builder.define("UseNewMaidFairyModel", true); + builder.comment("Whether to enable model icon caching"); + MODEL_ICON_CACHE = builder.define("ModelIconCache", true); + builder.pop(); } diff --git a/src/main/resources/assets/touhou_little_maid/lang/en_us.json b/src/main/resources/assets/touhou_little_maid/lang/en_us.json index b90a4c3ea..e362e017c 100644 --- a/src/main/resources/assets/touhou_little_maid/lang/en_us.json +++ b/src/main/resources/assets/touhou_little_maid/lang/en_us.json @@ -161,6 +161,7 @@ "gui.touhou_little_maid.skin.button.close": "Close", "gui.touhou_little_maid.skin.tooltips.show_details": "Shift Click To Open The Details GUI", "gui.touhou_little_maid.skin.tooltips.maid_use_sound_pack_id": "Use Sound Pack: %s", + "gui.touhou_little_maid.skin.enable_cache": "Icon Cache", "gui.touhou_little_maid.button.home.true": "Home Mode Is Enable", "gui.touhou_little_maid.button.home.false": "Home Mode Is Disable", "gui.touhou_little_maid.button.home.desc": "§7Click this button to set whether the maid will follow the player.", diff --git a/src/main/resources/assets/touhou_little_maid/lang/zh_cn.json b/src/main/resources/assets/touhou_little_maid/lang/zh_cn.json index 2a071358c..07ee9c716 100644 --- a/src/main/resources/assets/touhou_little_maid/lang/zh_cn.json +++ b/src/main/resources/assets/touhou_little_maid/lang/zh_cn.json @@ -161,6 +161,7 @@ "gui.touhou_little_maid.skin.button.close": "关闭", "gui.touhou_little_maid.skin.tooltips.show_details": "Shift 点击打开详情界面", "gui.touhou_little_maid.skin.tooltips.maid_use_sound_pack_id": "使用声音包:%s", + "gui.touhou_little_maid.skin.enable_cache": "图标缓存", "gui.touhou_little_maid.button.home.true": "Home 模式已开启(不跟随玩家)", "gui.touhou_little_maid.button.home.false": "Home 模式已关闭(跟随玩家)", "gui.touhou_little_maid.button.home.desc": "§7点击此按钮可以设置女仆是否跟随玩家",