Skip to content

Commit a24e4b3

Browse files
committed
chore: chunk claiming mode now persists in client config
1 parent 51ca0fd commit a24e4b3

File tree

5 files changed

+55
-38
lines changed

5 files changed

+55
-38
lines changed

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

Lines changed: 3 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.MinimapBlurMode;
@@ -58,6 +59,8 @@ public interface FTBChunksClientConfig {
5859
.excludedFromGui().comment("Advanced option. Foliage darkness");
5960
EnumValue<PointerIconMode> POINTER_ICON_MODE = APPEARANCE.addEnum("pointer_icon_mode", PointerIconMode.NAME_MAP)
6061
.comment("Mode for the pointer icon to render on full screen map");
62+
EnumValue<GuiClaimMode> CLAIM_MODE = APPEARANCE.addEnum("claim_mode", GuiClaimMode.NAME_MAP)
63+
.comment("Claim mode for the chunk claiming screen");
6164

6265
Config WAYPOINTS = CONFIG.addGroup("waypoints", 1);
6366
BooleanValue IN_WORLD_WAYPOINTS = WAYPOINTS.addBoolean("in_world_waypoints", true)
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.icon.Icon;
5+
import dev.ftb.mods.ftblibrary.util.NameMap;
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.id("textures/" + key + ".png"));
21+
}
22+
23+
public 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/java/dev/ftb/mods/ftbchunks/client/gui/map/ChunkScreen.java

Lines changed: 7 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package dev.ftb.mods.ftbchunks.client.gui.map;
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;
6+
import dev.ftb.mods.ftbchunks.client.gui.GuiClaimMode;
67
import dev.ftb.mods.ftbchunks.client.map.MapDimension;
78
import dev.ftb.mods.ftbchunks.net.SendGeneralDataPacket;
8-
import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton;
99
import dev.ftb.mods.ftblibrary.client.gui.screens.AbstractThreePanelScreen;
1010
import dev.ftb.mods.ftblibrary.client.gui.screens.KeyReferenceScreen;
1111
import dev.ftb.mods.ftblibrary.client.gui.theme.Theme;
@@ -16,7 +16,6 @@
1616
import dev.ftb.mods.ftblibrary.client.icon.IconHelper;
1717
import dev.ftb.mods.ftblibrary.client.util.ClientUtils;
1818
import dev.ftb.mods.ftblibrary.icon.Color4I;
19-
import dev.ftb.mods.ftblibrary.icon.Icon;
2019
import dev.ftb.mods.ftblibrary.icon.Icons;
2120
import dev.ftb.mods.ftblibrary.util.TooltipList;
2221
import dev.ftb.mods.ftbteams.api.Team;
@@ -34,8 +33,6 @@ public class ChunkScreen extends AbstractThreePanelScreen<ChunkScreenPanel> {
3433
private final Team openedAs;
3534
private final SimpleButton largeMapButton;
3635

37-
static ClaimMode claimMode = ClaimMode.FREEHAND; // persist across invocations
38-
3936
private ChunkScreen(MapDimension dimension, @Nullable Team openedAs) {
4037
this.dimension = dimension;
4138
this.openedAs = openedAs;
@@ -215,10 +212,11 @@ public void addMouseOverText(TooltipList list) {
215212

216213
private class ClaimModeButton extends SimpleButton {
217214
public ClaimModeButton() {
218-
super(CustomTopPanel.this, claimMode.description(), claimMode.icon(), (widget, button) -> {
219-
claimMode = claimMode.next();
220-
widget.setIcon(claimMode.icon());
221-
widget.setTitle(claimMode.description());
215+
super(CustomTopPanel.this, FTBChunksClientConfig.CLAIM_MODE.get().description(), FTBChunksClientConfig.CLAIM_MODE.get().icon(), (widget, button) -> {
216+
GuiClaimMode newClaimMode = FTBChunksClientConfig.CLAIM_MODE.get().next();
217+
widget.setIcon(newClaimMode.icon());
218+
widget.setTitle(newClaimMode.description());
219+
FTBChunksClientConfig.CLAIM_MODE.set(newClaimMode);
222220
});
223221
}
224222
}
@@ -281,30 +279,4 @@ public void drawBackground(GuiGraphics graphics, Theme theme, int x, int y, int
281279
}
282280
}
283281
}
284-
285-
enum ClaimMode {
286-
FREEHAND("freehand", Icon.getIcon(FTBChunksAPI.id("textures/freehand.png"))),
287-
RECTANGLE("rectangle", Icon.getIcon(FTBChunksAPI.id("textures/rectangle.png"))),
288-
CIRCLE("circle", Icon.getIcon(FTBChunksAPI.id("textures/circle.png")));
289-
290-
private final String key;
291-
private final Icon<?> icon;
292-
293-
ClaimMode(String key, Icon<?> icon) {
294-
this.key = key;
295-
this.icon = icon;
296-
}
297-
298-
Component description() {
299-
return Component.translatable("ftbchunks.claim_mode." + key);
300-
}
301-
302-
public Icon<?> icon() {
303-
return icon;
304-
}
305-
306-
public ClaimMode next() {
307-
return ClaimMode.values()[(ordinal() + 1) % ClaimMode.values().length];
308-
}
309-
}
310282
}

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import dev.ftb.mods.ftbchunks.api.FTBChunksAPI;
88
import dev.ftb.mods.ftbchunks.api.client.icon.MapType;
99
import dev.ftb.mods.ftbchunks.client.FTBChunksClient;
10+
import dev.ftb.mods.ftbchunks.client.gui.GuiClaimMode;
1011
import dev.ftb.mods.ftbchunks.client.gui.PointerIcon;
12+
import dev.ftb.mods.ftbchunks.client.FTBChunksClientConfig;
1113
import dev.ftb.mods.ftbchunks.client.map.MapChunk;
1214
import dev.ftb.mods.ftbchunks.client.map.MapManager;
1315
import dev.ftb.mods.ftbchunks.client.map.RenderMapImageTask;
@@ -63,6 +65,7 @@ public class ChunkScreenPanel extends Panel {
6365
public int tileSizeX = 16;
6466
public int tileSizeY = 16;
6567
private final ChunkScreen chunkScreen;
68+
private Button lastButtonDragged = null;
6669

6770
public ChunkScreenPanel(ChunkScreen panel) {
6871
super(panel);
@@ -141,6 +144,7 @@ public void mouseReleased(MouseButton button) {
141144
NetworkManager.sendToServer(new RequestChunkChangePacket(ChunkChangeOp.create(button.isLeft(), isShiftKeyDown()), selectedChunks, canChangeAsAdmin(), teamId));
142145
selectedChunks.clear();
143146
firstSelectedChunk = null;
147+
lastButtonDragged = null;
144148
playClickSound();
145149
}
146150
}
@@ -252,11 +256,14 @@ public void drawBackground(GuiGraphics graphics, Theme theme, int x, int y, int
252256
@Override
253257
public boolean mouseDragged(int button, double dragX, double dragY) {
254258
if (isMouseOver() && (isMouseButtonDown(MouseButton.LEFT) || isMouseButtonDown(MouseButton.RIGHT))) {
255-
if (ChunkScreen.claimMode != ChunkScreen.ClaimMode.FREEHAND && firstSelectedChunk != null) {
256-
addChunksToSelection();
259+
if (FTBChunksClientConfig.CLAIM_MODE.get() != GuiClaimMode.FREEHAND && firstSelectedChunk != null) {
260+
if (lastButtonDragged != this) {
261+
addChunksToSelection();
262+
}
257263
} else {
258264
selectedChunks.add(chunkPos);
259265
}
266+
lastButtonDragged = this;
260267
}
261268
return super.mouseDragged(button, dragX, dragY);
262269
}
@@ -271,7 +278,7 @@ private void addChunksToSelection() {
271278
for (int x = x1; x <= x2; x++) {
272279
for (int z = z1; z <= z2; z++) {
273280
XZ xz = new XZ(x, z);
274-
if (ChunkScreen.claimMode == ChunkScreen.ClaimMode.RECTANGLE
281+
if (FTBChunksClientConfig.CLAIM_MODE.get() == GuiClaimMode.RECTANGLE
275282
|| distance(xz, centre) - 0.5f <= Math.min(centre.x() - x1, centre.z() - z1))
276283
{
277284
selectedChunks.add(xz);

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"ftbchunks.appearance.own_claimed_chunks_on_map": "Show your own claimed chunks on map",
1212
"ftbchunks.appearance.map_mode": "Map mode",
1313
"ftbchunks.appearance.biome_blend": "Biome blend",
14+
"ftbchunks.appearance.claim_mode": "Chunk claiming mode",
1415
"ftbchunks.biome_blend.none": "None (Fastest)",
1516
"ftbchunks.biome_blend.blend_3x3": "Blend 3x3",
1617
"ftbchunks.biome_blend.blend_5x5": "Blend 5x5",

0 commit comments

Comments
 (0)