diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-05-21 20:29:08 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-05-21 20:29:08 +0800 |
| commit | a4884f1e31083a05b48ea238ce8792842e691444 (patch) | |
| tree | 5284d9cc68d5d21f74a6dc84f8004d42061c8831 /runtime/src/main/java/me/shedaniel/rei/impl/common | |
| parent | e48b5b7a9eec72fcaf202d1ffe53765da6aad503 (diff) | |
| parent | 8589dfa9b7e382c2eff22bb1c5bea5d7759007d5 (diff) | |
| download | RoughlyEnoughItems-a4884f1e31083a05b48ea238ce8792842e691444.tar.gz RoughlyEnoughItems-a4884f1e31083a05b48ea238ce8792842e691444.tar.bz2 RoughlyEnoughItems-a4884f1e31083a05b48ea238ce8792842e691444.zip | |
Merge remote-tracking branch 'origin/8.x-1.18.2' into 9.x-1.19
# Conflicts:
# gradle.properties
# runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRule.java
# runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
# runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/PerformanceScreen.java
# runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java
# runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java
# runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java
# runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/InternalWidgets.java
# runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java
Diffstat (limited to 'runtime/src/main/java/me/shedaniel/rei/impl/common')
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java | 5 | ||||
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/impl/common/util/RectangleUtils.java | 52 |
2 files changed, 55 insertions, 2 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java index 06792d75b..1aa49902b 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/EntryRegistryImpl.java @@ -36,7 +36,6 @@ import me.shedaniel.rei.api.client.overlay.ScreenOverlay; import me.shedaniel.rei.api.client.plugins.REIClientPlugin; import me.shedaniel.rei.api.client.registry.entry.EntryRegistry; import me.shedaniel.rei.api.common.entry.EntryStack; -import me.shedaniel.rei.api.common.plugins.PluginManager; import me.shedaniel.rei.api.common.registry.ReloadStage; import me.shedaniel.rei.api.common.util.CollectionUtils; import me.shedaniel.rei.api.common.util.EntryStacks; @@ -178,7 +177,9 @@ public class EntryRegistryImpl implements EntryRegistry { if (list.isEmpty()) { return Collections.singletonList(item.getDefaultInstance()); } - list.sort(STACK_COMPARATOR); + if (list.size() > 1) { + list.sort(STACK_COMPARATOR); + } return list; } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/util/RectangleUtils.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/util/RectangleUtils.java new file mode 100644 index 000000000..d728220de --- /dev/null +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/util/RectangleUtils.java @@ -0,0 +1,52 @@ +/* + * This file is licensed under the MIT License, part of Roughly Enough Items. + * Copyright (c) 2018, 2019, 2020, 2021, 2022 shedaniel + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package me.shedaniel.rei.impl.common.util; + +import me.shedaniel.math.Rectangle; + +import java.util.Comparator; +import java.util.stream.Stream; + +public class RectangleUtils { + public static Rectangle excludeZones(Rectangle rectangle, Stream<Rectangle> exclusionZones) { + return exclusionZones + .filter(rect -> rect.intersects(rectangle)) + .sorted(Comparator.comparingInt(rect -> rect.width * rect.height)) + .reduce(rectangle, (rect1, rect2) -> { + int cutLeft = rect2.getMaxX() - rect1.x; + int cutRight = rect1.getMaxX() - rect2.x; + int cutTop = rect2.getMaxY() - rect1.y; + int cutBottom = rect1.getMaxY() - rect2.y; + + return Stream.of( + new Rectangle(rect1.x + cutLeft, rect1.y, rect1.width - cutLeft, rect1.height), + new Rectangle(rect1.x, rect1.y, rect1.width - cutRight, rect1.height), + new Rectangle(rect1.x, rect1.y + cutTop, rect1.width, rect1.height - cutTop), + new Rectangle(rect1.x, rect1.y, rect1.width, rect1.height - cutBottom) + ).filter(rect -> rect.width > 0 && rect.height > 0) + .max(Comparator.comparingInt(rect -> rect.width * rect.height)) + .orElse(new Rectangle()); + }); + } +} |
