Skip to content

Commit 0d784ae

Browse files
authored
Fix opening GUI outside of worlds (#6386)
1 parent d27af94 commit 0d784ae

25 files changed

Lines changed: 143 additions & 51 deletions

src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import meteordevelopment.meteorclient.settings.*;
2525
import meteordevelopment.meteorclient.systems.hud.elements.keyboard.KeyboardHud;
2626
import meteordevelopment.meteorclient.utils.Utils;
27+
import meteordevelopment.meteorclient.utils.render.DisplayItemUtils;
2728
import meteordevelopment.meteorclient.utils.render.color.SettingColor;
2829
import net.minecraft.client.resources.language.I18n;
2930
import org.apache.commons.lang3.Strings;
@@ -251,17 +252,17 @@ private void keybindW(WTable table, KeybindSetting setting) {
251252
private void blockW(WTable table, BlockSetting setting) {
252253
WHorizontalList list = table.add(theme.horizontalList()).expandX().widget();
253254

254-
WItem item = list.add(theme.item(setting.get().asItem().getDefaultInstance())).widget();
255+
WItem item = list.add(theme.item(DisplayItemUtils.toStack(setting.get().asItem()))).widget();
255256

256257
WButton select = list.add(theme.button("Select")).widget();
257258
select.action = () -> {
258259
BlockSettingScreen screen = new BlockSettingScreen(theme, setting);
259-
screen.onClosed(() -> item.set(setting.get().asItem().getDefaultInstance()));
260+
screen.onClosed(() -> item.set(DisplayItemUtils.toStack(setting.get().asItem())));
260261

261262
mc.setScreen(screen);
262263
};
263264

264-
reset(table, setting, () -> item.set(setting.get().asItem().getDefaultInstance()));
265+
reset(table, setting, () -> item.set(DisplayItemUtils.toStack(setting.get().asItem())));
265266
}
266267

267268
private void blockPosW(WTable table, BlockPosSetting setting) {
@@ -281,17 +282,17 @@ private void blockListW(WTable table, BlockListSetting setting) {
281282
private void itemW(WTable table, ItemSetting setting) {
282283
WHorizontalList list = table.add(theme.horizontalList()).expandX().widget();
283284

284-
WItem item = list.add(theme.item(setting.get().asItem().getDefaultInstance())).widget();
285+
WItem item = list.add(theme.item(DisplayItemUtils.toStack(setting.get()))).widget();
285286

286287
WButton select = list.add(theme.button("Select")).widget();
287288
select.action = () -> {
288289
ItemSettingScreen screen = new ItemSettingScreen(theme, setting);
289-
screen.onClosed(() -> item.set(setting.get().getDefaultInstance()));
290+
screen.onClosed(() -> item.set(DisplayItemUtils.toStack(setting.get())));
290291

291292
mc.setScreen(screen);
292293
};
293294

294-
reset(table, setting, () -> item.set(setting.get().getDefaultInstance()));
295+
reset(table, setting, () -> item.set(DisplayItemUtils.toStack(setting.get())));
295296
}
296297

297298
private void itemListW(WTable table, ItemListSetting setting) {

src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import meteordevelopment.meteorclient.systems.modules.Module;
2121
import meteordevelopment.meteorclient.systems.modules.Modules;
2222
import meteordevelopment.meteorclient.utils.misc.NbtUtils;
23+
import meteordevelopment.meteorclient.utils.render.DisplayItemUtils;
2324
import net.minecraft.client.input.KeyEvent;
2425
import net.minecraft.util.Tuple;
2526
import net.minecraft.world.item.Items;
@@ -123,7 +124,7 @@ protected WWindow createSearch(WContainer c) {
123124
searchWindow = w;
124125

125126
if (theme.categoryIcons()) {
126-
w.beforeHeaderInit = wContainer -> wContainer.add(theme.item(Items.COMPASS.getDefaultInstance())).pad(2);
127+
w.beforeHeaderInit = wContainer -> wContainer.add(theme.item(DisplayItemUtils.toStack(Items.COMPASS))).pad(2);
127128
}
128129

129130
c.add(w);
@@ -178,7 +179,7 @@ protected Cell<WWindow> createFavorites(WContainer c) {
178179
w.spacing = 0;
179180

180181
if (theme.categoryIcons()) {
181-
w.beforeHeaderInit = wContainer -> wContainer.add(theme.item(Items.NETHER_STAR.getDefaultInstance())).pad(2);
182+
w.beforeHeaderInit = wContainer -> wContainer.add(theme.item(DisplayItemUtils.toStack(Items.NETHER_STAR))).pad(2);
182183
}
183184

184185
Cell<WWindow> cell = c.add(w);

src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockDataSettingScreen.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import meteordevelopment.meteorclient.settings.BlockDataSetting;
1414
import meteordevelopment.meteorclient.settings.IBlockData;
1515
import meteordevelopment.meteorclient.utils.misc.IChangeable;
16+
import meteordevelopment.meteorclient.utils.render.DisplayItemUtils;
1617
import meteordevelopment.meteorclient.utils.misc.ICopyable;
1718
import meteordevelopment.meteorclient.utils.misc.ISerializable;
1819
import meteordevelopment.meteorclient.utils.misc.Names;
@@ -41,7 +42,7 @@ protected boolean includeValue(Block value) {
4142

4243
@Override
4344
protected WWidget getValueWidget(Block block) {
44-
return theme.itemWithLabel(block.asItem().getDefaultInstance(), Names.get(block));
45+
return theme.itemWithLabel(DisplayItemUtils.toStack(block), Names.get(block));
4546
}
4647

4748
@Override

src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockListSettingScreen.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import meteordevelopment.meteorclient.gui.widgets.WWidget;
1111
import meteordevelopment.meteorclient.settings.BlockListSetting;
1212
import meteordevelopment.meteorclient.utils.misc.Names;
13+
import meteordevelopment.meteorclient.utils.render.DisplayItemUtils;
1314
import net.minecraft.core.registries.BuiltInRegistries;
1415
import net.minecraft.resources.Identifier;
1516
import net.minecraft.world.level.block.Block;
@@ -36,7 +37,7 @@ protected boolean includeValue(Block value) {
3637

3738
@Override
3839
protected WWidget getValueWidget(Block value) {
39-
return theme.itemWithLabel(value.asItem().getDefaultInstance(), Names.get(value));
40+
return theme.itemWithLabel(DisplayItemUtils.toStack(value), Names.get(value));
4041
}
4142

4243
@Override

src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockSettingScreen.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import meteordevelopment.meteorclient.gui.widgets.pressable.WButton;
1414
import meteordevelopment.meteorclient.settings.BlockSetting;
1515
import meteordevelopment.meteorclient.utils.misc.Names;
16+
import meteordevelopment.meteorclient.utils.render.DisplayItemUtils;
1617
import net.minecraft.core.registries.BuiltInRegistries;
1718
import net.minecraft.world.level.block.Block;
1819
import net.minecraft.world.level.block.Blocks;
@@ -53,7 +54,7 @@ private void initTable() {
5354
if (setting.filter != null && !setting.filter.test(block)) continue;
5455
if (skipValue(block)) continue;
5556

56-
WItemWithLabel item = theme.itemWithLabel(block.asItem().getDefaultInstance(), Names.get(block));
57+
WItemWithLabel item = theme.itemWithLabel(DisplayItemUtils.toStack(block), Names.get(block));
5758
if (!filterText.isEmpty() && !Strings.CI.contains(item.getLabelText(), filterText)) continue;
5859
table.add(item);
5960

src/main/java/meteordevelopment/meteorclient/gui/screens/settings/EntityTypeListSettingScreen.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import meteordevelopment.meteorclient.settings.EntityTypeListSetting;
2020
import meteordevelopment.meteorclient.utils.Utils;
2121
import meteordevelopment.meteorclient.utils.misc.Names;
22+
import meteordevelopment.meteorclient.utils.render.DisplayItemUtils;
2223
import net.minecraft.core.component.DataComponents;
2324
import net.minecraft.core.registries.BuiltInRegistries;
2425
import net.minecraft.util.Tuple;
@@ -238,7 +239,7 @@ private void addEntityType(WTable table, WCheckbox tableCheckbox, EntityType<?>
238239

239240
//noinspection DataFlowIssue
240241
if (component.type() == entityType) {
241-
stack = item.getDefaultInstance();
242+
stack = DisplayItemUtils.toStack(item);
242243
break;
243244
}
244245
}

src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ItemListSettingScreen.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import meteordevelopment.meteorclient.gui.widgets.WWidget;
1111
import meteordevelopment.meteorclient.settings.ItemListSetting;
1212
import meteordevelopment.meteorclient.utils.misc.Names;
13+
import meteordevelopment.meteorclient.utils.render.DisplayItemUtils;
1314
import net.minecraft.core.registries.BuiltInRegistries;
1415
import net.minecraft.world.item.Item;
1516
import net.minecraft.world.item.Items;
@@ -31,7 +32,7 @@ protected boolean includeValue(Item value) {
3132

3233
@Override
3334
protected WWidget getValueWidget(Item value) {
34-
return theme.itemWithLabel(value.getDefaultInstance());
35+
return theme.itemWithLabel(DisplayItemUtils.toStack(value));
3536
}
3637

3738
@Override

src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ItemSettingScreen.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import meteordevelopment.meteorclient.gui.widgets.pressable.WButton;
1414
import meteordevelopment.meteorclient.settings.ItemSetting;
1515
import meteordevelopment.meteorclient.utils.misc.Names;
16+
import meteordevelopment.meteorclient.utils.render.DisplayItemUtils;
1617
import net.minecraft.core.registries.BuiltInRegistries;
1718
import net.minecraft.world.item.Item;
1819
import net.minecraft.world.item.Items;
@@ -52,7 +53,7 @@ public void initTable() {
5253
if (setting.filter != null && !setting.filter.test(item)) continue;
5354
if (item == Items.AIR) continue;
5455

55-
WItemWithLabel itemLabel = theme.itemWithLabel(item.getDefaultInstance(), Names.get(item));
56+
WItemWithLabel itemLabel = theme.itemWithLabel(DisplayItemUtils.toStack(item), Names.get(item));
5657
if (!filterText.isEmpty() && !Strings.CI.contains(itemLabel.getLabelText(), filterText)) continue;
5758
table.add(itemLabel);
5859

src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StatusEffectAmplifierMapSettingScreen.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import meteordevelopment.meteorclient.gui.widgets.input.WTextBox;
1414
import meteordevelopment.meteorclient.settings.Setting;
1515
import meteordevelopment.meteorclient.utils.misc.Names;
16+
import meteordevelopment.meteorclient.utils.render.DisplayItemUtils;
1617
import net.minecraft.core.component.DataComponents;
1718
import net.minecraft.world.effect.MobEffect;
1819
import net.minecraft.world.item.ItemStack;
@@ -76,14 +77,14 @@ private void initTable() {
7677
}
7778

7879
private ItemStack getPotionStack(MobEffect effect) {
79-
ItemStack potion = Items.POTION.getDefaultInstance();
80+
ItemStack potion = DisplayItemUtils.toStack(Items.POTION);
8081

8182
potion.set(
8283
DataComponents.POTION_CONTENTS,
8384
new PotionContents(
84-
potion.get(DataComponents.POTION_CONTENTS).potion(),
85+
Optional.empty(),
8586
Optional.of(effect.getColor()),
86-
potion.get(DataComponents.POTION_CONTENTS).customEffects(),
87+
List.of(),
8788
Optional.empty()
8889
)
8990
);

src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StatusEffectListSettingScreen.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import meteordevelopment.meteorclient.gui.widgets.WWidget;
1111
import meteordevelopment.meteorclient.settings.Setting;
1212
import meteordevelopment.meteorclient.utils.misc.Names;
13+
import meteordevelopment.meteorclient.utils.render.DisplayItemUtils;
1314
import net.minecraft.core.component.DataComponents;
1415
import net.minecraft.core.registries.BuiltInRegistries;
1516
import net.minecraft.world.effect.MobEffect;
@@ -39,14 +40,14 @@ protected String[] getValueNames(MobEffect value) {
3940
}
4041

4142
private ItemStack getPotionStack(MobEffect effect) {
42-
ItemStack potion = Items.POTION.getDefaultInstance();
43+
ItemStack potion = DisplayItemUtils.toStack(Items.POTION);
4344

4445
potion.set(
4546
DataComponents.POTION_CONTENTS,
4647
new PotionContents(
47-
potion.get(DataComponents.POTION_CONTENTS).potion(),
48+
Optional.empty(),
4849
Optional.of(effect.getColor()),
49-
potion.get(DataComponents.POTION_CONTENTS).customEffects(),
50+
List.of(),
5051
Optional.empty()
5152
)
5253
);

0 commit comments

Comments
 (0)