Skip to content

Commit 6cf272d

Browse files
committed
chore: chunk claiming mode now persists in client config
1 parent e0e5f82 commit 6cf272d

File tree

5 files changed

+54
-50
lines changed

5 files changed

+54
-50
lines changed

common/src/main/java/dev/ftb/mods/ftbchunks/client/FTBChunksClientConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import dev.architectury.platform.Platform;
44
import dev.ftb.mods.ftbchunks.EntityTypeBoolMapValue;
55
import dev.ftb.mods.ftbchunks.FTBChunks;
6+
import dev.ftb.mods.ftbchunks.client.gui.GuiClaimMode;
67
import dev.ftb.mods.ftbchunks.client.map.BiomeBlendMode;
78
import dev.ftb.mods.ftbchunks.client.map.MapMode;
89
import dev.ftb.mods.ftbchunks.client.minimap.MinimapComponentConfig;
@@ -41,6 +42,7 @@ public interface FTBChunksClientConfig {
4142
IntValue WATER_VISIBILITY = APPEARANCE.addInt("water_visibility", 220, 0, 255).excluded().comment("Advanced option. Water visibility");
4243
IntValue GRASS_DARKNESS = APPEARANCE.addInt("grass_darkness", 50, 0, 255).excluded().comment("Advanced option. Grass darkness");
4344
IntValue FOLIAGE_DARKNESS = APPEARANCE.addInt("foliage_darkness", 50, 0, 255).excluded().comment("Advanced option. Foliage darkness");
45+
EnumValue<GuiClaimMode> CLAIM_MODE = APPEARANCE.addEnum("claim_mode", GuiClaimMode.NAME_MAP).comment("Claim mode for the chunk claiming screen");
4446

4547
SNBTConfig WAYPOINTS = CONFIG.addGroup("waypoints", 1);
4648
BooleanValue IN_WORLD_WAYPOINTS = WAYPOINTS.addBoolean("in_world_waypoints", true).comment("Show waypoints in world");

common/src/main/java/dev/ftb/mods/ftbchunks/client/gui/ChunkScreen.java

Lines changed: 6 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package dev.ftb.mods.ftbchunks.client.gui;
22

33
import dev.ftb.mods.ftbchunks.FTBChunks;
4-
import dev.ftb.mods.ftbchunks.api.FTBChunksAPI;
54
import dev.ftb.mods.ftbchunks.client.FTBChunksClient;
5+
import dev.ftb.mods.ftbchunks.client.FTBChunksClientConfig;
66
import dev.ftb.mods.ftbchunks.client.map.MapDimension;
77
import dev.ftb.mods.ftbchunks.net.SendGeneralDataPacket;
88
import dev.ftb.mods.ftblibrary.icon.Color4I;
9-
import dev.ftb.mods.ftblibrary.icon.Icon;
109
import dev.ftb.mods.ftblibrary.icon.Icons;
1110
import dev.ftb.mods.ftblibrary.ui.*;
1211
import dev.ftb.mods.ftblibrary.ui.misc.AbstractThreePanelScreen;
@@ -28,8 +27,6 @@ public class ChunkScreen extends AbstractThreePanelScreen<ChunkScreenPanel> {
2827
private ChunkScreenPanel chunkScreenPanel;
2928
private SimpleButton largeMapButton;
3029

31-
static ClaimMode claimMode = ClaimMode.FREEHAND; // persist across invocations
32-
3330
private ChunkScreen(MapDimension dimension, @Nullable Team openedAs) {
3431
this.dimension = dimension;
3532
this.openedAs = openedAs;
@@ -213,10 +210,11 @@ public void addMouseOverText(TooltipList list) {
213210

214211
private class ClaimModeButton extends SimpleButton {
215212
public ClaimModeButton() {
216-
super(CustomTopPanel.this, claimMode.description(), claimMode.icon(), (widget, button) -> {
217-
claimMode = claimMode.next();
218-
widget.setIcon(claimMode.icon());
219-
widget.setTitle(claimMode.description());
213+
super(CustomTopPanel.this, FTBChunksClientConfig.CLAIM_MODE.get().description(), FTBChunksClientConfig.CLAIM_MODE.get().icon(), (widget, button) -> {
214+
GuiClaimMode newClaimMode = FTBChunksClientConfig.CLAIM_MODE.get().next();
215+
widget.setIcon(newClaimMode.icon());
216+
widget.setTitle(newClaimMode.description());
217+
FTBChunksClientConfig.CLAIM_MODE.set(newClaimMode);
220218
});
221219
}
222220
}
@@ -280,29 +278,4 @@ public void drawBackground(GuiGraphics graphics, Theme theme, int x, int y, int
280278
}
281279
}
282280

283-
enum ClaimMode {
284-
FREEHAND("freehand", Icon.getIcon(FTBChunksAPI.rl("textures/freehand.png"))),
285-
RECTANGLE("rectangle", Icon.getIcon(FTBChunksAPI.rl("textures/rectangle.png"))),
286-
CIRCLE("circle", Icon.getIcon(FTBChunksAPI.rl("textures/circle.png")));
287-
288-
private final String key;
289-
private final Icon icon;
290-
291-
ClaimMode(String key, Icon icon) {
292-
this.key = key;
293-
this.icon = icon;
294-
}
295-
296-
Component description() {
297-
return Component.translatable("ftbchunks.claim_mode." + key);
298-
}
299-
300-
public Icon icon() {
301-
return icon;
302-
}
303-
304-
public ClaimMode next() {
305-
return ClaimMode.values()[(ordinal() + 1) % ClaimMode.values().length];
306-
}
307-
}
308281
}

common/src/main/java/dev/ftb/mods/ftbchunks/client/gui/ChunkScreenPanel.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
import dev.architectury.networking.NetworkManager;
66
import dev.ftb.mods.ftbchunks.FTBChunks;
77
import dev.ftb.mods.ftbchunks.FTBChunksWorldConfig;
8-
import dev.ftb.mods.ftbchunks.api.ClaimResult;
98
import dev.ftb.mods.ftbchunks.api.FTBChunksAPI;
109
import dev.ftb.mods.ftbchunks.api.client.icon.MapType;
1110
import dev.ftb.mods.ftbchunks.client.FTBChunksClient;
11+
import dev.ftb.mods.ftbchunks.client.FTBChunksClientConfig;
1212
import dev.ftb.mods.ftbchunks.client.map.MapChunk;
1313
import dev.ftb.mods.ftbchunks.client.map.MapManager;
1414
import dev.ftb.mods.ftbchunks.client.map.RenderMapImageTask;
@@ -20,11 +20,7 @@
2020
import dev.ftb.mods.ftblibrary.icon.ImageIcon;
2121
import dev.ftb.mods.ftblibrary.math.MathUtils;
2222
import dev.ftb.mods.ftblibrary.math.XZ;
23-
import dev.ftb.mods.ftblibrary.ui.Button;
24-
import dev.ftb.mods.ftblibrary.ui.GuiHelper;
25-
import dev.ftb.mods.ftblibrary.ui.Panel;
26-
import dev.ftb.mods.ftblibrary.ui.ScreenWrapper;
27-
import dev.ftb.mods.ftblibrary.ui.Theme;
23+
import dev.ftb.mods.ftblibrary.ui.*;
2824
import dev.ftb.mods.ftblibrary.ui.input.Key;
2925
import dev.ftb.mods.ftblibrary.ui.input.MouseButton;
3026
import dev.ftb.mods.ftblibrary.util.TimeUtils;
@@ -44,14 +40,7 @@
4440
import net.minecraft.world.level.ChunkPos;
4541
import org.lwjgl.glfw.GLFW;
4642

47-
import java.util.ArrayList;
48-
import java.util.Date;
49-
import java.util.HashSet;
50-
import java.util.List;
51-
import java.util.Map;
52-
import java.util.Optional;
53-
import java.util.Set;
54-
import java.util.UUID;
43+
import java.util.*;
5544
import java.util.stream.Collectors;
5645

5746
import static dev.ftb.mods.ftbchunks.net.RequestChunkChangePacket.ChunkChangeOp;
@@ -69,6 +58,7 @@ public class ChunkScreenPanel extends Panel {
6958
public int tileSizeX = 16;
7059
public int tileSizeY = 16;
7160
private final ChunkScreen chunkScreen;
61+
private Button lastButtonDragged = null;
7262

7363
public ChunkScreenPanel(ChunkScreen panel) {
7464
super(panel);
@@ -146,6 +136,7 @@ public void mouseReleased(MouseButton button) {
146136
NetworkManager.sendToServer(new RequestChunkChangePacket(ChunkChangeOp.create(button.isLeft(), isShiftKeyDown()), selectedChunks, canChangeAsAdmin(), teamId));
147137
selectedChunks.clear();
148138
firstSelectedChunk = null;
139+
lastButtonDragged = null;
149140
playClickSound();
150141
}
151142
}
@@ -256,11 +247,14 @@ public void drawBackground(GuiGraphics graphics, Theme theme, int x, int y, int
256247
@Override
257248
public boolean mouseDragged(int button, double dragX, double dragY) {
258249
if (isMouseOver() && (isMouseButtonDown(MouseButton.LEFT) || isMouseButtonDown(MouseButton.RIGHT))) {
259-
if (ChunkScreen.claimMode != ChunkScreen.ClaimMode.FREEHAND && firstSelectedChunk != null) {
260-
addChunksToSelection();
250+
if (FTBChunksClientConfig.CLAIM_MODE.get() != GuiClaimMode.FREEHAND && firstSelectedChunk != null) {
251+
if (lastButtonDragged != this) {
252+
addChunksToSelection();
253+
}
261254
} else {
262255
selectedChunks.add(chunkPos);
263256
}
257+
lastButtonDragged = this;
264258
}
265259
return super.mouseDragged(button, dragX, dragY);
266260
}
@@ -275,7 +269,7 @@ private void addChunksToSelection() {
275269
for (int x = x1; x <= x2; x++) {
276270
for (int z = z1; z <= z2; z++) {
277271
XZ xz = new XZ(x, z);
278-
if (ChunkScreen.claimMode == ChunkScreen.ClaimMode.RECTANGLE
272+
if (FTBChunksClientConfig.CLAIM_MODE.get() == GuiClaimMode.RECTANGLE
279273
|| distance(xz, centre) - 0.5f <= Math.min(centre.x() - x1, centre.z() - z1))
280274
{
281275
selectedChunks.add(xz);
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package dev.ftb.mods.ftbchunks.client.gui;
2+
3+
import dev.ftb.mods.ftbchunks.api.FTBChunksAPI;
4+
import dev.ftb.mods.ftblibrary.config.NameMap;
5+
import dev.ftb.mods.ftblibrary.icon.Icon;
6+
import net.minecraft.network.chat.Component;
7+
8+
public enum GuiClaimMode {
9+
FREEHAND("freehand"),
10+
RECTANGLE("rectangle"),
11+
CIRCLE("circle");
12+
13+
public static final NameMap<GuiClaimMode> NAME_MAP = NameMap.of(FREEHAND, values()).baseNameKey("ftbchunks.claim_mode").create();
14+
15+
private final String key;
16+
private final Icon icon;
17+
18+
GuiClaimMode(String key) {
19+
this.key = key;
20+
this.icon = Icon.getIcon(FTBChunksAPI.rl("textures/" + key + ".png"));
21+
}
22+
23+
Component description() {
24+
return Component.translatable("ftbchunks.claim_mode." + key);
25+
}
26+
27+
public Icon icon() {
28+
return icon;
29+
}
30+
31+
public GuiClaimMode next() {
32+
return GuiClaimMode.values()[(ordinal() + 1) % GuiClaimMode.values().length];
33+
}
34+
}

common/src/main/resources/assets/ftbchunks/lang/en_us.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"ftbchunks.config.client.appearance.own_claimed_chunks_on_map": "Show your own claimed chunks on map",
1414
"ftbchunks.config.client.appearance.map_mode": "Map mode",
1515
"ftbchunks.config.client.appearance.biome_blend": "Biome blend",
16+
"ftbchunks.config.client.appearance.claim_mode": "Chunk claiming mode",
1617
"ftbchunks.biome_blend.none": "None (Fastest)",
1718
"ftbchunks.biome_blend.blend_3x3": "Blend 3x3",
1819
"ftbchunks.biome_blend.blend_5x5": "Blend 5x5",

0 commit comments

Comments
 (0)