Skip to content

Commit 957628e

Browse files
Fix several clone methods
1 parent e579ee5 commit 957628e

14 files changed

Lines changed: 88 additions & 8 deletions

invui/src/main/java/xyz/xenondevs/invui/gui/AbstractGui.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1186,6 +1186,9 @@ protected void applyModifiers(G gui) {
11861186
public S clone() {
11871187
try {
11881188
var clone = (AbstractBuilder<G, S>) super.clone();
1189+
clone.background = MutableProperty.of(background.get());
1190+
clone.frozen = MutableProperty.of(frozen.get());
1191+
clone.ignoreObscuredInventorySlots = MutableProperty.of(ignoreObscuredInventorySlots.get());
11891192
if (structure != null)
11901193
clone.structure = structure.clone();
11911194
if (modifiers != null)

invui/src/main/java/xyz/xenondevs/invui/gui/AbstractPagedGui.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,8 +278,10 @@ public PagedGui<C> build() {
278278
@Override
279279
public PagedGui.Builder<C> clone() {
280280
var clone = (AbstractBuilder<C>) super.clone();
281-
clone.pageChangeHandlers = new ArrayList<>(pageChangeHandlers);
281+
clone.content = MutableProperty.of(new ArrayList<>(content.get()));
282+
clone.page = MutableProperty.of(page.get());
282283
clone.pageCountChangeHandlers = new ArrayList<>(pageCountChangeHandlers);
284+
clone.pageChangeHandlers = new ArrayList<>(pageChangeHandlers);
283285
return clone;
284286
}
285287

invui/src/main/java/xyz/xenondevs/invui/gui/AbstractScrollGui.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,8 @@ public ScrollGui<C> build() {
341341
@Override
342342
public ScrollGui.Builder<C> clone() {
343343
var clone = (AbstractBuilder<C>) super.clone();
344+
clone.content = MutableProperty.of(new ArrayList<>(content.get()));
345+
clone.line = MutableProperty.of(line.get());
344346
clone.scrollHandlers = new ArrayList<>(scrollHandlers);
345347
clone.lineCountChangeHandlers = new ArrayList<>(lineCountChangeHandlers);
346348
return clone;

invui/src/main/java/xyz/xenondevs/invui/gui/TabGuiImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,8 @@ public TabGui build() {
247247
@Override
248248
public TabGui.Builder clone() {
249249
var clone = (Builder) super.clone();
250+
clone.tabs = MutableProperty.of(new ArrayList<>(tabs.get()));
251+
clone.tab = MutableProperty.of(tab.get());
250252
clone.tabChangeHandlers = new ArrayList<>(tabChangeHandlers);
251253
return clone;
252254
}

invui/src/main/java/xyz/xenondevs/invui/item/ItemBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ public ItemStack get() {
138138
*/
139139
@Override
140140
public ItemStack get(Locale locale) {
141-
return buildCache.computeIfAbsent(locale, this::build);
141+
return buildCache.computeIfAbsent(locale, this::build).clone();
142142
}
143143

144144
/**

invui/src/main/java/xyz/xenondevs/invui/window/AbstractWindow.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -892,6 +892,8 @@ public void open(Player viewer) {
892892
public S clone() {
893893
try {
894894
var clone = (AbstractBuilder<W, S>) super.clone();
895+
clone.closeable = MutableProperty.of(closeable.get());
896+
clone.windowState = MutableProperty.of(windowState.get());
895897
clone.openHandlers = new ArrayList<>(openHandlers);
896898
clone.closeHandlers = new ArrayList<>(closeHandlers);
897899
clone.outsideClickHandlers = new ArrayList<>(outsideClickHandlers);

invui/src/main/java/xyz/xenondevs/invui/window/AnvilWindowImpl.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public static final class BuilderImpl
136136
implements AnvilWindow.Builder
137137
{
138138

139-
private final List<Consumer<? super String>> renameHandlers = new ArrayList<>();
139+
private List<Consumer<? super String>> renameHandlers = new ArrayList<>();
140140
private Supplier<? extends Gui> upperGuiSupplier = () -> Gui.empty(3, 1);
141141
private MutableProperty<Boolean> textFieldAlwaysEnabled = MutableProperty.of(DEFAULT_TEXT_FIELD_ALWAYS_ENABLED);
142142
private MutableProperty<Boolean> resultAlwaysValid = MutableProperty.of(DEFAULT_RESULT_ALWAYS_VALID);
@@ -192,6 +192,14 @@ public AnvilWindow build(Player viewer) {
192192
return window;
193193
}
194194

195+
@Override
196+
public AnvilWindow.Builder clone() {
197+
var clone = (BuilderImpl) super.clone();
198+
clone.textFieldAlwaysEnabled = MutableProperty.of(textFieldAlwaysEnabled.get());
199+
clone.resultAlwaysValid = MutableProperty.of(resultAlwaysValid.get());
200+
clone.renameHandlers = new ArrayList<>(renameHandlers);
201+
return clone;
202+
}
195203
}
196204

197205
}

invui/src/main/java/xyz/xenondevs/invui/window/BrewingWindowImpl.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,14 @@ public BrewingWindow build(Player viewer) {
153153
return window;
154154
}
155155

156+
@Override
157+
public BrewingWindow.Builder clone() {
158+
var clone = (BuilderImpl) super.clone();
159+
clone.brewProgress = MutableProperty.of(brewProgress.get());
160+
clone.fuelProgress = MutableProperty.of(fuelProgress.get());
161+
return clone;
162+
}
163+
156164
}
157165

158166
}

invui/src/main/java/xyz/xenondevs/invui/window/CartographyWindowImpl.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import java.awt.image.BufferedImage;
1717
import java.util.Collections;
18+
import java.util.HashSet;
1819
import java.util.List;
1920
import java.util.Set;
2021
import java.util.function.Supplier;
@@ -189,6 +190,15 @@ public CartographyWindow build(Player viewer) {
189190
return window;
190191
}
191192

193+
@Override
194+
public CartographyWindow.Builder clone() {
195+
var clone = (BuilderImpl) super.clone();
196+
clone.icons = MutableProperty.of(new HashSet<>(icons.get()));
197+
clone.view = MutableProperty.of(view.get());
198+
clone.canvas = canvas != null ? canvas.clone() : null;
199+
return clone;
200+
}
201+
192202
}
193203

194204
}

invui/src/main/java/xyz/xenondevs/invui/window/CrafterWindowImpl.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ static final class BuilderImpl
120120

121121
private Supplier<? extends Gui> craftingGuiSupplier = () -> Gui.empty(3, 3);
122122
private Supplier<? extends Gui> resultGuiSupplier = () -> Gui.empty(1, 1);
123-
private final List<BiConsumer<? super Integer, ? super Boolean>> slotToggleHandlers = new ArrayList<>();
124-
private final List<MutableProperty<Boolean>> slots = CollectionUtils.newList(9, i -> MutableProperty.of(DEFAULT_SLOT_DISABLED_STATE));
123+
private List<BiConsumer<? super Integer, ? super Boolean>> slotToggleHandlers = new ArrayList<>();
124+
private List<MutableProperty<Boolean>> slots = CollectionUtils.newList(9, i -> MutableProperty.of(DEFAULT_SLOT_DISABLED_STATE));
125125

126126
@Override
127127
public CrafterWindow.Builder setCraftingGui(Supplier<? extends Gui> guiSupplier) {
@@ -186,6 +186,14 @@ public CrafterWindowImpl build(Player viewer) {
186186
return window;
187187
}
188188

189+
@Override
190+
public CrafterWindow.Builder clone() {
191+
var clone = (BuilderImpl) super.clone();
192+
clone.slotToggleHandlers = new ArrayList<>(slotToggleHandlers);
193+
clone.slots = CollectionUtils.newList(CRAFTING_SLOTS, i -> MutableProperty.of(slots.get(i).get()));
194+
return clone;
195+
}
196+
189197
}
190198

191199
}

0 commit comments

Comments
 (0)