diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-06-06 16:29:32 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-06-06 16:29:32 +0800 |
| commit | 3802055673e7877d66614791eba6ea0599488c7a (patch) | |
| tree | 8a26efa9c9cea0c0ee1d00234c04eace52771dae /src/main/java | |
| parent | f7be9668e3b9508497e21ff74cc0f2f2e1b5d931 (diff) | |
| download | RoughlyEnoughItems-3802055673e7877d66614791eba6ea0599488c7a.tar.gz RoughlyEnoughItems-3802055673e7877d66614791eba6ea0599488c7a.tar.bz2 RoughlyEnoughItems-3802055673e7877d66614791eba6ea0599488c7a.zip | |
Improved Search
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java')
28 files changed, 752 insertions, 387 deletions
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index d8886e991..c9a5a45ba 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -192,7 +192,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { ClientSidePacketRegistry.INSTANCE.register(RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, (packetContext, packetByteBuf) -> { ItemStack stack = packetByteBuf.readItemStack(); String player = packetByteBuf.readString(32767); - packetContext.getPlayer().addMessage(new LiteralText(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", SearchArgument.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getCount() + "").replaceAll("\\{player_name}", player)), false); + packetContext.getPlayer().addMessage(new LiteralText(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", EntryStack.create(stack.copy()).asFormattedText().getString()).replaceAll("\\{item_count}", stack.copy().getCount() + "").replaceAll("\\{player_name}", player)), false); }); ClientSidePacketRegistry.INSTANCE.register(RoughlyEnoughItemsNetwork.NOT_ENOUGH_ITEMS_PACKET, (packetContext, packetByteBuf) -> { Screen currentScreen = MinecraftClient.getInstance().currentScreen; diff --git a/src/main/java/me/shedaniel/rei/api/EntryStack.java b/src/main/java/me/shedaniel/rei/api/EntryStack.java index 66c711b3d..9db7dca58 100644 --- a/src/main/java/me/shedaniel/rei/api/EntryStack.java +++ b/src/main/java/me/shedaniel/rei/api/EntryStack.java @@ -32,6 +32,7 @@ import me.shedaniel.rei.api.widgets.Tooltip; import me.shedaniel.rei.impl.EmptyEntryStack; import me.shedaniel.rei.impl.FluidEntryStack; import me.shedaniel.rei.impl.ItemEntryStack; +import me.shedaniel.rei.utils.CollectionUtils; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.fluid.Fluid; @@ -40,7 +41,9 @@ import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.StringNbtReader; +import net.minecraft.text.LiteralText; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import net.minecraft.util.registry.Registry; @@ -54,7 +57,7 @@ import java.util.function.Function; import java.util.function.Supplier; @SuppressWarnings("deprecation") -public interface EntryStack { +public interface EntryStack extends TextRepresentable { static EntryStack empty() { return EmptyEntryStack.EMPTY; @@ -137,8 +140,14 @@ public interface EntryStack { return copyFluidToItem(stack); } + @Deprecated + @ApiStatus.ScheduledForRemoval static EntryStack copyFluidToItem(EntryStack stack) { - return FluidSupportProvider.INSTANCE.fluidToItem(stack); + Item bucketItem = stack.getFluid().getBucketItem(); + if (bucketItem != null) { + return EntryStack.create(bucketItem); + } + return EntryStack.empty(); } @Deprecated diff --git a/src/main/java/me/shedaniel/rei/api/TextRepresentable.java b/src/main/java/me/shedaniel/rei/api/TextRepresentable.java new file mode 100644 index 000000000..fd058b0cc --- /dev/null +++ b/src/main/java/me/shedaniel/rei/api/TextRepresentable.java @@ -0,0 +1,25 @@ +package me.shedaniel.rei.api; + +import me.shedaniel.math.impl.PointHelper; +import me.shedaniel.rei.api.widgets.Tooltip; +import net.minecraft.text.LiteralText; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; +import org.jetbrains.annotations.NotNull; + +public interface TextRepresentable { + @NotNull + default Text asFormattedText() { + if (this instanceof EntryStack) { + Tooltip tooltip = ((EntryStack) this).getTooltip(PointHelper.ofMouse()); + if (tooltip != null && !tooltip.getText().isEmpty()) + return tooltip.getText().get(0); + } + return new LiteralText(""); + } + + @NotNull + default Text asFormatStrippedText() { + return new LiteralText(Formatting.strip(asFormattedText().getString())); + } +} diff --git a/src/main/java/me/shedaniel/rei/api/TextTest.java b/src/main/java/me/shedaniel/rei/api/TextTest.java new file mode 100644 index 000000000..0749aae62 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/api/TextTest.java @@ -0,0 +1,13 @@ +package me.shedaniel.rei.api; + +import net.minecraft.text.LiteralText; +import net.minecraft.text.MutableText; +import net.minecraft.util.Formatting; + +public class TextTest { + public static void main(String[] args) { + MutableText text = new LiteralText("adaw").append("dawdwdaw").formatted(Formatting.RED); + System.out.println(text.getString()); + System.out.println(text.getString()); + } +} diff --git a/src/main/java/me/shedaniel/rei/api/fluid/FluidSupportProvider.java b/src/main/java/me/shedaniel/rei/api/fluid/FluidSupportProvider.java index 0356e887d..97d75d0d3 100644 --- a/src/main/java/me/shedaniel/rei/api/fluid/FluidSupportProvider.java +++ b/src/main/java/me/shedaniel/rei/api/fluid/FluidSupportProvider.java @@ -37,13 +37,19 @@ public interface FluidSupportProvider { void registerFluidProvider(@NotNull FluidProvider provider); + @Deprecated + @ApiStatus.ScheduledForRemoval @NotNull - EntryStack fluidToItem(@NotNull EntryStack fluidStack); + default EntryStack fluidToItem(@NotNull EntryStack fluidStack) { + return EntryStack.empty(); + } @NotNull EntryStack itemToFluid(@NotNull EntryStack itemStack); interface FluidProvider { + @Deprecated + @ApiStatus.ScheduledForRemoval @NotNull default EntryStack fluidToItem(@NotNull EntryStack fluidStack) { return EntryStack.empty(); diff --git a/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java b/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java index 2f186c138..ef8d2a6ec 100644 --- a/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java +++ b/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java @@ -135,7 +135,7 @@ public class OverlaySearchField extends TextFieldWidget { addToHistory(getText()); setFocused(false); return true; - } else if (int_1 == 265) { + } else if (int_1 == 264) { int i = history.indexOf(getText()) - 1; if (i < -1 && getText().isEmpty()) i = history.size() - 1; @@ -147,7 +147,7 @@ public class OverlaySearchField extends TextFieldWidget { setText(history.get(i)); return true; } - } else if (int_1 == 264) { + } else if (int_1 == 265) { int i = history.indexOf(getText()) + 1; if (i > 0) { setText(i < history.size() ? history.get(i) : ""); diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index ed797d601..52efc96c3 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -342,10 +342,9 @@ public class RecipeViewingScreen extends Screen implements RecipeScreen { preWidgets.add(workingStationsBaseWidget = Widgets.createCategoryBase(new Rectangle(xx - 5, yy - 5, 15 + innerWidth * 16, 10 + actualHeight * 16))); preWidgets.add(Widgets.createSlotBase(new Rectangle(xx - 1, yy - 1, innerWidth * 16 + 2, actualHeight * 16 + 2))); int index = 0; - List<Text> list = Collections.singletonList(new TranslatableText("text.rei.working_station").formatted(Formatting.YELLOW)); xx += (innerWidth - 1) * 16; for (List<EntryStack> workingStation : workingStations) { - preWidgets.add(new WorkstationSlotWidget(xx, yy, CollectionUtils.map(workingStation, stack -> stack.copy().setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, s -> list)))); + preWidgets.add(new WorkstationSlotWidget(xx, yy, workingStation)); index++; yy += 16; if (index >= hh) { diff --git a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java index 79068c07b..39bb93746 100644 --- a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java @@ -41,7 +41,6 @@ import me.shedaniel.rei.gui.widget.Widget; import me.shedaniel.rei.impl.ClientHelperImpl; import me.shedaniel.rei.impl.InternalWidgets; import me.shedaniel.rei.impl.ScreenHelper; -import me.shedaniel.rei.utils.CollectionUtils; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.screen.Screen; @@ -51,15 +50,12 @@ import net.minecraft.client.util.NarratorManager; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.sound.SoundEvents; import net.minecraft.text.LiteralText; -import net.minecraft.text.Text; import net.minecraft.text.TranslatableText; -import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; @@ -171,9 +167,8 @@ public class VillagerRecipeViewingScreen extends Screen implements RecipeScreen widgets.add(Widgets.createCategoryBase(new Rectangle(xx - 5, bounds.y + bounds.height - 5, 10 + w * 16, 12 + h * 16))); widgets.add(Widgets.createSlotBase(new Rectangle(xx - 1, yy - 1, 2 + w * 16, 2 + h * 16))); int index = 0; - List<Text> list = Collections.singletonList(new TranslatableText("text.rei.working_station").formatted(Formatting.YELLOW)); for (List<EntryStack> workingStation : workingStations) { - widgets.add(new RecipeViewingScreen.WorkstationSlotWidget(xx, yy, CollectionUtils.map(workingStation, stack -> stack.copy().setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, s -> list)))); + widgets.add(new RecipeViewingScreen.WorkstationSlotWidget(xx, yy, workingStation)); index++; xx += 16; if (index >= ww) { diff --git a/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java index be76074e1..4aee01ce9 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/EntryListWidget.java @@ -46,6 +46,7 @@ import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.render.Tessellator; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.text.LiteralText; import net.minecraft.text.Text; @@ -69,7 +70,7 @@ import java.util.stream.Collectors; public class EntryListWidget extends WidgetWithBounds { static final Supplier<Boolean> RENDER_ENCHANTMENT_GLINT = ConfigObject.getInstance()::doesRenderEntryEnchantmentGlint; - static final Comparator<? super EntryStack> ENTRY_NAME_COMPARER = Comparator.comparing(SearchArgument::tryGetEntryStackName); + static final Comparator<? super EntryStack> ENTRY_NAME_COMPARER = Comparator.comparing(stack -> stack.asFormatStrippedText().getString()); static final Comparator<? super EntryStack> ENTRY_GROUP_COMPARER = Comparator.comparingInt(stack -> { if (stack.getType() == EntryStack.Type.ITEM) { ItemGroup group = stack.getItem().getGroup(); @@ -729,8 +730,12 @@ public class EntryListWidget extends WidgetWithBounds { if (containsMouse(mouseX, mouseY) && ClientHelper.getInstance().isCheating()) { EntryStack entry = getCurrentEntry().copy(); if (!entry.isEmpty()) { - if (entry.getType() == EntryStack.Type.FLUID) - entry = EntryStack.copyFluidToItem(entry); + if (entry.getType() == EntryStack.Type.FLUID) { + Item bucketItem = entry.getFluid().getBucketItem(); + if (bucketItem != null) { + entry = EntryStack.create(bucketItem); + } + } if (entry.getType() == EntryStack.Type.ITEM) entry.setAmount(button != 1 && !Screen.hasShiftDown() ? 1 : entry.getItemStack().getMaxCount()); ClientHelper.getInstance().tryCheatingEntry(entry); diff --git a/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java index bd7243cb6..b828a9eae 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java @@ -41,6 +41,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.Item; import net.minecraft.text.TranslatableText; import net.minecraft.util.math.MathHelper; import org.jetbrains.annotations.ApiStatus; @@ -297,8 +298,12 @@ public class FavoritesListWidget extends WidgetWithBounds { if (containsMouse(mouseX, mouseY) && ClientHelper.getInstance().isCheating()) { EntryStack entry = getCurrentEntry().copy(); if (!entry.isEmpty()) { - if (entry.getType() == EntryStack.Type.FLUID) - entry = EntryStack.copyFluidToItem(entry); + if (entry.getType() == EntryStack.Type.FLUID) { + Item bucketItem = entry.getFluid().getBucketItem(); + if (bucketItem != null) { + entry = EntryStack.create(bucketItem); + } + } if (entry.getType() == EntryStack.Type.ITEM) entry.setAmount(button != 1 && !Screen.hasShiftDown() ? 1 : entry.getItemStack().getMaxCount()); ClientHelper.getInstance().tryCheatingEntry(entry); diff --git a/src/main/java/me/shedaniel/rei/gui/widget/TextFieldWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/TextFieldWidget.java index 88896da40..868fa9ee7 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/TextFieldWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/TextFieldWidget.java @@ -34,6 +34,7 @@ import net.minecraft.client.render.Tessellator; import net.minecraft.client.render.VertexFormats; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Tickable; +import net.minecraft.util.Util; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Matrix4f; import org.jetbrains.annotations.ApiStatus; @@ -55,9 +56,9 @@ public class TextFieldWidget extends WidgetWithBounds implements Tickable { public Function<String, String> stripInvalid; protected int focusedTicks; protected boolean editable; - protected int field_2103; - protected int cursorMax; - protected int cursorMin; + protected int firstCharacterIndex; + protected int selectionStart; + protected int selectionEnd; protected int editableColor; protected int notEditableColor; protected BiFunction<String, Integer, String> renderTextProvider; @@ -65,9 +66,10 @@ public class TextFieldWidget extends WidgetWithBounds implements Tickable { private String text; private int maxLength; private boolean hasBorder; - private boolean field_2096; + private boolean focusUnlocked; private boolean focused; private boolean visible; + private boolean selecting; private String suggestion; private Consumer<String> changedListener; private Predicate<String> textPredicate; @@ -76,7 +78,7 @@ public class TextFieldWidget extends WidgetWithBounds implements Tickable { this.text = ""; this.maxLength = 32; this.hasBorder = true; - this.field_2096 = true; + this.focusUnlocked = true; this.editable = true; this.editableColor = 14737632; this.notEditableColor = 7368816; @@ -111,7 +113,7 @@ public class TextFieldWidget extends WidgetWithBounds implements Tickable { this.changedListener = biConsumer_1; } - public void method_1854(BiFunction<String, Integer, String> biFunction_1) { + public void setRenderTextProvider(BiFunction<String, Integer, String> biFunction_1) { this.renderTextProvider = biFunction_1; } @@ -133,25 +135,25 @@ public class TextFieldWidget extends WidgetWithBounds implements Tickable { } this.onChanged(string_1); - this.moveCursorToEnd(); + this.setCursorToEnd(); } } public String getSelectedText() { - int int_1 = Math.min(this.cursorMax, this.cursorMin); - int int_2 = Math.max(this.cursorMax, this.cursorMin); - return this.text.substring(int_1, int_2); + int i = Math.min(this.selectionStart, this.selectionEnd); + int j = Math.max(this.selectionStart, this.selectionEnd); + return this.text.substring(i, j); } - public void method_1890(Predicate<String> predicate_1) { + public void setTextPredicate(Predicate<String> predicate_1) { this.textPredicate = predicate_1; } public void addText(String string_1) { String string_2 = ""; String string_3 = stripInvalid.apply(string_1); - int int_1 = Math.min(this.cursorMax, this.cursorMin); - int int_2 = Math.max(this.cursorMax, this.cursorMin); + int int_1 = Math.min(this.selectionStart, this.selectionEnd); + int int_2 = Math.max(this.selectionStart, this.selectionEnd); int int_3 = this.maxLength - this.text.length() - (int_1 - int_2); if (!this.text.isEmpty()) { string_2 = string_2 + this.text.substring(0, int_1); @@ -172,8 +174,8 @@ public class TextFieldWidget extends WidgetWithBounds implements Tickable { if (this.textPredicate.test(string_2)) { this.text = string_2; - this.setCursor(int_1 + int_5); - this.method_1884(this.cursorMax); + this.setSelectionStart(int_1 + int_5); + this.setSelectionEnd(this.selectionStart); this.onChanged(this.text); } } @@ -185,119 +187,111 @@ public class TextFieldWidget extends WidgetWithBounds implements Tickable { } - private void method_16873(int int_1) { + private void erase(int int_1) { if (Screen.hasControlDown()) { - this.method_1877(int_1); + this.eraseWords(int_1); } else { - this.method_1878(int_1); + this.eraseCharacters(int_1); } - } - public void method_1877(int int_1) { + public void eraseWords(int wordOffset) { if (!this.text.isEmpty()) { - if (this.cursorMin != this.cursorMax) { + if (this.selectionEnd != this.selectionStart) { this.addText(""); } else { - this.method_1878(this.method_1853(int_1) - this.cursorMax); + this.eraseCharacters(this.getWordSkipPosition(wordOffset) - this.selectionStart); } } } - public void method_1878(int int_1) { + public void eraseCharacters(int characterOffset) { if (!this.text.isEmpty()) { - if (this.cursorMin != this.cursorMax) { + if (this.selectionEnd != this.selectionStart) { this.addText(""); } else { - boolean boolean_1 = int_1 < 0; - int int_2 = boolean_1 ? this.cursorMax + int_1 : this.cursorMax; - int int_3 = boolean_1 ? this.cursorMax : this.cursorMax + int_1; - String string_1 = ""; - if (int_2 >= 0) { - string_1 = this.text.substring(0, int_2); - } - - if (int_3 < this.text.length()) { - string_1 = string_1 + this.text.substring(int_3); - } - - if (this.textPredicate.test(string_1)) { - this.text = string_1; - if (boolean_1) { - this.moveCursor(int_1, true); + int i = this.getMovedCursorIndex(characterOffset); + int j = Math.min(i, this.selectionStart); + int k = Math.max(i, this.selectionStart); + if (j != k) { + String string = (new StringBuilder(this.text)).delete(j, k).toString(); + if (this.textPredicate.test(string)) { + this.text = string; + this.setCursor(j); } - - this.onChanged(this.text); } + this.onChanged(this.text); } } } - public int method_1853(int int_1) { - return this.method_1869(int_1, this.getCursor()); + public int getWordSkipPosition(int int_1) { + return this.getWordSkipPosition(int_1, this.getCursor()); } - public int method_1869(int int_1, int int_2) { - return this.method_1864(int_1, int_2, true); + public int getWordSkipPosition(int int_1, int int_2) { + return this.getWordSkipPosition(int_1, int_2, true); } - public int method_1864(int int_1, int int_2, boolean boolean_1) { - int int_3 = int_2; - boolean boolean_2 = int_1 < 0; - int int_4 = Math.abs(int_1); + public int getWordSkipPosition(int wordOffset, int cursorPosition, boolean skipOverSpaces) { + int i = cursorPosition; + boolean bl = wordOffset < 0; + int j = Math.abs(wordOffset); - for (int int_5 = 0; int_5 < int_4; ++int_5) { - if (!boolean_2) { - int int_6 = this.text.length(); - int_3 = this.text.indexOf(32, int_3); - if (int_3 == -1) { - int_3 = int_6; + for (int k = 0; k < j; ++k) { + if (!bl) { + int l = this.text.length(); + i = this.text.indexOf(32, i); + if (i == -1) { + i = l; } else { - while (boolean_1 && int_3 < int_6 && this.text.charAt(int_3) == ' ') { - ++int_3; + while (skipOverSpaces && i < l && this.text.charAt(i) == ' ') { + ++i; } } } else { - while (boolean_1 && int_3 > 0 && this.text.charAt(int_3 - 1) == ' ') { - --int_3; + while (skipOverSpaces && i > 0 && this.text.charAt(i - 1) == ' ') { + --i; } - while (int_3 > 0 && this.text.charAt(int_3 - 1) != ' ') { - --int_3; + while (i > 0 && this.text.charAt(i - 1) != ' ') { + --i; } } } - return int_3; + return i; } - public void moveCursor(int int_1, boolean resetSelect) { - this.moveCursorTo(this.cursorMax + int_1, resetSelect); + public void moveCursor(int int_1) { + this.setCursor(this.selectionStart + int_1); } - public void moveCursorTo(int int_1, boolean resetSelect) { - this.setCursor(int_1); - // if (!this.field_17037) { - if (resetSelect) { - this.method_1884(this.cursorMax); + private int getMovedCursorIndex(int i) { + return Util.moveCursor(this.text, this.selectionStart, i); + } + + public void setCursor(int int_1) { + this.setSelectionStart(int_1); + if (!selecting) { + this.setSelectionEnd(this.selectionStart); } - - this.onChanged(this.text); } - public void moveCursorToHead() { - this.moveCursorTo(0, true); + public void setCursorToStart() { + this.setCursor(0); } - public void moveCursorToEnd() { - this.moveCursorTo(this.text.length(), true); + public void setCursorToEnd() { + this.setCursor(this.text.length()); } public boolean keyPressed(int int_1, int int_2, int int_3) { if (this.isVisible() && this.isFocused()) { + this.selecting = Screen.hasShiftDown(); if (Screen.isSelectAll(int_1)) { - this.moveCursorToEnd(); - this.method_1884(0); + this.setCursorToEnd(); + this.setSelectionEnd(0); return true; } else if (Screen.isCopy(int_1)) { minecraft.keyboard.setClipboard(this.getSelectedText()); @@ -319,7 +313,9 @@ public class TextFieldWidget extends WidgetWithBounds implements Tickable { switch (int_1) { case 259: if (this.editable) { - this.method_16873(-1); + this.selecting = false; + this.erase(-1); + this.selecting = Screen.hasShiftDown(); } return true; @@ -332,31 +328,33 @@ public class TextFieldWidget extends WidgetWithBounds implements Tickable { return int_1 != 256; case 261: if (this.editable) { - this.method_16873(1); + this.selecting = false; |
