diff options
Diffstat (limited to 'src/main/java')
8 files changed, 69 insertions, 41 deletions
diff --git a/src/main/java/me/shedaniel/rei/client/ClientHelper.java b/src/main/java/me/shedaniel/rei/client/ClientHelper.java index dc5ae16d1..16692a004 100644 --- a/src/main/java/me/shedaniel/rei/client/ClientHelper.java +++ b/src/main/java/me/shedaniel/rei/client/ClientHelper.java @@ -112,7 +112,7 @@ public class ClientHelper implements ClientModInitializer { List<DefaultedList<ItemStack>> field_7543 = ImmutableList.of(MinecraftClient.getInstance().player.inventory.main, MinecraftClient.getInstance().player.inventory.armor, MinecraftClient.getInstance().player.inventory.offHand); List<ItemStack> inventoryStacks = new ArrayList<>(); field_7543.forEach(itemStacks -> itemStacks.forEach(itemStack -> { - if (!itemStack.getItem().equals(Items.AIR)) + if (!itemStack.isEmpty()) inventoryStacks.add(itemStack); })); return inventoryStacks; diff --git a/src/main/java/me/shedaniel/rei/client/ConfigManager.java b/src/main/java/me/shedaniel/rei/client/ConfigManager.java index 60020526f..7b6b2b534 100644 --- a/src/main/java/me/shedaniel/rei/client/ConfigManager.java +++ b/src/main/java/me/shedaniel/rei/client/ConfigManager.java @@ -131,21 +131,21 @@ public class ConfigManager implements me.shedaniel.rei.api.ConfigManager { @Override public void openConfigScreen(Screen parent) { ClothConfigScreen.Builder builder = new ClothConfigScreen.Builder(parent, I18n.translate("text.rei.config.title"), null); - builder.addCategory(I18n.translate("text.rei.config.general")).addOption(new BooleanListEntry("text.rei.config.cheating", config.cheating, bool -> config.cheating = bool)); - ConfigScreenBuilder.CategoryBuilder appearance = builder.addCategory(I18n.translate("text.rei.config.appearance")); - appearance.addOption(new BooleanListEntry("text.rei.config.side_search_box", config.sideSearchField, bool -> config.sideSearchField = bool)); + builder.addCategory("text.rei.config.general").addOption(new BooleanListEntry("text.rei.config.cheating", config.cheating, "text.cloth.reset_value", () -> false, bool -> config.cheating = bool)); + ConfigScreenBuilder.CategoryBuilder appearance = builder.addCategory("text.rei.config.appearance"); + appearance.addOption(new BooleanListEntry("text.rei.config.side_search_box", config.sideSearchField, "text.cloth.reset_value", () -> false, bool -> config.sideSearchField = bool)); appearance.addOption(new ItemListOrderingEntry("text.rei.config.list_ordering", new Pair<>(config.itemListOrdering, config.isAscending))); - appearance.addOption(new BooleanListEntry("text.rei.config.mirror_rei", config.mirrorItemPanel, bool -> config.mirrorItemPanel = bool)); - appearance.addOption(new IntegerListEntry("text.rei.config.max_recipes_per_page", config.maxRecipePerPage, i -> config.maxRecipePerPage = i).setMinimum(2).setMaximum(99)); - ConfigScreenBuilder.CategoryBuilder modules = builder.addCategory(I18n.translate("text.rei.config.modules")); - modules.addOption(new BooleanListEntry("text.rei.config.enable_craftable_only", config.enableCraftableOnlyButton, bool -> config.enableCraftableOnlyButton = bool)); - modules.addOption(new BooleanListEntry("text.rei.config.enable_util_buttons", config.showUtilsButtons, bool -> config.showUtilsButtons = bool)); - modules.addOption(new BooleanListEntry("text.rei.config.disable_recipe_book", config.disableRecipeBook, bool -> config.disableRecipeBook = bool)); - ConfigScreenBuilder.CategoryBuilder advanced = builder.addCategory(I18n.translate("text.rei.config.advanced")); - advanced.addOption(new StringListEntry("text.rei.give_command", config.giveCommand, s -> config.giveCommand = s)); - advanced.addOption(new StringListEntry("text.rei.gamemode_command", config.gamemodeCommand, s -> config.gamemodeCommand = s)); - advanced.addOption(new StringListEntry("text.rei.weather_command", config.weatherCommand, s -> config.weatherCommand = s)); - advanced.addOption(new BooleanListEntry("text.rei.config.prefer_visible_recipes", config.preferVisibleRecipes, bool -> config.preferVisibleRecipes = bool)); + appearance.addOption(new BooleanListEntry("text.rei.config.mirror_rei", config.mirrorItemPanel, "text.cloth.reset_value", () -> false, bool -> config.mirrorItemPanel = bool)); + appearance.addOption(new IntegerListEntry("text.rei.config.max_recipes_per_page", config.maxRecipePerPage, "text.cloth.reset_value", () -> 3, i -> config.maxRecipePerPage = i).setMinimum(2).setMaximum(99)); + ConfigScreenBuilder.CategoryBuilder modules = builder.addCategory("text.rei.config.modules"); + modules.addOption(new BooleanListEntry("text.rei.config.enable_craftable_only", config.enableCraftableOnlyButton, "text.cloth.reset_value", () -> true, bool -> config.enableCraftableOnlyButton = bool)); + modules.addOption(new BooleanListEntry("text.rei.config.enable_util_buttons", config.showUtilsButtons, "text.cloth.reset_value", () -> false, bool -> config.showUtilsButtons = bool)); + modules.addOption(new BooleanListEntry("text.rei.config.disable_recipe_book", config.disableRecipeBook, "text.cloth.reset_value", () -> false, bool -> config.disableRecipeBook = bool)); + ConfigScreenBuilder.CategoryBuilder advanced = builder.addCategory("text.rei.config.advanced"); + advanced.addOption(new StringListEntry("text.rei.give_command", config.giveCommand, "text.cloth.reset_value", () -> "/give {player_name} {item_identifier}{nbt} {count}", s -> config.giveCommand = s)); + advanced.addOption(new StringListEntry("text.rei.gamemode_command", config.gamemodeCommand, "text.cloth.reset_value", () -> "/gamemode {gamemode}", s -> config.gamemodeCommand = s)); + advanced.addOption(new StringListEntry("text.rei.weather_command", config.weatherCommand, "text.cloth.reset_value", () -> "/weather {weather}", s -> config.weatherCommand = s)); + advanced.addOption(new BooleanListEntry("text.rei.config.prefer_visible_recipes", config.preferVisibleRecipes, "text.cloth.reset_value", () -> false, bool -> config.preferVisibleRecipes = bool)); builder.setOnSave(savedConfig -> { try { ConfigManager.this.saveConfig(); diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index e2039b811..038af95e6 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -197,7 +197,7 @@ public class ContainerScreenOverlay extends ScreenComponent { @Override public void onLabelClicked() { - MinecraftClient.getInstance().getSoundLoader().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); page = 0; itemListOverlay.updateList(getItemListArea(), page, searchTerm); } diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index 33638e17c..46271d5eb 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -17,6 +17,7 @@ import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.Window; import net.minecraft.sound.SoundEvents; +import net.minecraft.text.StringTextComponent; import net.minecraft.text.TranslatableTextComponent; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; @@ -49,6 +50,7 @@ public class RecipeViewingScreen extends Screen { private ButtonWidget recipeBack, recipeNext, categoryBack, categoryNext; public RecipeViewingScreen(Window window, Map<RecipeCategory, List<RecipeDisplay>> categoriesMap) { + super(new StringTextComponent("")); this.categoryPages = 0; this.window = window; this.widgets = Lists.newArrayList(); @@ -148,7 +150,7 @@ public class RecipeViewingScreen extends Screen { @Override public void onLabelClicked() { - MinecraftClient.getInstance().getSoundLoader().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); ClientHelper.executeViewAllRecipesKeyBind(); } }); @@ -200,7 +202,7 @@ public class RecipeViewingScreen extends Screen { @Override public void onLabelClicked() { - MinecraftClient.getInstance().getSoundLoader().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); RecipeViewingScreen.this.choosePageActivated = true; RecipeViewingScreen.this.onInitialized(); } @@ -231,7 +233,7 @@ public class RecipeViewingScreen extends Screen { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { if (getBounds().contains(mouseX, mouseY)) { - MinecraftClient.getInstance().getSoundLoader().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); if (getId() + categoryPages * 6 == categories.indexOf(selectedCategory)) return false; selectedCategory = categories.get(getId() + categoryPages * 6); diff --git a/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java b/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java index bb69ad06b..251320abc 100644 --- a/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java +++ b/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java @@ -1,5 +1,6 @@ package me.shedaniel.rei.gui.config; +import com.google.common.collect.Lists; import javafx.util.Pair; import me.shedaniel.cloth.api.ClientUtils; import me.shedaniel.cloth.gui.ClothConfigScreen.ListEntry; @@ -14,49 +15,65 @@ import net.minecraft.client.util.Window; import java.awt.*; import java.util.Arrays; -import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.atomic.AtomicReference; public class ItemListOrderingEntry extends ListEntry { private AtomicReference<Pair<ItemListOrdering, Boolean>> value; private ButtonWidget buttonWidget; + private ButtonWidget resetButton; + private List<InputListener> widgets; public ItemListOrderingEntry(String fieldName, Pair<ItemListOrdering, Boolean> val) { super(fieldName); this.value = new AtomicReference(val); - this.buttonWidget = new ButtonWidget(0, 0, 150, 20, "") { - public void onPressed() { - int index = Arrays.asList(ItemListOrdering.values()).indexOf(value.get().getKey()) + 1; - boolean currentAscending = value.get().getValue(); - if (index >= ItemListOrdering.values().length) { - index = 0; - currentAscending = !currentAscending; - } - ItemListOrderingEntry.this.value.set(new Pair<>(ItemListOrdering.values()[index], currentAscending)); - ((ListWidget) ItemListOrderingEntry.this.getParent()).getScreen().setEdited(true); + this.buttonWidget = new ButtonWidget(0, 0, 150, 20, "", widget -> { + int index = Arrays.asList(ItemListOrdering.values()).indexOf(value.get().getKey()) + 1; + boolean currentAscending = value.get().getValue(); + if (index >= ItemListOrdering.values().length) { + index = 0; + currentAscending = !currentAscending; } - }; + ItemListOrderingEntry.this.value.set(new Pair<>(ItemListOrdering.values()[index], currentAscending)); + ((ListWidget) ItemListOrderingEntry.this.getParent()).getScreen().setEdited(true); + }); + this.resetButton = new ButtonWidget(0, 0, MinecraftClient.getInstance().textRenderer.getStringWidth(I18n.translate("text.cloth.reset_value")) + 6, 20, I18n.translate("text.cloth.reset_value"), (widget) -> { + this.value.set((Pair) getDefaultValue().get()); + ((ListWidget) this.getParent()).getScreen().setEdited(true); + }); + this.widgets = Lists.newArrayList(this.buttonWidget, this.resetButton); } public Object getObject() { return this.value.get(); } + @Override + public Optional<Object> getDefaultValue() { + return Optional.of(new Pair<>(ItemListOrdering.registry, true)); + } + public void draw(int entryWidth, int height, int i3, int i4, boolean isSelected, float delta) { Window window = MinecraftClient.getInstance().window; Point mouse = ClientUtils.getMouseLocation(); + this.resetButton.active = this.getDefaultValue().isPresent() && (((Pair<ItemListOrdering, Boolean>) this.getDefaultValue().get()).getKey() != this.value.get().getKey() || ((Pair<ItemListOrdering, Boolean>) this.getDefaultValue().get()).getValue().booleanValue() != this.value.get().getValue().booleanValue()); + this.resetButton.y = this.getY(); this.buttonWidget.y = this.getY(); this.buttonWidget.setMessage(I18n.translate("text.rei.config.list_ordering_button", I18n.translate(value.get().getKey().getNameTranslationKey()), I18n.translate(value.get().getValue() ? "ordering.rei.ascending" : "ordering.rei.descending"))); if (MinecraftClient.getInstance().textRenderer.isRightToLeft()) { MinecraftClient.getInstance().textRenderer.drawWithShadow(I18n.translate(this.getFieldName(), new Object[0]), (float) (window.getScaledWidth() - this.getX() - MinecraftClient.getInstance().textRenderer.getStringWidth(I18n.translate(this.getFieldName(), new Object[0]))), (float) (this.getY() + 5), 16777215); - this.buttonWidget.x = this.getX(); + this.resetButton.x = this.getX(); + this.buttonWidget.x = this.getX() + this.resetButton.getWidth() + 2; + this.buttonWidget.setWidth(150 - this.resetButton.getWidth() - 2); } else { MinecraftClient.getInstance().textRenderer.drawWithShadow(I18n.translate(this.getFieldName(), new Object[0]), (float) this.getX(), (float) (this.getY() + 5), 16777215); - this.buttonWidget.x = window.getScaledWidth() - this.getX() - this.buttonWidget.getWidth(); + this.resetButton.x = window.getScaledWidth() - this.getX() - this.resetButton.getWidth(); + this.buttonWidget.x = window.getScaledWidth() - this.getX() - 150; + this.buttonWidget.setWidth(150 - this.resetButton.getWidth() - 2); } - this.buttonWidget.render(mouse.x, mouse.y, delta); + this.resetButton.render(mouse.x, mouse.y, delta); } public String getYesNoText(boolean bool) { @@ -65,11 +82,11 @@ public class ItemListOrderingEntry extends ListEntry { @Override public List<? extends InputListener> getInputListeners() { - return Collections.singletonList(buttonWidget); + return widgets; } public boolean isActive() { - return this.buttonWidget.isHovered(); + return this.buttonWidget.isHovered() || this.resetButton.isHovered(); } public void setActive(boolean b) { @@ -83,7 +100,9 @@ public class ItemListOrderingEntry extends ListEntry { } public boolean mouseClicked(double double_1, double double_2, int int_1) { - return this.buttonWidget.mouseClicked(double_1, double_2, int_1); + if (this.buttonWidget.mouseClicked(double_1, double_2, int_1)) + return true; + return this.resetButton.mouseClicked(double_1, double_2, int_1); } @Override diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java index d4fa4bb6b..34b8827dc 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java @@ -1,18 +1,20 @@ package me.shedaniel.rei.gui.credits; import me.shedaniel.rei.client.ScreenHelper; +import me.shedaniel.rei.gui.widget.ButtonWidget; import net.minecraft.client.gui.ContainerScreen; import net.minecraft.client.gui.Screen; -import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.resource.language.I18n; import net.minecraft.text.StringTextComponent; public class CreditsScreen extends Screen { private Screen parent; + private ButtonWidget buttonDone; private CreditsEntryListWidget entryListWidget; public CreditsScreen(Screen parent) { + super(new StringTextComponent("")); this.parent = parent; } @@ -34,7 +36,7 @@ public class CreditsScreen extends Screen { for(String line : I18n.translate("text.rei.credit.text").split("\n")) entryListWidget.creditsAddEntry(new CreditsEntry(new StringTextComponent(line))); entryListWidget.creditsAddEntry(new CreditsEntry(new StringTextComponent(""))); - addButton(new ButtonWidget(screenWidth / 2 - 100, screenHeight - 26, I18n.translate("gui.done")) { + listeners.add(buttonDone = new ButtonWidget(screenWidth / 2 - 100, screenHeight - 26, 200, 20, I18n.translate("gui.done")) { @Override public void onPressed() { CreditsScreen.this.client.openScreen(parent); diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java index 5d4c04de4..16c669f50 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java @@ -124,7 +124,7 @@ public abstract class ButtonWidget extends HighlightableWidget { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { if (bounds.contains(mouseX, mouseY) && enabled && button == 0) { - MinecraftClient.getInstance().getSoundLoader().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); onPressed(); return true; } @@ -137,7 +137,7 @@ public abstract class ButtonWidget extends HighlightableWidget { if (int_1 != 257 && int_1 != 32 && int_1 != 335) { return false; } else { - MinecraftClient.getInstance().getSoundLoader().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); this.onPressed(); return true; } diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java index 31fae246d..b4715dbaf 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java @@ -9,6 +9,7 @@ import net.minecraft.client.gui.Screen; import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen; import net.minecraft.container.Slot; import net.minecraft.item.ItemGroup; +import net.minecraft.text.TextComponent; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -29,6 +30,10 @@ public class MixinContainerScreen extends Screen implements ContainerScreenHooks @Shadow protected Slot focusedSlot; + protected MixinContainerScreen(TextComponent textComponent_1) { + super(textComponent_1); + } + @Override public int rei_getContainerLeft() { return left; |
