From e48d2ccbbf9cb38d7210812c7a972fbb88b0d6cb Mon Sep 17 00:00:00 2001 From: Simon B Date: Tue, 27 Feb 2024 17:50:13 +0100 Subject: [PATCH] Fix editability of sharestone with new UI (#794) * Fix canEdit of sharestone in new UI, display network in tooltip * fix: Fix sharestone visibilities --------- Co-authored-by: BlayTheNinth <1933180+BlayTheNinth@users.noreply.github.com> --- .../waystones/api/WaystoneVisibility.java | 64 +++++++++++++++++- .../client/gui/screen/WaystoneScreen.java | 2 + .../gui/widget/WaystoneVisbilityButton.java | 3 +- .../mods/waystones/core/WaystoneImpl.java | 11 +-- .../core/WaystonePermissionManager.java | 18 ++++- .../mods/waystones/menu/WaystoneMenu.java | 15 ++-- .../assets/waystones/lang/en_us.json | 17 +++++ .../waystones/textures/gui/menu/waystone.png | Bin 14598 -> 13005 bytes 8 files changed, 107 insertions(+), 23 deletions(-) diff --git a/shared/src/main/java/net/blay09/mods/waystones/api/WaystoneVisibility.java b/shared/src/main/java/net/blay09/mods/waystones/api/WaystoneVisibility.java index a79cd7dc..67335217 100644 --- a/shared/src/main/java/net/blay09/mods/waystones/api/WaystoneVisibility.java +++ b/shared/src/main/java/net/blay09/mods/waystones/api/WaystoneVisibility.java @@ -1,7 +1,69 @@ package net.blay09.mods.waystones.api; +import net.minecraft.resources.ResourceLocation; + public enum WaystoneVisibility { ACTIVATION, GLOBAL, - SHARD_ONLY + SHARD_ONLY, + SHARESTONE, + WHITE_SHARESTONE, + ORANGE_SHARESTONE, + MAGENTA_SHARESTONE, + LIGHT_BLUE_SHARESTONE, + YELLOW_SHARESTONE, + LIME_SHARESTONE, + PINK_SHARESTONE, + GRAY_SHARESTONE, + LIGHT_GRAY_SHARESTONE, + CYAN_SHARESTONE, + PURPLE_SHARESTONE, + BLUE_SHARESTONE, + BROWN_SHARESTONE, + GREEN_SHARESTONE, + RED_SHARESTONE, + BLACK_SHARESTONE; + + public static WaystoneVisibility fromWaystoneType(ResourceLocation waystoneType) { + if (WaystoneTypes.isSharestone(waystoneType)) { + return switch (waystoneType.getPath()) { + case "white_sharestone" -> WaystoneVisibility.WHITE_SHARESTONE; + case "orange_sharestone" -> WaystoneVisibility.ORANGE_SHARESTONE; + case "magenta_sharestone" -> WaystoneVisibility.MAGENTA_SHARESTONE; + case "light_blue_sharestone" -> WaystoneVisibility.LIGHT_BLUE_SHARESTONE; + case "yellow_sharestone" -> WaystoneVisibility.YELLOW_SHARESTONE; + case "lime_sharestone" -> WaystoneVisibility.LIME_SHARESTONE; + case "pink_sharestone" -> WaystoneVisibility.PINK_SHARESTONE; + case "gray_sharestone" -> WaystoneVisibility.GRAY_SHARESTONE; + case "light_gray_sharestone" -> WaystoneVisibility.LIGHT_GRAY_SHARESTONE; + case "cyan_sharestone" -> WaystoneVisibility.CYAN_SHARESTONE; + case "purple_sharestone" -> WaystoneVisibility.PURPLE_SHARESTONE; + case "blue_sharestone" -> WaystoneVisibility.BLUE_SHARESTONE; + case "brown_sharestone" -> WaystoneVisibility.BROWN_SHARESTONE; + case "green_sharestone" -> WaystoneVisibility.GREEN_SHARESTONE; + case "red_sharestone" -> WaystoneVisibility.RED_SHARESTONE; + case "black_sharestone" -> WaystoneVisibility.BLACK_SHARESTONE; + default -> WaystoneVisibility.SHARESTONE; + }; + } else if (waystoneType.equals(WaystoneTypes.WARP_PLATE)) { + return WaystoneVisibility.SHARD_ONLY; + } else if (waystoneType.equals(WaystoneTypes.LANDING_STONE)) { + return WaystoneVisibility.SHARD_ONLY; + } else { + return WaystoneVisibility.ACTIVATION; + } + } + + public int getIconX() { + return 176; + } + + public int getIconY() { + return switch (this) { + case ACTIVATION -> 32; + case GLOBAL -> 50; + case SHARD_ONLY -> 68; + default -> 86; + }; + } } diff --git a/shared/src/main/java/net/blay09/mods/waystones/client/gui/screen/WaystoneScreen.java b/shared/src/main/java/net/blay09/mods/waystones/client/gui/screen/WaystoneScreen.java index d9712145..50fd8c1c 100644 --- a/shared/src/main/java/net/blay09/mods/waystones/client/gui/screen/WaystoneScreen.java +++ b/shared/src/main/java/net/blay09/mods/waystones/client/gui/screen/WaystoneScreen.java @@ -3,6 +3,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.blay09.mods.balm.api.Balm; import net.blay09.mods.waystones.Waystones; +import net.blay09.mods.waystones.api.WaystoneTypes; import net.blay09.mods.waystones.client.gui.widget.ITooltipProvider; import net.blay09.mods.waystones.client.gui.widget.WaystoneVisbilityButton; import net.blay09.mods.waystones.menu.WaystoneMenu; @@ -16,6 +17,7 @@ import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import org.lwjgl.glfw.GLFW; diff --git a/shared/src/main/java/net/blay09/mods/waystones/client/gui/widget/WaystoneVisbilityButton.java b/shared/src/main/java/net/blay09/mods/waystones/client/gui/widget/WaystoneVisbilityButton.java index d66d4a2a..094270b3 100644 --- a/shared/src/main/java/net/blay09/mods/waystones/client/gui/widget/WaystoneVisbilityButton.java +++ b/shared/src/main/java/net/blay09/mods/waystones/client/gui/widget/WaystoneVisbilityButton.java @@ -8,6 +8,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -32,7 +33,7 @@ public WaystoneVisbilityButton(int x, int y, WaystoneVisibility visibility, List @Override public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float partial) { guiGraphics.blit(WAYSTONE_GUI_TEXTURES, getX(), getY(), 176 + (isHovered ? 18 : 0), 14, 18, 18); - guiGraphics.blit(WAYSTONE_GUI_TEXTURES, getX(), getY(), 176, 32 + (visibility.ordinal() * 18), 18, 18); + guiGraphics.blit(WAYSTONE_GUI_TEXTURES, getX(), getY(), visibility.getIconX(), visibility.getIconY(), 18, 18); } @Override diff --git a/shared/src/main/java/net/blay09/mods/waystones/core/WaystoneImpl.java b/shared/src/main/java/net/blay09/mods/waystones/core/WaystoneImpl.java index 050f076e..9d762166 100644 --- a/shared/src/main/java/net/blay09/mods/waystones/core/WaystoneImpl.java +++ b/shared/src/main/java/net/blay09/mods/waystones/core/WaystoneImpl.java @@ -45,16 +45,7 @@ public WaystoneImpl(ResourceLocation waystoneType, UUID waystoneUid, ResourceKey this.pos = pos; this.origin = origin; this.ownerUid = ownerUid; - - if (WaystoneTypes.isSharestone(waystoneType)) { - this.visibility = WaystoneVisibility.GLOBAL; - } else if (waystoneType.equals(WaystoneTypes.WARP_PLATE)) { - this.visibility = WaystoneVisibility.SHARD_ONLY; - } else if (waystoneType.equals(WaystoneTypes.LANDING_STONE)) { - this.visibility = WaystoneVisibility.SHARD_ONLY; - } else { - this.visibility = WaystoneVisibility.ACTIVATION; - } + this.visibility = WaystoneVisibility.fromWaystoneType(waystoneType); } @Override diff --git a/shared/src/main/java/net/blay09/mods/waystones/core/WaystonePermissionManager.java b/shared/src/main/java/net/blay09/mods/waystones/core/WaystonePermissionManager.java index 7b021220..be078ede 100644 --- a/shared/src/main/java/net/blay09/mods/waystones/core/WaystonePermissionManager.java +++ b/shared/src/main/java/net/blay09/mods/waystones/core/WaystonePermissionManager.java @@ -15,7 +15,23 @@ public class WaystonePermissionManager { - private static final Set DEFAULT_VISIBILITIES = Set.of(WaystoneVisibility.SHARD_ONLY, WaystoneVisibility.ACTIVATION); + private static final Set DEFAULT_VISIBILITIES = Set.of(WaystoneVisibility.SHARD_ONLY, WaystoneVisibility.ACTIVATION, + WaystoneVisibility.WHITE_SHARESTONE, + WaystoneVisibility.ORANGE_SHARESTONE, + WaystoneVisibility.MAGENTA_SHARESTONE, + WaystoneVisibility.LIGHT_BLUE_SHARESTONE, + WaystoneVisibility.YELLOW_SHARESTONE, + WaystoneVisibility.LIME_SHARESTONE, + WaystoneVisibility.PINK_SHARESTONE, + WaystoneVisibility.GRAY_SHARESTONE, + WaystoneVisibility.LIGHT_GRAY_SHARESTONE, + WaystoneVisibility.CYAN_SHARESTONE, + WaystoneVisibility.PURPLE_SHARESTONE, + WaystoneVisibility.BLUE_SHARESTONE, + WaystoneVisibility.BROWN_SHARESTONE, + WaystoneVisibility.GREEN_SHARESTONE, + WaystoneVisibility.RED_SHARESTONE, + WaystoneVisibility.BLACK_SHARESTONE); public static Optional mayEditWaystone(Player player, Level world, Waystone waystone) { if (skipsPermissions(player)) { diff --git a/shared/src/main/java/net/blay09/mods/waystones/menu/WaystoneMenu.java b/shared/src/main/java/net/blay09/mods/waystones/menu/WaystoneMenu.java index c4d7ac8c..5b801695 100644 --- a/shared/src/main/java/net/blay09/mods/waystones/menu/WaystoneMenu.java +++ b/shared/src/main/java/net/blay09/mods/waystones/menu/WaystoneMenu.java @@ -104,20 +104,15 @@ public Waystone getWaystone() { } public List getVisibilityOptions() { - if (WaystoneTypes.isSharestone(waystone.getWaystoneType())) { - return List.of(WaystoneVisibility.GLOBAL); - } else if (waystone.getWaystoneType().equals(WaystoneTypes.WARP_PLATE)) { - return List.of(WaystoneVisibility.SHARD_ONLY); - } else if (waystone.getWaystoneType().equals(WaystoneTypes.LANDING_STONE)) { - return List.of(WaystoneVisibility.SHARD_ONLY); - } else { - final var result = new ArrayList(); - result.add(WaystoneVisibility.ACTIVATION); + final var result = new ArrayList(); + final var baseVisibility = WaystoneVisibility.fromWaystoneType(waystone.getWaystoneType()); + result.add(baseVisibility); + if (baseVisibility == WaystoneVisibility.ACTIVATION) { if (WaystonePermissionManager.isAllowedVisibility(WaystoneVisibility.GLOBAL) || WaystonePermissionManager.skipsPermissions(player)) { result.add(WaystoneVisibility.GLOBAL); } - return result; } + return result; } public boolean canEdit() { diff --git a/shared/src/main/resources/assets/waystones/lang/en_us.json b/shared/src/main/resources/assets/waystones/lang/en_us.json index 5644fa91..32c94281 100644 --- a/shared/src/main/resources/assets/waystones/lang/en_us.json +++ b/shared/src/main/resources/assets/waystones/lang/en_us.json @@ -102,6 +102,23 @@ "tooltip.waystones.visibility.activation": "On Activation", "tooltip.waystones.visibility.global": "Global", "tooltip.waystones.visibility.shard_only": "Shards only", + "tooltip.waystones.visibility.white_sharestone": "White Sharestones", + "tooltip.waystones.visibility.orange_sharestone": "Orange Sharestones", + "tooltip.waystones.visibility.magenta_sharestone": "Magenta Sharestones", + "tooltip.waystones.visibility.light_blue_sharestone": "Light Blue Sharestones", + "tooltip.waystones.visibility.yellow_sharestone": "Yellow Sharestones", + "tooltip.waystones.visibility.lime_sharestone": "Lime Sharestones", + "tooltip.waystones.visibility.pink_sharestone": "Pink Sharestones", + "tooltip.waystones.visibility.gray_sharestone": "Gray Sharestones", + "tooltip.waystones.visibility.light_gray_sharestone": "Light Gray Sharestones", + "tooltip.waystones.visibility.cyan_sharestone": "Cyan Sharestones", + "tooltip.waystones.visibility.purple_sharestone": "Purple Sharestones", + "tooltip.waystones.visibility.blue_sharestone": "Blue Sharestones", + "tooltip.waystones.visibility.brown_sharestone": "Brown Sharestones", + "tooltip.waystones.visibility.green_sharestone": "Green Sharestones", + "tooltip.waystones.visibility.red_sharestone": "Red Sharestones", + "tooltip.waystones.visibility.black_sharestone": "Black Sharestones", + "tooltip.waystones.network": "Part of the %s network.", "tooltip.waystones.edit_restricted": "This waystone cannot be edited.", "stat.waystones.waystone_activated": "Waystones Activated", "waystones.untitled_waystone": "Untitled Waystone", diff --git a/shared/src/main/resources/assets/waystones/textures/gui/menu/waystone.png b/shared/src/main/resources/assets/waystones/textures/gui/menu/waystone.png index 6122c728b5d54e9f0e5f4236c0cb863fbaddf9f2..3c3062bca9b6809381a7d19888a760311c9bb052 100644 GIT binary patch delta 9108 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�l95%6yaUw$Ilss>3U#Z%-{}I^`Fg|mZ!Ijk-S)j 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 XT{O_}uBl`7f29;<)nq_u%dl2y$?zbMNb~-+ev$ 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