Skip to content

Commit

Permalink
Fix editability of sharestone with new UI (#794)
Browse files Browse the repository at this point in the history
* Fix canEdit of sharestone in new UI, display network in tooltip

* fix: Fix sharestone visibilities

---------

Co-authored-by: BlayTheNinth <[email protected]>
  • Loading branch information
edralzar and BlayTheNinth authored Feb 27, 2024
1 parent dbb4110 commit e48d2cc
Show file tree
Hide file tree
Showing 8 changed files with 107 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -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;
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,23 @@

public class WaystonePermissionManager {

private static final Set<WaystoneVisibility> DEFAULT_VISIBILITIES = Set.of(WaystoneVisibility.SHARD_ONLY, WaystoneVisibility.ACTIVATION);
private static final Set<WaystoneVisibility> 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<WaystoneEditError> mayEditWaystone(Player player, Level world, Waystone waystone) {
if (skipsPermissions(player)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,20 +104,15 @@ public Waystone getWaystone() {
}

public List<WaystoneVisibility> 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<WaystoneVisibility>();
result.add(WaystoneVisibility.ACTIVATION);
final var result = new ArrayList<WaystoneVisibility>();
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() {
Expand Down
17 changes: 17 additions & 0 deletions shared/src/main/resources/assets/waystones/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit e48d2cc

Please sign in to comment.