diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-04-28 14:03:31 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-05-20 02:37:49 +0800 |
| commit | 6d092d7599d27748abd8dc50b0c87e7fdba689cd (patch) | |
| tree | 2ef04a225cdc464689690ddc081fd5eb1e0dd7ac /runtime/src/main/java/me/shedaniel/rei/impl/common | |
| parent | a1d8c20c7b34c12b5d95c1d61131a253cdd8affd (diff) | |
| download | RoughlyEnoughItems-6d092d7599d27748abd8dc50b0c87e7fdba689cd.tar.gz RoughlyEnoughItems-6d092d7599d27748abd8dc50b0c87e7fdba689cd.tar.bz2 RoughlyEnoughItems-6d092d7599d27748abd8dc50b0c87e7fdba689cd.zip | |
REI 8.2
- Display History
- Draggable Component
- Multi Select Filtering Screen
- Better Craftable Filter
- Fix #850
- Fix #845
- Fix #832
- Fix #731
- Fix #839
- Fix #804
- Fix EvilCraft
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()); + }); + } +} |
