From 4b38528fe0b533b4dcfdf34a6c815f3956442bb9 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 30 Mar 2025 23:56:05 +0700 Subject: [PATCH] Switch more code to use kommons --- .../mc/otm/datagen/loot/LootTables.kt | 2 +- .../entity/blackhole/BlackHoleBlockEntity.kt | 4 +- .../BlackHoleGeneratorBlockEntity.kt | 2 +- .../block/entity/cable/EnergyCableGraph.kt | 4 +- .../matter/MatterEntanglerBlockEntity.kt | 8 +- .../matter/PatternStorageBlockEntity.kt | 2 +- .../ru/dbotthepony/mc/otm/capability/Ext.kt | 6 +- .../energy/CombinedEnergyStorage.kt | 4 +- .../energy/CombinedProfiledEnergyStorage.kt | 4 +- .../matter/CombinedMatterStorage.kt | 4 +- .../matter/CombinedProfiledMatterStorage.kt | 4 +- .../mc/otm/client/ClientEventHandler.kt | 2 +- .../otm/client/render/sprites/SpriteType.kt | 2 +- .../otm/client/screen/panels/EditablePanel.kt | 4 +- .../screen/panels/input/TextInputPanel.kt | 8 +- .../client/screen/panels/util/GridPanel.kt | 4 - .../mc/otm/compat/cos/CosmeticArmorCompat.kt | 2 +- .../mc/otm/compat/curios/CuriosCompat.kt | 5 +- .../mc/otm/compat/jei/JEIPlugin.kt | 8 +- .../otm/container/BitmapTrackingContainer.kt | 2 +- .../mc/otm/container/CombinedContainer.kt | 10 +- .../mc/otm/container/ContainerHelpers.kt | 7 +- .../mc/otm/container/IEnhancedContainer.kt | 9 +- .../mc/otm/container/UpgradeContainer.kt | 4 +- .../container/util/ItemHandlerSpliterator.kt | 2 +- .../mc/otm/container/util/Iterators.kt | 4 +- .../mc/otm/data/codec/CodecList.kt | 2 +- .../mc/otm/data/codec/PredicatedCodecList.kt | 2 +- .../condition/ItemInInventoryCondition.kt | 2 +- .../mc/otm/data/loot/CopyTileNbtFunction.kt | 2 +- .../mc/otm/item/FluidCapsuleItem.kt | 2 +- .../mc/otm/item/QuantumBatteryItem.kt | 2 +- .../mc/otm/item/matter/GoldDiskItem.kt | 2 +- .../mc/otm/matter/MatterManager.kt | 10 +- .../mc/otm/menu/decorative/PainterMenu.kt | 6 +- .../mc/otm/menu/storage/ItemMonitorMenu.kt | 4 +- .../mc/otm/multiblock/ShapedMultiblock.kt | 4 +- .../otm/multiblock/ShapedMultiblockBuilder.kt | 5 +- .../otm/multiblock/ShapedMultiblockFactory.kt | 9 +- .../mc/otm/network/BlockEntitySyncPacket.kt | 4 +- .../mc/otm/network/syncher/SynchableGroup.kt | 4 +- .../mc/otm/player/MatteryPlayer.kt | 2 +- .../player/android/AndroidResearchManager.kt | 1 + .../mc/otm/recipe/MatterEntanglerRecipe.kt | 4 +- .../mc/otm/triggers/MCriterionTrigger.kt | 7 +- .../mc/otm/util/FriendlyStreams.kt | 6 + .../ru/dbotthepony/mc/otm/util/LevelUtils.kt | 10 + .../ru/dbotthepony/mc/otm/util/Utils.kt | 94 ---- .../chart/AbstractCombinedHistoryChart.kt | 6 +- .../util/chart/CombinedDecimalHistoryChart.kt | 2 +- .../mc/otm/util/chart/DecimalHistoryChart.kt | 2 +- .../mc/otm/util/collect/ConditionalEnumSet.kt | 2 + .../mc/otm/util/collect/ConditionalSet.kt | 2 + .../mc/otm/util/collect/IntRange2Set.kt | 1 + .../mc/otm/util/collect/StreamyIterators.kt | 408 ------------------ .../mc/otm/util/collect/SupplierList.kt | 2 +- .../mc/otm/util/collect/SupplierMap.kt | 2 +- .../mc/otm/util/collect/WeakHashSet.kt | 2 + .../mc/otm/util/math/EuclidMath.kt | 6 +- .../mc/otm/tests/WeakHashSetTests.kt | 2 +- 60 files changed, 122 insertions(+), 616 deletions(-) delete mode 100644 src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/StreamyIterators.kt diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt index 1b9ca2d79..e3c32e8af 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt @@ -27,7 +27,7 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets import net.minecraft.world.level.storage.loot.predicates.LootItemBlockStatePropertyCondition import net.minecraft.world.level.storage.loot.providers.number.ConstantValue import net.neoforged.neoforge.data.event.GatherDataEvent -import ru.dbotthepony.mc.otm.util.stream +import ru.dbotthepony.kommons.collect.stream import ru.dbotthepony.mc.otm.data.loot.CopyTileNbtFunction import java.util.concurrent.CompletableFuture diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleBlockEntity.kt index 76370011a..8eec319b6 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleBlockEntity.kt @@ -21,6 +21,8 @@ import net.minecraft.world.level.levelgen.structure.BoundingBox import net.minecraft.world.phys.AABB import net.minecraft.world.phys.Vec3 import net.neoforged.neoforge.common.Tags +import ru.dbotthepony.kommons.collect.addAll +import ru.dbotthepony.kommons.collect.map import ru.dbotthepony.kommons.util.getValue import ru.dbotthepony.kommons.util.setValue import ru.dbotthepony.mc.otm.block.BlackHoleBlock @@ -29,8 +31,6 @@ import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.client.sound.BlackHoleAmbientSoundInstance import ru.dbotthepony.mc.otm.config.ServerConfig -import ru.dbotthepony.mc.otm.util.addAll -import ru.dbotthepony.mc.otm.util.collect.map import ru.dbotthepony.mc.otm.util.damageType import ru.dbotthepony.mc.otm.util.getExplosionResistance import ru.dbotthepony.mc.otm.util.gracefulBlockBreak diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleGeneratorBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleGeneratorBlockEntity.kt index 08166b25b..9f027824b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleGeneratorBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleGeneratorBlockEntity.kt @@ -9,6 +9,7 @@ import net.minecraft.world.entity.player.Player import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.level.block.state.BlockState import net.neoforged.neoforge.capabilities.Capabilities +import ru.dbotthepony.kommons.collect.map import ru.dbotthepony.kommons.collect.toList import ru.dbotthepony.kommons.util.DelegateSetter import ru.dbotthepony.kommons.util.getValue @@ -24,7 +25,6 @@ import ru.dbotthepony.mc.otm.capability.matter.CombinedProfiledMatterStorage import ru.dbotthepony.mc.otm.config.MachinesConfig import ru.dbotthepony.mc.otm.config.ServerConfig import ru.dbotthepony.mc.otm.util.TranslatableComponent -import ru.dbotthepony.mc.otm.util.collect.map import ru.dbotthepony.mc.otm.multiblock.ShapedMultiblock import ru.dbotthepony.mc.otm.util.getBlockStateNow import ru.dbotthepony.kommons.guava.immutableList diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/cable/EnergyCableGraph.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/cable/EnergyCableGraph.kt index a0f132683..6b4155906 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/cable/EnergyCableGraph.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/cable/EnergyCableGraph.kt @@ -9,8 +9,8 @@ import ru.dbotthepony.mc.otm.SERVER_IS_LIVE import ru.dbotthepony.mc.otm.UNIVERSE_TICKS import ru.dbotthepony.mc.otm.capability.receiveEnergy import ru.dbotthepony.mc.otm.config.CablesConfig -import ru.dbotthepony.mc.otm.util.collect.map -import ru.dbotthepony.mc.otm.util.collect.reduce +import ru.dbotthepony.kommons.collect.map +import ru.dbotthepony.kommons.collect.reduce import ru.dbotthepony.mc.otm.util.math.Decimal import ru.dbotthepony.mc.otm.util.math.RelativeSide import ru.dbotthepony.mc.otm.util.otmRandom diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterEntanglerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterEntanglerBlockEntity.kt index a1fbfa9ce..4b9ba0cc0 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterEntanglerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterEntanglerBlockEntity.kt @@ -30,10 +30,10 @@ import ru.dbotthepony.mc.otm.container.slotted.AutomationFilters import ru.dbotthepony.mc.otm.container.slotted.FilteredContainerSlot import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer import ru.dbotthepony.mc.otm.util.SimpleCache -import ru.dbotthepony.mc.otm.util.collect.filter -import ru.dbotthepony.mc.otm.util.collect.forEach -import ru.dbotthepony.mc.otm.util.collect.map -import ru.dbotthepony.mc.otm.util.collect.toList +import ru.dbotthepony.kommons.collect.filter +import ru.dbotthepony.kommons.collect.forEach +import ru.dbotthepony.kommons.collect.map +import ru.dbotthepony.kommons.collect.toList import ru.dbotthepony.mc.otm.util.math.Decimal import ru.dbotthepony.mc.otm.container.ItemStackKey import ru.dbotthepony.mc.otm.container.asKey diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/PatternStorageBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/PatternStorageBlockEntity.kt index ea1805077..4f9158f38 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/PatternStorageBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/PatternStorageBlockEntity.kt @@ -17,7 +17,7 @@ import ru.dbotthepony.mc.otm.block.entity.MatteryDeviceBlockEntity import ru.dbotthepony.mc.otm.capability.matter.* import ru.dbotthepony.mc.otm.container.slotted.ContainerSlot import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer -import ru.dbotthepony.mc.otm.util.collect.map +import ru.dbotthepony.kommons.collect.map import ru.dbotthepony.mc.otm.util.isNotEmpty import ru.dbotthepony.mc.otm.graph.matter.SimpleMatterNode import ru.dbotthepony.mc.otm.registry.game.MBlockEntities diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/Ext.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/Ext.kt index 0f15759d0..ef4949714 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/Ext.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/Ext.kt @@ -26,9 +26,9 @@ import ru.dbotthepony.mc.otm.container.util.awareStream import ru.dbotthepony.mc.otm.container.util.iterator import ru.dbotthepony.mc.otm.util.collect.AwareItemStack import ru.dbotthepony.mc.otm.util.collect.ContainerItemStackEntry -import ru.dbotthepony.mc.otm.util.collect.concatIterators -import ru.dbotthepony.mc.otm.util.collect.filter -import ru.dbotthepony.mc.otm.util.collect.map +import ru.dbotthepony.kommons.collect.concatIterators +import ru.dbotthepony.kommons.collect.filter +import ru.dbotthepony.kommons.collect.map import ru.dbotthepony.mc.otm.util.isNotEmpty import ru.dbotthepony.mc.otm.util.math.Decimal import ru.dbotthepony.mc.otm.util.formatFluidLevel diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/CombinedEnergyStorage.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/CombinedEnergyStorage.kt index 93507d964..3c6773f18 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/CombinedEnergyStorage.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/CombinedEnergyStorage.kt @@ -2,8 +2,8 @@ package ru.dbotthepony.mc.otm.capability.energy import net.minecraft.util.RandomSource import ru.dbotthepony.mc.otm.capability.FlowDirection -import ru.dbotthepony.mc.otm.util.collect.map -import ru.dbotthepony.mc.otm.util.collect.reduce +import ru.dbotthepony.kommons.collect.map +import ru.dbotthepony.kommons.collect.reduce import ru.dbotthepony.mc.otm.util.math.Decimal import ru.dbotthepony.mc.otm.util.CapabilityListIterator import java.util.function.Supplier diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/CombinedProfiledEnergyStorage.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/CombinedProfiledEnergyStorage.kt index efec0bb42..b7b9a7d1e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/CombinedProfiledEnergyStorage.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/energy/CombinedProfiledEnergyStorage.kt @@ -5,8 +5,8 @@ import ru.dbotthepony.mc.otm.capability.AbstractProfiledStorage import ru.dbotthepony.mc.otm.capability.FlowDirection import ru.dbotthepony.mc.otm.capability.IProfiledStorage import ru.dbotthepony.mc.otm.util.chart.CombinedDecimalHistoryChart -import ru.dbotthepony.mc.otm.util.collect.map -import ru.dbotthepony.mc.otm.util.collect.reduce +import ru.dbotthepony.kommons.collect.map +import ru.dbotthepony.kommons.collect.reduce import ru.dbotthepony.mc.otm.util.math.Decimal import ru.dbotthepony.mc.otm.util.ITickable import java.util.function.Supplier diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/CombinedMatterStorage.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/CombinedMatterStorage.kt index c83b2a22c..6be0fef47 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/CombinedMatterStorage.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/CombinedMatterStorage.kt @@ -2,8 +2,8 @@ package ru.dbotthepony.mc.otm.capability.matter import net.minecraft.util.RandomSource import ru.dbotthepony.mc.otm.capability.FlowDirection -import ru.dbotthepony.mc.otm.util.collect.map -import ru.dbotthepony.mc.otm.util.collect.reduce +import ru.dbotthepony.kommons.collect.map +import ru.dbotthepony.kommons.collect.reduce import ru.dbotthepony.mc.otm.util.math.Decimal import ru.dbotthepony.mc.otm.util.CapabilityListIterator import java.util.function.Supplier diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/CombinedProfiledMatterStorage.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/CombinedProfiledMatterStorage.kt index fdf60d97b..dfe38751f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/CombinedProfiledMatterStorage.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/CombinedProfiledMatterStorage.kt @@ -5,8 +5,8 @@ import ru.dbotthepony.mc.otm.capability.AbstractProfiledStorage import ru.dbotthepony.mc.otm.capability.FlowDirection import ru.dbotthepony.mc.otm.capability.IProfiledStorage import ru.dbotthepony.mc.otm.util.chart.CombinedDecimalHistoryChart -import ru.dbotthepony.mc.otm.util.collect.map -import ru.dbotthepony.mc.otm.util.collect.reduce +import ru.dbotthepony.kommons.collect.map +import ru.dbotthepony.kommons.collect.reduce import ru.dbotthepony.mc.otm.util.math.Decimal import ru.dbotthepony.mc.otm.util.ITickable import java.util.function.Supplier diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/ClientEventHandler.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/ClientEventHandler.kt index 644947269..fe31e4596 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/ClientEventHandler.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/ClientEventHandler.kt @@ -17,6 +17,7 @@ import net.neoforged.neoforge.client.event.MovementInputUpdateEvent import net.neoforged.neoforge.client.event.ScreenEvent import net.neoforged.neoforge.event.entity.player.ItemTooltipEvent import net.neoforged.neoforge.network.PacketDistributor +import ru.dbotthepony.kommons.collect.addAll import ru.dbotthepony.mc.otm.config.ClientConfig import ru.dbotthepony.mc.otm.player.android.feature.JumpBoostFeature import ru.dbotthepony.mc.otm.player.MatteryPlayer @@ -32,7 +33,6 @@ import ru.dbotthepony.mc.otm.client.screen.panels.button.ButtonPanel import ru.dbotthepony.mc.otm.compat.vanilla.InventoryScrollPacket import ru.dbotthepony.mc.otm.compat.cos.isCosmeticArmorScreen import ru.dbotthepony.mc.otm.util.TranslatableComponent -import ru.dbotthepony.mc.otm.util.addAll import ru.dbotthepony.mc.otm.util.math.integerDivisionUp import ru.dbotthepony.mc.otm.menu.MatteryMenu import ru.dbotthepony.mc.otm.registry.game.AndroidFeatures diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/sprites/SpriteType.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/sprites/SpriteType.kt index e0261d420..d523968fa 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/sprites/SpriteType.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/sprites/SpriteType.kt @@ -5,8 +5,8 @@ import com.google.gson.JsonPrimitive import com.google.gson.JsonSyntaxException import net.minecraft.network.FriendlyByteBuf import net.minecraft.resources.ResourceLocation +import ru.dbotthepony.kommons.gson.set import ru.dbotthepony.mc.otm.client.render.UVWindingOrder -import ru.dbotthepony.mc.otm.util.set enum class SpriteType { SINGLE { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditablePanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditablePanel.kt index 78470ad7e..fe77e3445 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditablePanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditablePanel.kt @@ -25,8 +25,8 @@ import ru.dbotthepony.mc.otm.client.render.popScissorRect import ru.dbotthepony.mc.otm.client.render.pushScissorRect import ru.dbotthepony.mc.otm.client.screen.MatteryScreen import ru.dbotthepony.mc.otm.client.screen.panels.input.QueryUserPanel -import ru.dbotthepony.mc.otm.util.collect.concatIterators -import ru.dbotthepony.mc.otm.util.collect.flatMap +import ru.dbotthepony.kommons.collect.concatIterators +import ru.dbotthepony.kommons.collect.flatMap import ru.dbotthepony.mc.otm.util.GJRAND64RandomSource import java.util.* import java.util.concurrent.CopyOnWriteArrayList diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/TextInputPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/TextInputPanel.kt index 3f3d29c26..91f7a54dc 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/TextInputPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/TextInputPanel.kt @@ -14,6 +14,7 @@ import net.minecraft.client.gui.screens.Screen import net.minecraft.client.renderer.GameRenderer import net.minecraft.network.chat.Component import org.joml.Vector2i +import ru.dbotthepony.kommons.collect.addAll import ru.dbotthepony.mc.otm.client.CursorType import ru.dbotthepony.mc.otm.client.render.MGUIGraphics import ru.dbotthepony.mc.otm.client.isCtrlDown @@ -26,9 +27,6 @@ import ru.dbotthepony.mc.otm.client.render.tesselator import ru.dbotthepony.mc.otm.client.screen.panels.DockProperty import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel import ru.dbotthepony.mc.otm.util.TextComponent -import ru.dbotthepony.mc.otm.util.addAll -import ru.dbotthepony.mc.otm.util.collect.map -import ru.dbotthepony.mc.otm.util.collect.reduce import ru.dbotthepony.kommons.math.RGBAColor import ru.dbotthepony.mc.otm.client.render.vertex import ru.dbotthepony.mc.otm.milliTime @@ -957,7 +955,7 @@ open class TextInputPanel( return true } - var index = cursorRow + (0 until cursorLine).iterator().map { this[it]?.length ?: 0 }.reduce(0, Int::plus) + var index = cursorRow + (0 until cursorLine).sumOf { this[it]?.length ?: 0 } val insert = minecraft.keyboardHandler.clipboard.replace("\t", " ").filter { acceptsCharacter(it, 0, index++) }.split(NEWLINES).toMutableList() val actualLastSize = insert.lastOrNull()?.length ?: 0 val line = this[cursorLine] @@ -1009,7 +1007,7 @@ open class TextInputPanel( } } } else { - var index = cursorRow + (0 until cursorLine).iterator().map { this[it]?.length ?: 0 }.reduce(0, Int::plus) + var index = cursorRow + (0 until cursorLine).sumOf { this[it]?.length ?: 0 } val insert = minecraft.keyboardHandler.clipboard.replace("\t", " ").replace(NEWLINES, "").filter { acceptsCharacter(it, 0, index++) } val line = this[cursorLine] diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/util/GridPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/util/GridPanel.kt index c08ac8272..b038b86dc 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/util/GridPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/util/GridPanel.kt @@ -5,10 +5,6 @@ import ru.dbotthepony.mc.otm.client.render.RenderGravity import ru.dbotthepony.mc.otm.client.screen.panels.Dock import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel -import ru.dbotthepony.mc.otm.util.collect.filter -import ru.dbotthepony.mc.otm.util.collect.maybe -import java.util.stream.IntStream -import java.util.stream.Stream import kotlin.math.max open class GridPanel( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/cos/CosmeticArmorCompat.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/cos/CosmeticArmorCompat.kt index bc03f8b3b..0cb56a423 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/cos/CosmeticArmorCompat.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/cos/CosmeticArmorCompat.kt @@ -27,8 +27,8 @@ import ru.dbotthepony.mc.otm.compat.cos.CosmeticToggleButton.Companion.BUTTON_IN import ru.dbotthepony.mc.otm.container.util.awareStream import ru.dbotthepony.mc.otm.container.util.iterator import ru.dbotthepony.mc.otm.util.collect.AwareItemStack -import ru.dbotthepony.mc.otm.util.collect.emptyIterator import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot +import java.util.Collections.emptyIterator import java.util.stream.Stream val isCosmeticArmorLoaded by lazy { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/curios/CuriosCompat.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/curios/CuriosCompat.kt index c74e7a680..d236113c1 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/curios/CuriosCompat.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/curios/CuriosCompat.kt @@ -23,16 +23,15 @@ import ru.dbotthepony.mc.otm.client.screen.panels.slot.SlotPanel import ru.dbotthepony.mc.otm.container.util.awareStream import ru.dbotthepony.mc.otm.container.util.iterator import ru.dbotthepony.mc.otm.util.collect.AwareItemStack -import ru.dbotthepony.mc.otm.util.collect.concatIterators -import ru.dbotthepony.mc.otm.util.collect.emptyIterator +import ru.dbotthepony.kommons.collect.concatIterators import ru.dbotthepony.mc.otm.menu.PlayerSlot import top.theillusivec4.curios.api.CuriosApi import top.theillusivec4.curios.api.CuriosCapability import top.theillusivec4.curios.api.event.SlotModifiersUpdatedEvent import top.theillusivec4.curios.common.inventory.CosmeticCurioSlot import top.theillusivec4.curios.common.inventory.CurioSlot -import top.theillusivec4.curios.common.network.client.CPacketOpenCurios import top.theillusivec4.curios.common.network.client.CPacketToggleRender +import java.util.Collections.emptyIterator import java.util.stream.Stream import kotlin.collections.ArrayList diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/JEIPlugin.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/JEIPlugin.kt index e82d55d52..3df134a61 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/JEIPlugin.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/JEIPlugin.kt @@ -24,10 +24,10 @@ import ru.dbotthepony.mc.otm.client.screen.MatteryScreen import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel import ru.dbotthepony.mc.otm.client.screen.widget.FluidGaugePanel import ru.dbotthepony.mc.otm.util.ResourceLocation -import ru.dbotthepony.mc.otm.util.collect.filter -import ru.dbotthepony.mc.otm.util.collect.filterIsInstance -import ru.dbotthepony.mc.otm.util.collect.map -import ru.dbotthepony.mc.otm.util.collect.toList +import ru.dbotthepony.kommons.collect.filter +import ru.dbotthepony.kommons.collect.filterIsInstance +import ru.dbotthepony.kommons.collect.map +import ru.dbotthepony.kommons.collect.toList import ru.dbotthepony.mc.otm.menu.decorative.PainterMenu import ru.dbotthepony.mc.otm.menu.matter.MatterEntanglerMenu import ru.dbotthepony.mc.otm.menu.tech.PlatePressMenu diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/BitmapTrackingContainer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/BitmapTrackingContainer.kt index c2c1571db..579e75cab 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/BitmapTrackingContainer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/BitmapTrackingContainer.kt @@ -5,7 +5,7 @@ import net.minecraft.world.item.ItemStack import ru.dbotthepony.kommons.collect.iterateClearBits import ru.dbotthepony.kommons.collect.iterateSetBits import ru.dbotthepony.mc.otm.util.collect.IntRange2Set -import ru.dbotthepony.mc.otm.util.collect.map +import ru.dbotthepony.kommons.collect.map import java.util.* abstract class BitmapTrackingContainer : IEnhancedContainer { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/CombinedContainer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/CombinedContainer.kt index 3f5cce46e..320152873 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/CombinedContainer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/CombinedContainer.kt @@ -11,13 +11,13 @@ import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap import net.minecraft.world.Container import net.minecraft.world.entity.player.Player import net.minecraft.world.item.ItemStack +import ru.dbotthepony.kommons.collect.concatIterators +import ru.dbotthepony.kommons.collect.filter +import ru.dbotthepony.kommons.collect.flatMap +import ru.dbotthepony.kommons.collect.map +import ru.dbotthepony.kommons.collect.stream import ru.dbotthepony.mc.otm.container.util.iterator -import ru.dbotthepony.mc.otm.util.collect.concatIterators -import ru.dbotthepony.mc.otm.util.collect.filter -import ru.dbotthepony.mc.otm.util.collect.flatMap -import ru.dbotthepony.mc.otm.util.collect.map import ru.dbotthepony.mc.otm.util.isNotEmpty -import ru.dbotthepony.mc.otm.util.stream import java.util.stream.Stream class CombinedContainer(containers: Stream, Iterable>>) : ISlottedContainer { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/ContainerHelpers.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/ContainerHelpers.kt index ac43fe514..1eafcf2fa 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/ContainerHelpers.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/ContainerHelpers.kt @@ -16,16 +16,15 @@ import net.minecraft.world.item.ItemStack import net.minecraft.world.item.enchantment.EnchantmentEffectComponents import net.minecraft.world.item.enchantment.EnchantmentHelper import net.neoforged.neoforge.fluids.capability.IFluidHandler +import ru.dbotthepony.kommons.collect.addAll +import ru.dbotthepony.kommons.collect.filter +import ru.dbotthepony.kommons.collect.toList import ru.dbotthepony.kommons.util.map import ru.dbotthepony.mc.otm.container.util.ItemStackHashStrategy import ru.dbotthepony.mc.otm.container.util.containerSlot import ru.dbotthepony.mc.otm.container.util.slotIterator -import ru.dbotthepony.mc.otm.util.addAll import ru.dbotthepony.mc.otm.util.collect.IntRange2Set -import ru.dbotthepony.mc.otm.util.collect.filter -import ru.dbotthepony.mc.otm.util.collect.toList import ru.dbotthepony.mc.otm.util.isNotEmpty -import ru.dbotthepony.mc.otm.util.map import ru.dbotthepony.mc.otm.util.ItemStackSorter import kotlin.math.roundToInt diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/IEnhancedContainer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/IEnhancedContainer.kt index 4cc21a81e..fbdec0bc1 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/IEnhancedContainer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/IEnhancedContainer.kt @@ -9,9 +9,8 @@ import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Items import net.minecraft.world.item.crafting.RecipeInput -import ru.dbotthepony.mc.otm.util.collect.any -import ru.dbotthepony.mc.otm.util.collect.filter -import ru.dbotthepony.mc.otm.util.collect.map +import ru.dbotthepony.kommons.collect.filter +import ru.dbotthepony.kommons.collect.map import ru.dbotthepony.mc.otm.util.isNotEmpty import java.util.function.Predicate import java.util.stream.Stream @@ -243,14 +242,14 @@ interface IEnhancedContainer : Container, RecipeInput, I if (Items.AIR in items && hasEmptySlots) return true - return iterator().any { it.item in items } + return any { it.item in items } } override fun hasAnyMatching(predicate: Predicate): Boolean { if (predicate.test(ItemStack.EMPTY) && hasEmptySlots) return true - return iterator().any(predicate) + return any(predicate::test) } fun toList(): MutableList { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/UpgradeContainer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/UpgradeContainer.kt index aace95d50..3fce1f4e1 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/UpgradeContainer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/UpgradeContainer.kt @@ -6,8 +6,8 @@ import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.UpgradeType import ru.dbotthepony.mc.otm.config.EnergyBalanceValues import ru.dbotthepony.mc.otm.config.VerboseEnergyBalanceValues -import ru.dbotthepony.mc.otm.util.collect.map -import ru.dbotthepony.mc.otm.util.collect.reduce +import ru.dbotthepony.kommons.collect.map +import ru.dbotthepony.kommons.collect.reduce import ru.dbotthepony.mc.otm.util.math.Decimal import java.util.function.BooleanSupplier import kotlin.math.pow diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/util/ItemHandlerSpliterator.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/util/ItemHandlerSpliterator.kt index 1ed38e88f..823c3528c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/util/ItemHandlerSpliterator.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/util/ItemHandlerSpliterator.kt @@ -6,7 +6,7 @@ import net.minecraft.world.item.ItemStack import net.neoforged.neoforge.items.IItemHandler import ru.dbotthepony.mc.otm.util.collect.AwareItemStack import ru.dbotthepony.mc.otm.util.collect.ItemHandlerItemStackEntry -import ru.dbotthepony.mc.otm.util.collect.filter +import ru.dbotthepony.kommons.collect.filter import ru.dbotthepony.mc.otm.util.isNotEmpty import java.util.* import java.util.stream.Stream diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/util/Iterators.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/util/Iterators.kt index b378d93c4..962a41170 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/util/Iterators.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/util/Iterators.kt @@ -6,8 +6,8 @@ import net.minecraft.world.item.ItemStack import ru.dbotthepony.mc.otm.container.IContainerSlot import ru.dbotthepony.mc.otm.container.IEnhancedContainer import ru.dbotthepony.mc.otm.container.get -import ru.dbotthepony.mc.otm.util.collect.filter -import ru.dbotthepony.mc.otm.util.collect.map +import ru.dbotthepony.kommons.collect.filter +import ru.dbotthepony.kommons.collect.map import ru.dbotthepony.mc.otm.util.isNotEmpty fun Container.containerSlot(slot: Int): IContainerSlot { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/CodecList.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/CodecList.kt index 4403ab6ed..705d6083e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/CodecList.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/CodecList.kt @@ -5,7 +5,7 @@ import com.mojang.datafixers.util.Pair import com.mojang.serialization.Codec import com.mojang.serialization.DataResult import com.mojang.serialization.DynamicOps -import ru.dbotthepony.mc.otm.util.stream +import ru.dbotthepony.kommons.collect.stream import java.util.stream.Stream class CodecList(codecs: Stream>) : Codec { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/PredicatedCodecList.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/PredicatedCodecList.kt index a41381e4a..cab26f5d7 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/PredicatedCodecList.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/codec/PredicatedCodecList.kt @@ -5,7 +5,7 @@ import com.mojang.datafixers.util.Pair import com.mojang.serialization.Codec import com.mojang.serialization.DataResult import com.mojang.serialization.DynamicOps -import ru.dbotthepony.mc.otm.util.stream +import ru.dbotthepony.kommons.collect.stream import java.util.function.Predicate import java.util.stream.Stream diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/condition/ItemInInventoryCondition.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/condition/ItemInInventoryCondition.kt index a3fea06be..5f9c68dde 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/condition/ItemInInventoryCondition.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/condition/ItemInInventoryCondition.kt @@ -9,7 +9,7 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams import net.minecraft.world.level.storage.loot.predicates.LootItemCondition import net.minecraft.world.level.storage.loot.predicates.LootItemConditionType import ru.dbotthepony.mc.otm.capability.items -import ru.dbotthepony.mc.otm.util.collect.filter +import ru.dbotthepony.kommons.collect.filter import ru.dbotthepony.mc.otm.data.get import ru.dbotthepony.mc.otm.registry.data.MLootItemConditions diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/CopyTileNbtFunction.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/CopyTileNbtFunction.kt index 4f6e52823..24c3df4ca 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/CopyTileNbtFunction.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/data/loot/CopyTileNbtFunction.kt @@ -14,10 +14,10 @@ import net.minecraft.world.level.storage.loot.LootContext import net.minecraft.world.level.storage.loot.functions.LootItemFunction import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType import net.minecraft.world.level.storage.loot.parameters.LootContextParams +import ru.dbotthepony.kommons.collect.stream import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity import ru.dbotthepony.mc.otm.util.fromNbt import ru.dbotthepony.mc.otm.util.set -import ru.dbotthepony.mc.otm.util.stream import ru.dbotthepony.mc.otm.registry.data.MItemFunctionTypes import java.util.* import java.util.stream.Stream diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/FluidCapsuleItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/FluidCapsuleItem.kt index 1bbc0cc33..21d1602ab 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/FluidCapsuleItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/FluidCapsuleItem.kt @@ -29,12 +29,12 @@ import net.neoforged.neoforge.common.SoundActions import net.neoforged.neoforge.fluids.FluidStack import net.neoforged.neoforge.fluids.FluidUtil import net.neoforged.neoforge.fluids.capability.IFluidHandler +import ru.dbotthepony.kommons.collect.any import ru.dbotthepony.mc.otm.capability.fluid.ItemMatteryFluidHandler import ru.dbotthepony.mc.otm.capability.fluid.iterator import ru.dbotthepony.mc.otm.capability.moveFluid import ru.dbotthepony.mc.otm.container.get import ru.dbotthepony.mc.otm.util.TranslatableComponent -import ru.dbotthepony.mc.otm.util.collect.any import ru.dbotthepony.kommons.guava.immutableList import ru.dbotthepony.kommons.guava.immutableMap import ru.dbotthepony.mc.otm.util.isNotEmpty diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/QuantumBatteryItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/QuantumBatteryItem.kt index 4522e9786..f05534d5b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/QuantumBatteryItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/QuantumBatteryItem.kt @@ -35,7 +35,7 @@ import ru.dbotthepony.mc.otm.capability.matteryEnergy import ru.dbotthepony.mc.otm.config.EnergyBalanceValues import ru.dbotthepony.mc.otm.util.ResourceLocation import ru.dbotthepony.mc.otm.util.TranslatableComponent -import ru.dbotthepony.mc.otm.util.collect.filter +import ru.dbotthepony.kommons.collect.filter import ru.dbotthepony.mc.otm.util.isNotEmpty import ru.dbotthepony.mc.otm.util.math.Decimal import ru.dbotthepony.mc.otm.util.getDecimal diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/matter/GoldDiskItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/matter/GoldDiskItem.kt index c6da74f78..be64d0f0c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/matter/GoldDiskItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/matter/GoldDiskItem.kt @@ -10,6 +10,7 @@ import net.minecraft.world.item.TooltipFlag import net.minecraft.world.level.storage.loot.functions.LootItemConditionalFunction import net.minecraft.world.level.storage.loot.functions.SetComponentsFunction import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent +import ru.dbotthepony.kommons.collect.stream import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.matter.IPatternStorage import ru.dbotthepony.mc.otm.capability.matter.PatternInsertFailure @@ -18,7 +19,6 @@ import ru.dbotthepony.mc.otm.capability.matter.PatternState import ru.dbotthepony.mc.otm.capability.matter.gatherTooltip import ru.dbotthepony.mc.otm.util.TextComponent import ru.dbotthepony.mc.otm.util.TranslatableComponent -import ru.dbotthepony.mc.otm.util.stream import ru.dbotthepony.mc.otm.item.MatteryItem import ru.dbotthepony.mc.otm.registry.CapabilitiesRegisterListener import ru.dbotthepony.mc.otm.registry.game.MDataComponentTypes diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt index f888b5e1c..53d041ed6 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt @@ -82,9 +82,8 @@ import ru.dbotthepony.mc.otm.container.util.stream import ru.dbotthepony.mc.otm.util.ResourceLocation import ru.dbotthepony.mc.otm.util.TextComponent import ru.dbotthepony.mc.otm.util.TranslatableComponent -import ru.dbotthepony.mc.otm.util.collect.any -import ru.dbotthepony.mc.otm.util.collect.filter import ru.dbotthepony.kommons.collect.filterNotNull +import ru.dbotthepony.kommons.collect.stream import ru.dbotthepony.mc.otm.util.getReverseTag import ru.dbotthepony.mc.otm.util.isNotEmpty import ru.dbotthepony.mc.otm.util.math.Decimal @@ -92,7 +91,6 @@ import ru.dbotthepony.mc.otm.util.math.isZero import ru.dbotthepony.mc.otm.util.readComponent import ru.dbotthepony.mc.otm.util.readItemType import ru.dbotthepony.mc.otm.util.registryName -import ru.dbotthepony.mc.otm.util.stream import ru.dbotthepony.mc.otm.util.formatMatter import ru.dbotthepony.mc.otm.util.formatMatterFull import ru.dbotthepony.mc.otm.util.formatSiComponent @@ -1633,11 +1631,11 @@ object MatterManager { .executes { dumpRegistry(it, it.getArgument("mode", DumpFilter::class.java), StringArgumentType.getString(it, "mod")) } .suggests { context, builder -> val startingWith = builder.input.substring(builder.start).lowercase() - ModList.get().mods.iterator() + ModList.get().mods.stream() .filter { it.modId.startsWith(startingWith) } - .filter { key -> BuiltInRegistries.ITEM.entrySet().iterator() + .filter { key -> BuiltInRegistries.ITEM.entrySet().stream() .filter { it.key.location().namespace == key.namespace } - .any { !Registry.isBlacklisted(it.value) } } + .anyMatch { !Registry.isBlacklisted(it.value) } } .forEach { builder.suggest(it.modId, TextComponent(it.displayName)) } builder.buildFuture() }) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/PainterMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/PainterMenu.kt index 8f36be1cf..07394bf6b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/PainterMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/PainterMenu.kt @@ -9,6 +9,9 @@ import net.minecraft.world.level.material.Fluids import net.neoforged.neoforge.capabilities.Capabilities import net.neoforged.neoforge.fluids.FluidStack import net.neoforged.neoforge.fluids.capability.IFluidHandler +import ru.dbotthepony.kommons.collect.addAll +import ru.dbotthepony.kommons.collect.filter +import ru.dbotthepony.kommons.collect.maybe import ru.dbotthepony.kommons.util.Listenable import ru.dbotthepony.kommons.util.ListenableDelegate import ru.dbotthepony.kommons.util.getValue @@ -16,10 +19,7 @@ import ru.dbotthepony.kommons.util.setValue import ru.dbotthepony.mc.otm.block.entity.decorative.PainterBlockEntity import ru.dbotthepony.mc.otm.player.matteryPlayer import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer -import ru.dbotthepony.mc.otm.util.addAll import ru.dbotthepony.mc.otm.util.collect.SupplierMap -import ru.dbotthepony.mc.otm.util.collect.filter -import ru.dbotthepony.mc.otm.util.collect.maybe import ru.dbotthepony.mc.otm.util.isNotEmpty import ru.dbotthepony.mc.otm.menu.MatteryMenu import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/storage/ItemMonitorMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/storage/ItemMonitorMenu.kt index db6db3a80..6f16a5557 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/storage/ItemMonitorMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/storage/ItemMonitorMenu.kt @@ -12,8 +12,8 @@ import ru.dbotthepony.mc.otm.block.entity.storage.IItemMonitorPlayerSettings import ru.dbotthepony.mc.otm.block.entity.storage.ItemMonitorBlockEntity import ru.dbotthepony.mc.otm.block.entity.storage.ItemMonitorPlayerSettings import ru.dbotthepony.mc.otm.container.get -import ru.dbotthepony.mc.otm.util.collect.map -import ru.dbotthepony.mc.otm.util.collect.reduce +import ru.dbotthepony.kommons.collect.map +import ru.dbotthepony.kommons.collect.reduce import ru.dbotthepony.mc.otm.util.isNotEmpty import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/multiblock/ShapedMultiblock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/multiblock/ShapedMultiblock.kt index 20c3ec539..12684535b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/multiblock/ShapedMultiblock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/multiblock/ShapedMultiblock.kt @@ -16,8 +16,6 @@ import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.chunk.LevelChunk import net.minecraft.world.phys.AABB import ru.dbotthepony.kommons.util.Listenable -import ru.dbotthepony.mc.otm.util.collect.collect -import ru.dbotthepony.mc.otm.util.collect.map import ru.dbotthepony.mc.otm.util.getBlockEntityNow import ru.dbotthepony.mc.otm.util.getBlockStateNowOrNull import ru.dbotthepony.mc.otm.util.math.Vector @@ -83,7 +81,7 @@ class ShapedMultiblock(pos: BlockPos, factory: ShapedMultiblockFactory) : IMulti private val assignedBlockEntityLists = ArrayList>(prototype.blockEntityTags.size) private val assignedBlockStateLists = ArrayList>() private val assignedBlockLists = ArrayList>() - private val children: ImmutableList by lazy(LazyThreadSafetyMode.NONE) { prototype.children.iterator().map { Part(pos, it, chunkPos) }.collect(ImmutableList.toImmutableList()) } + private val children: ImmutableList by lazy(LazyThreadSafetyMode.NONE) { prototype.children.stream().map { Part(pos, it, chunkPos) }.collect(ImmutableList.toImmutableList()) } override fun compareTo(other: Part): Int { return chunkPos.compareTo(other.chunkPos) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/multiblock/ShapedMultiblockBuilder.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/multiblock/ShapedMultiblockBuilder.kt index 38602cb20..7ccc86684 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/multiblock/ShapedMultiblockBuilder.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/multiblock/ShapedMultiblockBuilder.kt @@ -10,8 +10,7 @@ import net.minecraft.core.Vec3i import net.minecraft.tags.TagKey import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.state.BlockState -import ru.dbotthepony.mc.otm.util.collect.collect -import ru.dbotthepony.mc.otm.util.collect.map +import ru.dbotthepony.kommons.collect.map import ru.dbotthepony.mc.otm.util.math.RelativeSide import ru.dbotthepony.mc.otm.util.math.plus import java.util.function.Predicate @@ -359,6 +358,6 @@ class ShapedMultiblockBuilder { * Created factory does not share reference(s) to this builder, and this builder can be mutated further without consequences. */ fun build(): ShapedMultiblockFactory { - return ShapedMultiblockFactory(nodes.values.iterator().map { it.build() }.collect(ImmutableSet.toImmutableSet()), ImmutableList.copyOf(customChecks)) + return ShapedMultiblockFactory(nodes.values.stream().map { it.build() }.collect(ImmutableSet.toImmutableSet()), ImmutableList.copyOf(customChecks)) } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/multiblock/ShapedMultiblockFactory.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/multiblock/ShapedMultiblockFactory.kt index d044e4760..1d76fa395 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/multiblock/ShapedMultiblockFactory.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/multiblock/ShapedMultiblockFactory.kt @@ -5,8 +5,7 @@ import com.google.common.collect.ImmutableSet import net.minecraft.core.BlockPos import net.minecraft.world.level.block.Rotation import net.minecraft.world.level.block.state.BlockState -import ru.dbotthepony.mc.otm.util.collect.collect -import ru.dbotthepony.mc.otm.util.collect.map +import ru.dbotthepony.kommons.collect.map import java.util.function.Predicate class ShapedMultiblockFactory(val north: ImmutableSet, val customChecks: ImmutableList>) { @@ -28,7 +27,7 @@ class ShapedMultiblockFactory(val north: ImmutableSet, val customChecks: I return ShapedMultiblock(pos, this) } - val south: ImmutableSet = north.iterator().map { it.copy(pos = it.pos.rotate(Rotation.CLOCKWISE_180)) }.collect(ImmutableSet.toImmutableSet()) - val west: ImmutableSet = north.iterator().map { it.copy(pos = it.pos.rotate(Rotation.COUNTERCLOCKWISE_90)) }.collect(ImmutableSet.toImmutableSet()) - val east: ImmutableSet = north.iterator().map { it.copy(pos = it.pos.rotate(Rotation.CLOCKWISE_90)) }.collect(ImmutableSet.toImmutableSet()) + val south: ImmutableSet = north.stream().map { it.copy(pos = it.pos.rotate(Rotation.CLOCKWISE_180)) }.collect(ImmutableSet.toImmutableSet()) + val west: ImmutableSet = north.stream().map { it.copy(pos = it.pos.rotate(Rotation.COUNTERCLOCKWISE_90)) }.collect(ImmutableSet.toImmutableSet()) + val east: ImmutableSet = north.stream().map { it.copy(pos = it.pos.rotate(Rotation.CLOCKWISE_90)) }.collect(ImmutableSet.toImmutableSet()) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/network/BlockEntitySyncPacket.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/network/BlockEntitySyncPacket.kt index cec8d76e9..0bd0bfec3 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/network/BlockEntitySyncPacket.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/network/BlockEntitySyncPacket.kt @@ -16,8 +16,8 @@ import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.client.onceClient import ru.dbotthepony.mc.otm.util.ResourceLocation -import ru.dbotthepony.mc.otm.util.collect.map -import ru.dbotthepony.mc.otm.util.collect.reduce +import ru.dbotthepony.kommons.collect.map +import ru.dbotthepony.kommons.collect.reduce import java.util.* import kotlin.collections.ArrayList diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/network/syncher/SynchableGroup.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/network/syncher/SynchableGroup.kt index 896304860..8e3a0a2fd 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/network/syncher/SynchableGroup.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/network/syncher/SynchableGroup.kt @@ -18,8 +18,8 @@ import ru.dbotthepony.kommons.util.Listenable import ru.dbotthepony.kommons.util.ListenableDelegate import ru.dbotthepony.kommons.util.Observer import ru.dbotthepony.mc.otm.OTM_CLEANER -import ru.dbotthepony.mc.otm.util.collect.filterNotNull -import ru.dbotthepony.mc.otm.util.collect.map +import ru.dbotthepony.kommons.collect.filterNotNull +import ru.dbotthepony.kommons.collect.map import ru.dbotthepony.mc.otm.util.math.Decimal import ru.dbotthepony.mc.otm.network.ItemStackCodec import ru.dbotthepony.mc.otm.network.MatteryStreamCodec diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/player/MatteryPlayer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/player/MatteryPlayer.kt index 0c1fa8250..d5746d439 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/player/MatteryPlayer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/player/MatteryPlayer.kt @@ -83,7 +83,7 @@ import ru.dbotthepony.mc.otm.container.ItemFilter import ru.dbotthepony.mc.otm.container.util.slotIterator import ru.dbotthepony.mc.otm.container.vanishCursedItems import ru.dbotthepony.mc.otm.util.collect.UUIDIntModifiersMap -import ru.dbotthepony.mc.otm.util.collect.filter +import ru.dbotthepony.kommons.collect.filter import ru.dbotthepony.mc.otm.util.math.Decimal import ru.dbotthepony.mc.otm.util.math.RGBColorDFUCodec import ru.dbotthepony.mc.otm.util.math.minus diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/player/android/AndroidResearchManager.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/player/android/AndroidResearchManager.kt index 28e3a2754..6b2bc9104 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/player/android/AndroidResearchManager.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/player/android/AndroidResearchManager.kt @@ -19,6 +19,7 @@ import net.neoforged.neoforge.event.OnDatapackSyncEvent import net.neoforged.neoforge.network.PacketDistributor import net.neoforged.neoforge.network.handling.IPayloadContext import org.apache.logging.log4j.LogManager +import ru.dbotthepony.kommons.gson.set import ru.dbotthepony.mc.otm.MINECRAFT_SERVER import ru.dbotthepony.mc.otm.NULLABLE_MINECRAFT_SERVER import ru.dbotthepony.mc.otm.OverdriveThatMatters diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatterEntanglerRecipe.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatterEntanglerRecipe.kt index 10df4c6ab..0e3cd3295 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatterEntanglerRecipe.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatterEntanglerRecipe.kt @@ -18,8 +18,8 @@ import net.minecraft.world.item.crafting.ShapedRecipePattern import net.minecraft.world.level.Level import ru.dbotthepony.mc.otm.capability.MatteryCapability import ru.dbotthepony.mc.otm.capability.matteryEnergy -import ru.dbotthepony.mc.otm.util.collect.filterNotNull -import ru.dbotthepony.mc.otm.util.collect.map +import ru.dbotthepony.kommons.collect.filterNotNull +import ru.dbotthepony.kommons.collect.map import ru.dbotthepony.mc.otm.util.math.Decimal import ru.dbotthepony.mc.otm.data.codec.DecimalCodec import ru.dbotthepony.mc.otm.data.codec.minRange diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/MCriterionTrigger.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/MCriterionTrigger.kt index 930484f9c..b5be0f6aa 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/MCriterionTrigger.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/triggers/MCriterionTrigger.kt @@ -13,8 +13,7 @@ import net.minecraft.advancements.critereon.EntityPredicate import net.minecraft.resources.ResourceLocation import net.minecraft.server.PlayerAdvancements import net.minecraft.server.level.ServerPlayer -import ru.dbotthepony.mc.otm.util.collect.filter -import ru.dbotthepony.mc.otm.util.collect.toImmutableList +import ru.dbotthepony.kommons.collect.filter import java.util.* import java.util.function.Predicate @@ -46,9 +45,9 @@ abstract class MCriterionTrigger.AbstractInstance>(val val context = EntityPredicate.createContext(player, player) - listeners.iterator() + listeners.stream() .filter { predicate.test(it.trigger) && it.trigger.playerPredicate.map { it.matches(context) }.orElse(true) } - .toImmutableList() + .toList() .forEach { it.run(advancements) } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/FriendlyStreams.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/FriendlyStreams.kt index 603c824ab..29d75cf02 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/FriendlyStreams.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/util/FriendlyStreams.kt @@ -321,3 +321,9 @@ fun RegistryFriendlyByteBuf.readComponent(): Component { fun InputStream.readItemType(): Item { return BuiltInRegistries.ITEM.byId(readVarIntLE()) } + +fun FriendlyByteBuf.writeBigInteger(value: BigInteger) { + writeByteArray(value.toByteArray()) +} + +fun FriendlyByteBuf.readBigInteger(byteLimit: Int = 128) = BigInteger(readByteArray(byteLimit)) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/LevelUtils.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/LevelUtils.kt index 2ac097470..fff8c4b32 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/LevelUtils.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/util/LevelUtils.kt @@ -6,6 +6,7 @@ import net.minecraft.util.RandomSource import net.minecraft.world.level.ChunkPos import net.minecraft.world.level.Level import net.minecraft.world.level.LevelAccessor +import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.Blocks import net.minecraft.world.level.block.entity.BlockEntity import net.minecraft.world.level.block.state.BlockState @@ -61,3 +62,12 @@ interface IMatteryLevel { * because RNG is not sampled only once per tick, obviously) */ val Level.otmRandom: RandomSource get() = (this as IMatteryLevel).otmRandom ?: random + +fun Level.gracefulBlockBreak(blockPos: BlockPos, block: BlockState = getBlockState(blockPos)) { + val tile = getBlockEntity(blockPos) + val state = block.fluidState.createLegacyBlock() + block.onRemove(this, blockPos, state, false) + Block.dropResources(block, this, blockPos, tile) + block.block.destroy(this, blockPos, block) + setBlock(blockPos, state, Block.UPDATE_ALL) +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/Utils.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/Utils.kt index e4f27c651..4cae7e01d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/Utils.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/util/Utils.kt @@ -63,34 +63,6 @@ operator fun CraftingInput.Positioned.get(x: Int, y: Int): ItemStack { return input.getItem(actualX, actualY) } -fun FriendlyByteBuf.writeBigInteger(value: BigInteger) { - writeByteArray(value.toByteArray()) -} - -fun FriendlyByteBuf.readBigInteger(byteLimit: Int = 128) = BigInteger(readByteArray(byteLimit)) - -fun Map<*, V>.asLambdaSupplierArray(): Array<() -> V> { - val result = arrayOfNulls<() -> V>(size) - var i = 0 - - for (k in keys) { - result[i++] = { this[k] ?: throw ConcurrentModificationException("Key $k is no longer present in map $this") } - } - - return result as Array<() -> V> -} - -fun Map<*, V>.asSupplierArray(): Array> { - val result = arrayOfNulls>(size) - var i = 0 - - for (k in keys) { - result[i++] = { this[k] ?: throw ConcurrentModificationException("Key $k is no longer present in map $this") } - } - - return result as Array> -} - fun Future.asSupplier(): Supplier { return Supplier { get() } } @@ -101,11 +73,6 @@ fun runInBackground(block: Callable): Future { operator fun IItemHandler.get(index: Int): ItemStack = getStackInSlot(index) -operator fun JsonObject.set(s: String, value: JsonElement) = add(s, value) -operator fun JsonObject.set(s: String, value: String) = add(s, JsonPrimitive(value)) -operator fun JsonObject.set(s: String, value: Number) = add(s, JsonPrimitive(value)) -operator fun JsonObject.set(s: String, value: Boolean) = add(s, JsonPrimitive(value)) - inline val FluidStack.isNotEmpty get() = !isEmpty inline val ItemStack.isNotEmpty get() = !isEmpty @@ -149,35 +116,6 @@ fun BlockState.getExplosionResistance(level: BlockGetter, pos: BlockPos): Float } } -fun Level.gracefulBlockBreak(blockPos: BlockPos, block: BlockState = getBlockState(blockPos)) { - val tile = getBlockEntity(blockPos) - val state = block.fluidState.createLegacyBlock() - block.onRemove(this, blockPos, state, false) - Block.dropResources(block, this, blockPos, tile) - block.block.destroy(this, blockPos, block) - setBlock(blockPos, state, Block.UPDATE_ALL) -} - -fun MutableCollection.addAll(elements: Iterator) { - for (item in elements) { - add(item) - } -} - -fun MutableCollection.addAll(elements: Stream) { - for (item in elements) { - add(item) - } -} - -fun Iterable.stream(): Stream { - return StreamSupport.stream(this.spliterator(), false) -} - -fun Iterator.stream(): Stream { - return StreamSupport.stream(Spliterators.spliteratorUnknownSize(this, 0), false) -} - fun Entity.genericPositions(): Collection { return listOf( position, @@ -194,38 +132,6 @@ fun String.toUUID(): UUID { return UUID.nameUUIDFromBytes(toByteArray(Charsets.UTF_8)) } -fun Array.stream(): Stream = Arrays.stream(this) - -inline fun MutableList>.forValidRefs(fn: (T) -> Unit) { - val iterator = listIterator() - - for (value in iterator) { - val get = value.get() - - if (get == null) { - iterator.remove() - } else { - fn.invoke(get) - } - } -} - -inline fun MutableList>.forValidRefsBreak(fn: (T) -> Boolean) { - val iterator = listIterator() - - for (value in iterator) { - val get = value.get() - - if (get == null) { - iterator.remove() - } else { - if (fn.invoke(get)) { - break - } - } - } -} - val ComponentContents.key: String get() = (this as? TranslatableContents ?: throw ClassCastException("$this is not a TranslatableContents")).key diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/chart/AbstractCombinedHistoryChart.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/chart/AbstractCombinedHistoryChart.kt index 78e135915..1ccc5a547 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/chart/AbstractCombinedHistoryChart.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/util/chart/AbstractCombinedHistoryChart.kt @@ -3,9 +3,9 @@ package ru.dbotthepony.mc.otm.util.chart import it.unimi.dsi.fastutil.objects.ObjectIterators import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet import net.minecraft.network.RegistryFriendlyByteBuf -import ru.dbotthepony.mc.otm.util.collect.filter -import ru.dbotthepony.mc.otm.util.collect.map -import ru.dbotthepony.mc.otm.util.collect.toList +import ru.dbotthepony.kommons.collect.filter +import ru.dbotthepony.kommons.collect.map +import ru.dbotthepony.kommons.collect.toList import ru.dbotthepony.mc.otm.util.ITickable import ru.dbotthepony.mc.otm.network.syncher.DynamicSynchableGroup import ru.dbotthepony.mc.otm.network.syncher.IRemoteState diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/chart/CombinedDecimalHistoryChart.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/chart/CombinedDecimalHistoryChart.kt index 5fdaeae1d..d9f70a3a2 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/chart/CombinedDecimalHistoryChart.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/util/chart/CombinedDecimalHistoryChart.kt @@ -1,7 +1,7 @@ package ru.dbotthepony.mc.otm.util.chart import net.minecraft.network.RegistryFriendlyByteBuf -import ru.dbotthepony.mc.otm.util.collect.reduce +import ru.dbotthepony.kommons.collect.reduce import ru.dbotthepony.mc.otm.util.math.Decimal import java.util.function.Supplier diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/chart/DecimalHistoryChart.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/chart/DecimalHistoryChart.kt index 8665b2ce6..85c50bcb3 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/chart/DecimalHistoryChart.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/util/chart/DecimalHistoryChart.kt @@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.util.chart import com.mojang.serialization.Codec import net.minecraft.network.RegistryFriendlyByteBuf -import ru.dbotthepony.mc.otm.util.collect.reduce +import ru.dbotthepony.kommons.collect.reduce import ru.dbotthepony.mc.otm.util.math.Decimal import ru.dbotthepony.mc.otm.data.codec.DecimalCodec import ru.dbotthepony.mc.otm.network.MatteryStreamCodec diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/ConditionalEnumSet.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/ConditionalEnumSet.kt index 329c7dfeb..9a9f5ffee 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/ConditionalEnumSet.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/ConditionalEnumSet.kt @@ -1,5 +1,7 @@ package ru.dbotthepony.mc.otm.util.collect +import ru.dbotthepony.kommons.collect.filter +import ru.dbotthepony.kommons.collect.map import java.util.EnumMap import java.util.function.BooleanSupplier import java.util.stream.Stream diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/ConditionalSet.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/ConditionalSet.kt index a34426860..1b41106f8 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/ConditionalSet.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/ConditionalSet.kt @@ -1,6 +1,8 @@ package ru.dbotthepony.mc.otm.util.collect import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap +import ru.dbotthepony.kommons.collect.filter +import ru.dbotthepony.kommons.collect.map import java.util.function.BooleanSupplier import java.util.stream.Stream diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/IntRange2Set.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/IntRange2Set.kt index 50bd8be6e..1b80121d1 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/IntRange2Set.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/IntRange2Set.kt @@ -7,6 +7,7 @@ import it.unimi.dsi.fastutil.ints.IntComparator import it.unimi.dsi.fastutil.ints.IntIterators import it.unimi.dsi.fastutil.ints.IntSet import it.unimi.dsi.fastutil.ints.IntSortedSet +import ru.dbotthepony.kommons.collect.all class IntRange2Set private constructor(private val first: Int, private val last: Int) : IntSortedSet { constructor(range: IntRange) : this(range.first, range.last) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/StreamyIterators.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/StreamyIterators.kt deleted file mode 100644 index 89decff0b..000000000 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/StreamyIterators.kt +++ /dev/null @@ -1,408 +0,0 @@ -package ru.dbotthepony.mc.otm.util.collect - -import it.unimi.dsi.fastutil.objects.ObjectIterators -import ru.dbotthepony.mc.otm.util.addAll -import java.util.Optional -import java.util.Spliterators -import java.util.function.Predicate -import java.util.stream.Collector -import java.util.stream.Stream -import java.util.stream.StreamSupport - -// Purpose of Stream API over Iterators is that it is simple enough for JIT to inline most of it, -// unlike actual Streams. - -// We lose only one (actual) element of Stream API here: ability to parallelize work, -// except it doesn't (properly) work in Minecraft (Forge) either, due to classloader bug: -// https://github.com/MinecraftForge/EventBus/issues/44 - -// Aside parallel work, unimplemented Stream API elements can be easily implemented when required - -private class FilteringIterator(private val parent: Iterator, private val predicate: Predicate, private var value: T) : MutableIterator { - private var hasValue = true - private var returned = false - - override fun hasNext(): Boolean { - return hasValue - } - - override fun next(): T { - if (!hasValue) throw NoSuchElementException() - hasValue = false - returned = true - - val value = this.value - - while (parent.hasNext()) { - val next = parent.next() - - if (predicate.test(next)) { - hasValue = true - this.value = next - break - } - } - - return value - } - - override fun remove() { - if (!returned) throw NoSuchElementException() - returned = false - (parent as MutableIterator).remove() - } -} - -private class MappingIterator(private val parent: Iterator, private val mapper: (T) -> R) : MutableIterator { - override fun hasNext(): Boolean { - return parent.hasNext() - } - - override fun next(): R { - return mapper.invoke(parent.next()) - } - - override fun remove() { - (parent as MutableIterator).remove() - } -} - -private class FlatMappingIterator(private val parent: Iterator, private val mapper: (T) -> Iterator) : MutableIterator { - private var current: Iterator = mapper.invoke(parent.next()) - private var last: Iterator? = null - - init { - while (!current.hasNext() && parent.hasNext()) { - current = mapper.invoke(parent.next()) - } - } - - override fun hasNext(): Boolean { - return current.hasNext() - } - - override fun next(): R { - if (!current.hasNext()) - throw NoSuchElementException() - - val v = current.next() - last = current - - while (!current.hasNext() && parent.hasNext()) { - current = mapper.invoke(parent.next()) - } - - return v - } - - override fun remove() { - (last as MutableIterator? ?: throw NoSuchElementException()).remove() - last = null - } -} - -private class LimitingIterator(private val parent: Iterator, private val limit: Long) : Iterator { - init { - require(limit > 0) { "Invalid limit $limit" } - } - - private var found = 0L - - override fun hasNext(): Boolean { - return found < limit && parent.hasNext() - } - - override fun next(): T { - if (found >= limit) - throw NoSuchElementException() - - return parent.next() - } -} - -private class SkippingIterator(private val parent: Iterator, skip: Long) : MutableIterator { - init { - require(skip >= 0) { "Invalid skip amount $skip" } - } - - private var found = skip - private var returned = false - - override fun hasNext(): Boolean { - while (parent.hasNext() && found > 0L) { - found-- - parent.next() - } - - return parent.hasNext() - } - - override fun next(): T { - if (!hasNext()) - throw NoSuchElementException() - - val v = parent.next() - returned = true - return v - } - - override fun remove() { - if (!returned) { - throw NoSuchElementException() - } - - returned = false - (parent as MutableIterator).remove() - } -} - -fun concatIterators(): MutableIterator { - return ObjectIterators.EMPTY_ITERATOR as MutableIterator -} - -fun concatIterators(a: Iterator): MutableIterator { - return a as MutableIterator -} - -fun concatIterators(iterators: Iterable>): MutableIterator { - return iterators.iterator().flatMap { it } -} - -fun concatIterators(vararg iterators: Iterator): MutableIterator { - return iterators.iterator().flatMap { it } -} - -/** - * Filters elements of [this] iterator - * - * Resulting [Iterator] is [MutableIterator] if [this] is - */ -fun Iterator.filter(condition: Predicate): MutableIterator { - while (hasNext()) { - val v = next() - - if (condition.test(v)) { - return FilteringIterator(this, condition, v) - } - } - - return emptyIterator() -} - -/** - * Maps elements of [this] iterator from values of [T] to [R] using function [mapper] - * - * Resulting [Iterator] is [MutableIterator] if [this] is - */ -fun Iterator.map(mapper: (T) -> R): MutableIterator { - if (!hasNext()) { - return emptyIterator() - } - - return MappingIterator(this, mapper) -} - -/** - * Maps elements of [this] iterator from type [T] to other iterators of type [R] using function [mapper] - * - * Resulting [Iterator] is [MutableIterator] if [this] is - */ -fun Iterator.flatMap(mapper: (T) -> Iterator): MutableIterator { - if (!hasNext()) { - return emptyIterator() - } - - return FlatMappingIterator(this, mapper) -} - -inline fun Iterator.reduce(identity: T, reducer: (T, T) -> T): T { - var result = identity - while (hasNext()) result = reducer.invoke(result, next()) - return result -} - -fun Iterator.filterNotNull(): MutableIterator = filter { it != null } as MutableIterator - -inline fun Iterator<*>.filterIsInstance(): MutableIterator = filter { it is T } as MutableIterator - -fun Iterator.any(predicate: Predicate): Boolean { - while (hasNext()) - if (predicate.test(next())) - return true - - return false -} - -inline fun Iterator.any(predicate: (T) -> Boolean): Boolean { - while (hasNext()) - if (predicate.invoke(next())) - return true - - return false -} - -fun Iterator.all(predicate: Predicate): Boolean { - while (hasNext()) - if (!predicate.test(next())) - return false - - return true -} - -inline fun Iterator.all(predicate: (T) -> Boolean): Boolean { - while (hasNext()) - if (!predicate.invoke(next())) - return false - - return true -} - -fun Iterator.none(predicate: Predicate): Boolean { - while (hasNext()) - if (predicate.test(next())) - return false - - return true -} - -inline fun Iterator.none(predicate: (T) -> Boolean): Boolean { - while (hasNext()) - if (predicate.invoke(next())) - return false - - return true -} - -fun Iterator.collect(collector: Collector): R { - val accumulator = collector.accumulator() - val instance = collector.supplier().get() - - for (value in this) { - accumulator.accept(instance, value) - } - - return collector.finisher().apply(instance) -} - -fun Iterator.toList(expectedSize: Int = 16): MutableList { - val result = ArrayList(expectedSize) - result.addAll(this) - return result -} - -fun Iterator.toImmutableList(expectedSize: Int = 16): List { - if (!hasNext()) - return emptyList() - - return toList(expectedSize) -} - -fun Iterator.find(): Optional { - if (hasNext()) { - return Optional.of(next()) - } - - return Optional.empty() -} - -fun Iterator.limit(limit: Long): Iterator = LimitingIterator(this, limit) -fun Iterator.skip(skip: Long): Iterator = if (skip == 0L) this else SkippingIterator(this, skip) - -inline fun Iterator.forEach(action: (T) -> Unit) { - for (value in this) { - action.invoke(value) - } -} - -fun Iterator.min(comparator: Comparator): Optional { - if (!hasNext()) { - return Optional.empty() - } - - var min = next() - - for (value in this) { - if (comparator.compare(min, value) > 0) { - min = value - } - } - - return Optional.of(min) -} - -fun Iterator.max(comparator: Comparator): Optional { - if (!hasNext()) { - return Optional.empty() - } - - var max = next() - - for (value in this) { - if (comparator.compare(max, value) < 0) { - max = value - } - } - - return Optional.of(max) -} - -fun Iterator.peek(peeker: (T) -> Unit): MutableIterator { - return object : MutableIterator { - override fun hasNext(): Boolean { - return this@peek.hasNext() - } - - override fun next(): T { - return this@peek.next().also(peeker) - } - - override fun remove() { - (this@peek as MutableIterator).remove() - } - } -} - -fun Iterator.maybe(): T? { - return if (hasNext()) - next() - else - null -} - -fun emptyIterator(): MutableIterator { - return ObjectIterators.emptyIterator() -} - -fun iteratorOf(value: T): MutableIterator { - return ObjectIterators.singleton(value) -} - -fun iteratorOf(vararg value: T): MutableIterator { - return ObjectIterators.wrap(value) -} - -fun Iterator.toStream(): Stream { - return StreamSupport.stream(Spliterators.spliteratorUnknownSize(this, 0), false) -} - -fun Iterator.allEqual(): Boolean { - if (hasNext()) { - val v = next() - - while (hasNext()) { - if (v != next()) { - return false - } - } - - return true - } - - return false -} - -fun Iterator.count(): Long { - var count = 0L - while (hasNext()) count++ - return count -} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/SupplierList.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/SupplierList.kt index 830adce1a..ffde3fc44 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/SupplierList.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/SupplierList.kt @@ -1,6 +1,6 @@ package ru.dbotthepony.mc.otm.util.collect -import ru.dbotthepony.mc.otm.util.stream +import ru.dbotthepony.kommons.collect.stream import java.util.concurrent.Future import java.util.function.Supplier import java.util.stream.Stream diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/SupplierMap.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/SupplierMap.kt index 35023321e..ccd3ba155 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/SupplierMap.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/SupplierMap.kt @@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.util.collect import com.google.common.collect.ImmutableSet import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap -import ru.dbotthepony.mc.otm.util.stream +import ru.dbotthepony.kommons.collect.stream import java.util.function.Supplier import java.util.stream.Stream diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/WeakHashSet.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/WeakHashSet.kt index c12159e0d..6ee9ea0a4 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/WeakHashSet.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/util/collect/WeakHashSet.kt @@ -3,6 +3,8 @@ package ru.dbotthepony.mc.otm.util.collect import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenCustomHashSet import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet import it.unimi.dsi.fastutil.objects.ObjectSet +import ru.dbotthepony.kommons.collect.filterNotNull +import ru.dbotthepony.kommons.collect.map import ru.dbotthepony.mc.otm.util.HashedWeakReference import java.lang.ref.ReferenceQueue diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/util/math/EuclidMath.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/util/math/EuclidMath.kt index bf1aa2e97..4f6500825 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/util/math/EuclidMath.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/util/math/EuclidMath.kt @@ -13,9 +13,9 @@ import org.joml.Matrix3f import org.joml.Matrix4f import org.joml.Quaternionf import org.joml.Vector3f -import ru.dbotthepony.mc.otm.util.collect.filter -import ru.dbotthepony.mc.otm.util.collect.flatMap -import ru.dbotthepony.mc.otm.util.collect.map +import ru.dbotthepony.kommons.collect.filter +import ru.dbotthepony.kommons.collect.flatMap +import ru.dbotthepony.kommons.collect.map import java.lang.ref.SoftReference import java.util.stream.Stream import java.util.stream.StreamSupport diff --git a/src/test/kotlin/ru/dbotthepony/mc/otm/tests/WeakHashSetTests.kt b/src/test/kotlin/ru/dbotthepony/mc/otm/tests/WeakHashSetTests.kt index 3f31d096a..c890f43f7 100644 --- a/src/test/kotlin/ru/dbotthepony/mc/otm/tests/WeakHashSetTests.kt +++ b/src/test/kotlin/ru/dbotthepony/mc/otm/tests/WeakHashSetTests.kt @@ -3,7 +3,7 @@ package ru.dbotthepony.mc.otm.tests import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.Test import ru.dbotthepony.mc.otm.util.collect.WeakHashSet -import ru.dbotthepony.mc.otm.util.collect.forEach +import ru.dbotthepony.kommons.collect.forEach object WeakHashSetTests { @Test