Switch more code to use kommons
This commit is contained in:
parent
c5c7e1bac4
commit
4b38528fe0
@ -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.predicates.LootItemBlockStatePropertyCondition
|
||||||
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue
|
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue
|
||||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
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 ru.dbotthepony.mc.otm.data.loot.CopyTileNbtFunction
|
||||||
import java.util.concurrent.CompletableFuture
|
import java.util.concurrent.CompletableFuture
|
||||||
|
|
||||||
|
@ -21,6 +21,8 @@ import net.minecraft.world.level.levelgen.structure.BoundingBox
|
|||||||
import net.minecraft.world.phys.AABB
|
import net.minecraft.world.phys.AABB
|
||||||
import net.minecraft.world.phys.Vec3
|
import net.minecraft.world.phys.Vec3
|
||||||
import net.neoforged.neoforge.common.Tags
|
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.getValue
|
||||||
import ru.dbotthepony.kommons.util.setValue
|
import ru.dbotthepony.kommons.util.setValue
|
||||||
import ru.dbotthepony.mc.otm.block.BlackHoleBlock
|
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.minecraft
|
||||||
import ru.dbotthepony.mc.otm.client.sound.BlackHoleAmbientSoundInstance
|
import ru.dbotthepony.mc.otm.client.sound.BlackHoleAmbientSoundInstance
|
||||||
import ru.dbotthepony.mc.otm.config.ServerConfig
|
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.damageType
|
||||||
import ru.dbotthepony.mc.otm.util.getExplosionResistance
|
import ru.dbotthepony.mc.otm.util.getExplosionResistance
|
||||||
import ru.dbotthepony.mc.otm.util.gracefulBlockBreak
|
import ru.dbotthepony.mc.otm.util.gracefulBlockBreak
|
||||||
|
@ -9,6 +9,7 @@ import net.minecraft.world.entity.player.Player
|
|||||||
import net.minecraft.world.inventory.AbstractContainerMenu
|
import net.minecraft.world.inventory.AbstractContainerMenu
|
||||||
import net.minecraft.world.level.block.state.BlockState
|
import net.minecraft.world.level.block.state.BlockState
|
||||||
import net.neoforged.neoforge.capabilities.Capabilities
|
import net.neoforged.neoforge.capabilities.Capabilities
|
||||||
|
import ru.dbotthepony.kommons.collect.map
|
||||||
import ru.dbotthepony.kommons.collect.toList
|
import ru.dbotthepony.kommons.collect.toList
|
||||||
import ru.dbotthepony.kommons.util.DelegateSetter
|
import ru.dbotthepony.kommons.util.DelegateSetter
|
||||||
import ru.dbotthepony.kommons.util.getValue
|
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.MachinesConfig
|
||||||
import ru.dbotthepony.mc.otm.config.ServerConfig
|
import ru.dbotthepony.mc.otm.config.ServerConfig
|
||||||
import ru.dbotthepony.mc.otm.util.TranslatableComponent
|
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.multiblock.ShapedMultiblock
|
||||||
import ru.dbotthepony.mc.otm.util.getBlockStateNow
|
import ru.dbotthepony.mc.otm.util.getBlockStateNow
|
||||||
import ru.dbotthepony.kommons.guava.immutableList
|
import ru.dbotthepony.kommons.guava.immutableList
|
||||||
|
@ -9,8 +9,8 @@ import ru.dbotthepony.mc.otm.SERVER_IS_LIVE
|
|||||||
import ru.dbotthepony.mc.otm.UNIVERSE_TICKS
|
import ru.dbotthepony.mc.otm.UNIVERSE_TICKS
|
||||||
import ru.dbotthepony.mc.otm.capability.receiveEnergy
|
import ru.dbotthepony.mc.otm.capability.receiveEnergy
|
||||||
import ru.dbotthepony.mc.otm.config.CablesConfig
|
import ru.dbotthepony.mc.otm.config.CablesConfig
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
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.util.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.util.math.RelativeSide
|
import ru.dbotthepony.mc.otm.util.math.RelativeSide
|
||||||
import ru.dbotthepony.mc.otm.util.otmRandom
|
import ru.dbotthepony.mc.otm.util.otmRandom
|
||||||
|
@ -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.FilteredContainerSlot
|
||||||
import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer
|
import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer
|
||||||
import ru.dbotthepony.mc.otm.util.SimpleCache
|
import ru.dbotthepony.mc.otm.util.SimpleCache
|
||||||
import ru.dbotthepony.mc.otm.util.collect.filter
|
import ru.dbotthepony.kommons.collect.filter
|
||||||
import ru.dbotthepony.mc.otm.util.collect.forEach
|
import ru.dbotthepony.kommons.collect.forEach
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
import ru.dbotthepony.mc.otm.util.collect.toList
|
import ru.dbotthepony.kommons.collect.toList
|
||||||
import ru.dbotthepony.mc.otm.util.math.Decimal
|
import ru.dbotthepony.mc.otm.util.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.container.ItemStackKey
|
import ru.dbotthepony.mc.otm.container.ItemStackKey
|
||||||
import ru.dbotthepony.mc.otm.container.asKey
|
import ru.dbotthepony.mc.otm.container.asKey
|
||||||
|
@ -17,7 +17,7 @@ import ru.dbotthepony.mc.otm.block.entity.MatteryDeviceBlockEntity
|
|||||||
import ru.dbotthepony.mc.otm.capability.matter.*
|
import ru.dbotthepony.mc.otm.capability.matter.*
|
||||||
import ru.dbotthepony.mc.otm.container.slotted.ContainerSlot
|
import ru.dbotthepony.mc.otm.container.slotted.ContainerSlot
|
||||||
import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer
|
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.util.isNotEmpty
|
||||||
import ru.dbotthepony.mc.otm.graph.matter.SimpleMatterNode
|
import ru.dbotthepony.mc.otm.graph.matter.SimpleMatterNode
|
||||||
import ru.dbotthepony.mc.otm.registry.game.MBlockEntities
|
import ru.dbotthepony.mc.otm.registry.game.MBlockEntities
|
||||||
|
@ -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.container.util.iterator
|
||||||
import ru.dbotthepony.mc.otm.util.collect.AwareItemStack
|
import ru.dbotthepony.mc.otm.util.collect.AwareItemStack
|
||||||
import ru.dbotthepony.mc.otm.util.collect.ContainerItemStackEntry
|
import ru.dbotthepony.mc.otm.util.collect.ContainerItemStackEntry
|
||||||
import ru.dbotthepony.mc.otm.util.collect.concatIterators
|
import ru.dbotthepony.kommons.collect.concatIterators
|
||||||
import ru.dbotthepony.mc.otm.util.collect.filter
|
import ru.dbotthepony.kommons.collect.filter
|
||||||
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.util.isNotEmpty
|
||||||
import ru.dbotthepony.mc.otm.util.math.Decimal
|
import ru.dbotthepony.mc.otm.util.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.util.formatFluidLevel
|
import ru.dbotthepony.mc.otm.util.formatFluidLevel
|
||||||
|
@ -2,8 +2,8 @@ package ru.dbotthepony.mc.otm.capability.energy
|
|||||||
|
|
||||||
import net.minecraft.util.RandomSource
|
import net.minecraft.util.RandomSource
|
||||||
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
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.util.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.util.CapabilityListIterator
|
import ru.dbotthepony.mc.otm.util.CapabilityListIterator
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
@ -5,8 +5,8 @@ import ru.dbotthepony.mc.otm.capability.AbstractProfiledStorage
|
|||||||
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
||||||
import ru.dbotthepony.mc.otm.capability.IProfiledStorage
|
import ru.dbotthepony.mc.otm.capability.IProfiledStorage
|
||||||
import ru.dbotthepony.mc.otm.util.chart.CombinedDecimalHistoryChart
|
import ru.dbotthepony.mc.otm.util.chart.CombinedDecimalHistoryChart
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
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.util.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.util.ITickable
|
import ru.dbotthepony.mc.otm.util.ITickable
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
@ -2,8 +2,8 @@ package ru.dbotthepony.mc.otm.capability.matter
|
|||||||
|
|
||||||
import net.minecraft.util.RandomSource
|
import net.minecraft.util.RandomSource
|
||||||
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
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.util.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.util.CapabilityListIterator
|
import ru.dbotthepony.mc.otm.util.CapabilityListIterator
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
@ -5,8 +5,8 @@ import ru.dbotthepony.mc.otm.capability.AbstractProfiledStorage
|
|||||||
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
import ru.dbotthepony.mc.otm.capability.FlowDirection
|
||||||
import ru.dbotthepony.mc.otm.capability.IProfiledStorage
|
import ru.dbotthepony.mc.otm.capability.IProfiledStorage
|
||||||
import ru.dbotthepony.mc.otm.util.chart.CombinedDecimalHistoryChart
|
import ru.dbotthepony.mc.otm.util.chart.CombinedDecimalHistoryChart
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
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.util.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.util.ITickable
|
import ru.dbotthepony.mc.otm.util.ITickable
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
@ -17,6 +17,7 @@ import net.neoforged.neoforge.client.event.MovementInputUpdateEvent
|
|||||||
import net.neoforged.neoforge.client.event.ScreenEvent
|
import net.neoforged.neoforge.client.event.ScreenEvent
|
||||||
import net.neoforged.neoforge.event.entity.player.ItemTooltipEvent
|
import net.neoforged.neoforge.event.entity.player.ItemTooltipEvent
|
||||||
import net.neoforged.neoforge.network.PacketDistributor
|
import net.neoforged.neoforge.network.PacketDistributor
|
||||||
|
import ru.dbotthepony.kommons.collect.addAll
|
||||||
import ru.dbotthepony.mc.otm.config.ClientConfig
|
import ru.dbotthepony.mc.otm.config.ClientConfig
|
||||||
import ru.dbotthepony.mc.otm.player.android.feature.JumpBoostFeature
|
import ru.dbotthepony.mc.otm.player.android.feature.JumpBoostFeature
|
||||||
import ru.dbotthepony.mc.otm.player.MatteryPlayer
|
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.vanilla.InventoryScrollPacket
|
||||||
import ru.dbotthepony.mc.otm.compat.cos.isCosmeticArmorScreen
|
import ru.dbotthepony.mc.otm.compat.cos.isCosmeticArmorScreen
|
||||||
import ru.dbotthepony.mc.otm.util.TranslatableComponent
|
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.util.math.integerDivisionUp
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
||||||
import ru.dbotthepony.mc.otm.registry.game.AndroidFeatures
|
import ru.dbotthepony.mc.otm.registry.game.AndroidFeatures
|
||||||
|
@ -5,8 +5,8 @@ import com.google.gson.JsonPrimitive
|
|||||||
import com.google.gson.JsonSyntaxException
|
import com.google.gson.JsonSyntaxException
|
||||||
import net.minecraft.network.FriendlyByteBuf
|
import net.minecraft.network.FriendlyByteBuf
|
||||||
import net.minecraft.resources.ResourceLocation
|
import net.minecraft.resources.ResourceLocation
|
||||||
|
import ru.dbotthepony.kommons.gson.set
|
||||||
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
|
import ru.dbotthepony.mc.otm.client.render.UVWindingOrder
|
||||||
import ru.dbotthepony.mc.otm.util.set
|
|
||||||
|
|
||||||
enum class SpriteType {
|
enum class SpriteType {
|
||||||
SINGLE {
|
SINGLE {
|
||||||
|
@ -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.render.pushScissorRect
|
||||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.input.QueryUserPanel
|
import ru.dbotthepony.mc.otm.client.screen.panels.input.QueryUserPanel
|
||||||
import ru.dbotthepony.mc.otm.util.collect.concatIterators
|
import ru.dbotthepony.kommons.collect.concatIterators
|
||||||
import ru.dbotthepony.mc.otm.util.collect.flatMap
|
import ru.dbotthepony.kommons.collect.flatMap
|
||||||
import ru.dbotthepony.mc.otm.util.GJRAND64RandomSource
|
import ru.dbotthepony.mc.otm.util.GJRAND64RandomSource
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.CopyOnWriteArrayList
|
import java.util.concurrent.CopyOnWriteArrayList
|
||||||
|
@ -14,6 +14,7 @@ import net.minecraft.client.gui.screens.Screen
|
|||||||
import net.minecraft.client.renderer.GameRenderer
|
import net.minecraft.client.renderer.GameRenderer
|
||||||
import net.minecraft.network.chat.Component
|
import net.minecraft.network.chat.Component
|
||||||
import org.joml.Vector2i
|
import org.joml.Vector2i
|
||||||
|
import ru.dbotthepony.kommons.collect.addAll
|
||||||
import ru.dbotthepony.mc.otm.client.CursorType
|
import ru.dbotthepony.mc.otm.client.CursorType
|
||||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||||
import ru.dbotthepony.mc.otm.client.isCtrlDown
|
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.DockProperty
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||||
import ru.dbotthepony.mc.otm.util.TextComponent
|
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.kommons.math.RGBAColor
|
||||||
import ru.dbotthepony.mc.otm.client.render.vertex
|
import ru.dbotthepony.mc.otm.client.render.vertex
|
||||||
import ru.dbotthepony.mc.otm.milliTime
|
import ru.dbotthepony.mc.otm.milliTime
|
||||||
@ -957,7 +955,7 @@ open class TextInputPanel<out S : Screen>(
|
|||||||
return true
|
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 insert = minecraft.keyboardHandler.clipboard.replace("\t", " ").filter { acceptsCharacter(it, 0, index++) }.split(NEWLINES).toMutableList()
|
||||||
val actualLastSize = insert.lastOrNull()?.length ?: 0
|
val actualLastSize = insert.lastOrNull()?.length ?: 0
|
||||||
val line = this[cursorLine]
|
val line = this[cursorLine]
|
||||||
@ -1009,7 +1007,7 @@ open class TextInputPanel<out S : Screen>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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 insert = minecraft.keyboardHandler.clipboard.replace("\t", " ").replace(NEWLINES, "").filter { acceptsCharacter(it, 0, index++) }
|
||||||
val line = this[cursorLine]
|
val line = this[cursorLine]
|
||||||
|
|
||||||
|
@ -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.Dock
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||||
import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel
|
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
|
import kotlin.math.max
|
||||||
|
|
||||||
open class GridPanel<out S : Screen>(
|
open class GridPanel<out S : Screen>(
|
||||||
|
@ -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.awareStream
|
||||||
import ru.dbotthepony.mc.otm.container.util.iterator
|
import ru.dbotthepony.mc.otm.container.util.iterator
|
||||||
import ru.dbotthepony.mc.otm.util.collect.AwareItemStack
|
import ru.dbotthepony.mc.otm.util.collect.AwareItemStack
|
||||||
import ru.dbotthepony.mc.otm.util.collect.emptyIterator
|
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
|
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
|
||||||
|
import java.util.Collections.emptyIterator
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
|
|
||||||
val isCosmeticArmorLoaded by lazy {
|
val isCosmeticArmorLoaded by lazy {
|
||||||
|
@ -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.awareStream
|
||||||
import ru.dbotthepony.mc.otm.container.util.iterator
|
import ru.dbotthepony.mc.otm.container.util.iterator
|
||||||
import ru.dbotthepony.mc.otm.util.collect.AwareItemStack
|
import ru.dbotthepony.mc.otm.util.collect.AwareItemStack
|
||||||
import ru.dbotthepony.mc.otm.util.collect.concatIterators
|
import ru.dbotthepony.kommons.collect.concatIterators
|
||||||
import ru.dbotthepony.mc.otm.util.collect.emptyIterator
|
|
||||||
import ru.dbotthepony.mc.otm.menu.PlayerSlot
|
import ru.dbotthepony.mc.otm.menu.PlayerSlot
|
||||||
import top.theillusivec4.curios.api.CuriosApi
|
import top.theillusivec4.curios.api.CuriosApi
|
||||||
import top.theillusivec4.curios.api.CuriosCapability
|
import top.theillusivec4.curios.api.CuriosCapability
|
||||||
import top.theillusivec4.curios.api.event.SlotModifiersUpdatedEvent
|
import top.theillusivec4.curios.api.event.SlotModifiersUpdatedEvent
|
||||||
import top.theillusivec4.curios.common.inventory.CosmeticCurioSlot
|
import top.theillusivec4.curios.common.inventory.CosmeticCurioSlot
|
||||||
import top.theillusivec4.curios.common.inventory.CurioSlot
|
import top.theillusivec4.curios.common.inventory.CurioSlot
|
||||||
import top.theillusivec4.curios.common.network.client.CPacketOpenCurios
|
|
||||||
import top.theillusivec4.curios.common.network.client.CPacketToggleRender
|
import top.theillusivec4.curios.common.network.client.CPacketToggleRender
|
||||||
|
import java.util.Collections.emptyIterator
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
import kotlin.collections.ArrayList
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
|
@ -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.panels.slot.AbstractSlotPanel
|
||||||
import ru.dbotthepony.mc.otm.client.screen.widget.FluidGaugePanel
|
import ru.dbotthepony.mc.otm.client.screen.widget.FluidGaugePanel
|
||||||
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
||||||
import ru.dbotthepony.mc.otm.util.collect.filter
|
import ru.dbotthepony.kommons.collect.filter
|
||||||
import ru.dbotthepony.mc.otm.util.collect.filterIsInstance
|
import ru.dbotthepony.kommons.collect.filterIsInstance
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
import ru.dbotthepony.mc.otm.util.collect.toList
|
import ru.dbotthepony.kommons.collect.toList
|
||||||
import ru.dbotthepony.mc.otm.menu.decorative.PainterMenu
|
import ru.dbotthepony.mc.otm.menu.decorative.PainterMenu
|
||||||
import ru.dbotthepony.mc.otm.menu.matter.MatterEntanglerMenu
|
import ru.dbotthepony.mc.otm.menu.matter.MatterEntanglerMenu
|
||||||
import ru.dbotthepony.mc.otm.menu.tech.PlatePressMenu
|
import ru.dbotthepony.mc.otm.menu.tech.PlatePressMenu
|
||||||
|
@ -5,7 +5,7 @@ import net.minecraft.world.item.ItemStack
|
|||||||
import ru.dbotthepony.kommons.collect.iterateClearBits
|
import ru.dbotthepony.kommons.collect.iterateClearBits
|
||||||
import ru.dbotthepony.kommons.collect.iterateSetBits
|
import ru.dbotthepony.kommons.collect.iterateSetBits
|
||||||
import ru.dbotthepony.mc.otm.util.collect.IntRange2Set
|
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.*
|
import java.util.*
|
||||||
|
|
||||||
abstract class BitmapTrackingContainer<out S : IContainerSlot> : IEnhancedContainer<S> {
|
abstract class BitmapTrackingContainer<out S : IContainerSlot> : IEnhancedContainer<S> {
|
||||||
|
@ -11,13 +11,13 @@ import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap
|
|||||||
import net.minecraft.world.Container
|
import net.minecraft.world.Container
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
import net.minecraft.world.item.ItemStack
|
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.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.isNotEmpty
|
||||||
import ru.dbotthepony.mc.otm.util.stream
|
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
|
|
||||||
class CombinedContainer<S : IContainerSlot>(containers: Stream<Pair<IEnhancedContainer<S>, Iterable<Int>>>) : ISlottedContainer<S> {
|
class CombinedContainer<S : IContainerSlot>(containers: Stream<Pair<IEnhancedContainer<S>, Iterable<Int>>>) : ISlottedContainer<S> {
|
||||||
|
@ -16,16 +16,15 @@ import net.minecraft.world.item.ItemStack
|
|||||||
import net.minecraft.world.item.enchantment.EnchantmentEffectComponents
|
import net.minecraft.world.item.enchantment.EnchantmentEffectComponents
|
||||||
import net.minecraft.world.item.enchantment.EnchantmentHelper
|
import net.minecraft.world.item.enchantment.EnchantmentHelper
|
||||||
import net.neoforged.neoforge.fluids.capability.IFluidHandler
|
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.kommons.util.map
|
||||||
import ru.dbotthepony.mc.otm.container.util.ItemStackHashStrategy
|
import ru.dbotthepony.mc.otm.container.util.ItemStackHashStrategy
|
||||||
import ru.dbotthepony.mc.otm.container.util.containerSlot
|
import ru.dbotthepony.mc.otm.container.util.containerSlot
|
||||||
import ru.dbotthepony.mc.otm.container.util.slotIterator
|
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.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.isNotEmpty
|
||||||
import ru.dbotthepony.mc.otm.util.map
|
|
||||||
import ru.dbotthepony.mc.otm.util.ItemStackSorter
|
import ru.dbotthepony.mc.otm.util.ItemStackSorter
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
|
@ -9,9 +9,8 @@ import net.minecraft.world.item.Item
|
|||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
import net.minecraft.world.item.Items
|
import net.minecraft.world.item.Items
|
||||||
import net.minecraft.world.item.crafting.RecipeInput
|
import net.minecraft.world.item.crafting.RecipeInput
|
||||||
import ru.dbotthepony.mc.otm.util.collect.any
|
import ru.dbotthepony.kommons.collect.filter
|
||||||
import ru.dbotthepony.mc.otm.util.collect.filter
|
import ru.dbotthepony.kommons.collect.map
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
|
||||||
import ru.dbotthepony.mc.otm.util.isNotEmpty
|
import ru.dbotthepony.mc.otm.util.isNotEmpty
|
||||||
import java.util.function.Predicate
|
import java.util.function.Predicate
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
@ -243,14 +242,14 @@ interface IEnhancedContainer<out S : IContainerSlot> : Container, RecipeInput, I
|
|||||||
if (Items.AIR in items && hasEmptySlots)
|
if (Items.AIR in items && hasEmptySlots)
|
||||||
return true
|
return true
|
||||||
|
|
||||||
return iterator().any { it.item in items }
|
return any { it.item in items }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hasAnyMatching(predicate: Predicate<ItemStack>): Boolean {
|
override fun hasAnyMatching(predicate: Predicate<ItemStack>): Boolean {
|
||||||
if (predicate.test(ItemStack.EMPTY) && hasEmptySlots)
|
if (predicate.test(ItemStack.EMPTY) && hasEmptySlots)
|
||||||
return true
|
return true
|
||||||
|
|
||||||
return iterator().any(predicate)
|
return any(predicate::test)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun toList(): MutableList<ItemStack> {
|
fun toList(): MutableList<ItemStack> {
|
||||||
|
@ -6,8 +6,8 @@ import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
|||||||
import ru.dbotthepony.mc.otm.capability.UpgradeType
|
import ru.dbotthepony.mc.otm.capability.UpgradeType
|
||||||
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.config.VerboseEnergyBalanceValues
|
import ru.dbotthepony.mc.otm.config.VerboseEnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
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.util.math.Decimal
|
||||||
import java.util.function.BooleanSupplier
|
import java.util.function.BooleanSupplier
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
|
@ -6,7 +6,7 @@ import net.minecraft.world.item.ItemStack
|
|||||||
import net.neoforged.neoforge.items.IItemHandler
|
import net.neoforged.neoforge.items.IItemHandler
|
||||||
import ru.dbotthepony.mc.otm.util.collect.AwareItemStack
|
import ru.dbotthepony.mc.otm.util.collect.AwareItemStack
|
||||||
import ru.dbotthepony.mc.otm.util.collect.ItemHandlerItemStackEntry
|
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 ru.dbotthepony.mc.otm.util.isNotEmpty
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
|
@ -6,8 +6,8 @@ import net.minecraft.world.item.ItemStack
|
|||||||
import ru.dbotthepony.mc.otm.container.IContainerSlot
|
import ru.dbotthepony.mc.otm.container.IContainerSlot
|
||||||
import ru.dbotthepony.mc.otm.container.IEnhancedContainer
|
import ru.dbotthepony.mc.otm.container.IEnhancedContainer
|
||||||
import ru.dbotthepony.mc.otm.container.get
|
import ru.dbotthepony.mc.otm.container.get
|
||||||
import ru.dbotthepony.mc.otm.util.collect.filter
|
import ru.dbotthepony.kommons.collect.filter
|
||||||
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.util.isNotEmpty
|
||||||
|
|
||||||
fun Container.containerSlot(slot: Int): IContainerSlot {
|
fun Container.containerSlot(slot: Int): IContainerSlot {
|
||||||
|
@ -5,7 +5,7 @@ import com.mojang.datafixers.util.Pair
|
|||||||
import com.mojang.serialization.Codec
|
import com.mojang.serialization.Codec
|
||||||
import com.mojang.serialization.DataResult
|
import com.mojang.serialization.DataResult
|
||||||
import com.mojang.serialization.DynamicOps
|
import com.mojang.serialization.DynamicOps
|
||||||
import ru.dbotthepony.mc.otm.util.stream
|
import ru.dbotthepony.kommons.collect.stream
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
|
|
||||||
class CodecList<S : Any>(codecs: Stream<Codec<S>>) : Codec<S> {
|
class CodecList<S : Any>(codecs: Stream<Codec<S>>) : Codec<S> {
|
||||||
|
@ -5,7 +5,7 @@ import com.mojang.datafixers.util.Pair
|
|||||||
import com.mojang.serialization.Codec
|
import com.mojang.serialization.Codec
|
||||||
import com.mojang.serialization.DataResult
|
import com.mojang.serialization.DataResult
|
||||||
import com.mojang.serialization.DynamicOps
|
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.function.Predicate
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
|
|
||||||
|
@ -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.LootItemCondition
|
||||||
import net.minecraft.world.level.storage.loot.predicates.LootItemConditionType
|
import net.minecraft.world.level.storage.loot.predicates.LootItemConditionType
|
||||||
import ru.dbotthepony.mc.otm.capability.items
|
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.data.get
|
||||||
import ru.dbotthepony.mc.otm.registry.data.MLootItemConditions
|
import ru.dbotthepony.mc.otm.registry.data.MLootItemConditions
|
||||||
|
|
||||||
|
@ -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.LootItemFunction
|
||||||
import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType
|
import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType
|
||||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParams
|
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.block.entity.MatteryBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.util.fromNbt
|
import ru.dbotthepony.mc.otm.util.fromNbt
|
||||||
import ru.dbotthepony.mc.otm.util.set
|
import ru.dbotthepony.mc.otm.util.set
|
||||||
import ru.dbotthepony.mc.otm.util.stream
|
|
||||||
import ru.dbotthepony.mc.otm.registry.data.MItemFunctionTypes
|
import ru.dbotthepony.mc.otm.registry.data.MItemFunctionTypes
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
|
@ -29,12 +29,12 @@ import net.neoforged.neoforge.common.SoundActions
|
|||||||
import net.neoforged.neoforge.fluids.FluidStack
|
import net.neoforged.neoforge.fluids.FluidStack
|
||||||
import net.neoforged.neoforge.fluids.FluidUtil
|
import net.neoforged.neoforge.fluids.FluidUtil
|
||||||
import net.neoforged.neoforge.fluids.capability.IFluidHandler
|
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.ItemMatteryFluidHandler
|
||||||
import ru.dbotthepony.mc.otm.capability.fluid.iterator
|
import ru.dbotthepony.mc.otm.capability.fluid.iterator
|
||||||
import ru.dbotthepony.mc.otm.capability.moveFluid
|
import ru.dbotthepony.mc.otm.capability.moveFluid
|
||||||
import ru.dbotthepony.mc.otm.container.get
|
import ru.dbotthepony.mc.otm.container.get
|
||||||
import ru.dbotthepony.mc.otm.util.TranslatableComponent
|
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.immutableList
|
||||||
import ru.dbotthepony.kommons.guava.immutableMap
|
import ru.dbotthepony.kommons.guava.immutableMap
|
||||||
import ru.dbotthepony.mc.otm.util.isNotEmpty
|
import ru.dbotthepony.mc.otm.util.isNotEmpty
|
||||||
|
@ -35,7 +35,7 @@ import ru.dbotthepony.mc.otm.capability.matteryEnergy
|
|||||||
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
import ru.dbotthepony.mc.otm.config.EnergyBalanceValues
|
||||||
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
||||||
import ru.dbotthepony.mc.otm.util.TranslatableComponent
|
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.isNotEmpty
|
||||||
import ru.dbotthepony.mc.otm.util.math.Decimal
|
import ru.dbotthepony.mc.otm.util.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.util.getDecimal
|
import ru.dbotthepony.mc.otm.util.getDecimal
|
||||||
|
@ -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.LootItemConditionalFunction
|
||||||
import net.minecraft.world.level.storage.loot.functions.SetComponentsFunction
|
import net.minecraft.world.level.storage.loot.functions.SetComponentsFunction
|
||||||
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent
|
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.MatteryCapability
|
||||||
import ru.dbotthepony.mc.otm.capability.matter.IPatternStorage
|
import ru.dbotthepony.mc.otm.capability.matter.IPatternStorage
|
||||||
import ru.dbotthepony.mc.otm.capability.matter.PatternInsertFailure
|
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.capability.matter.gatherTooltip
|
||||||
import ru.dbotthepony.mc.otm.util.TextComponent
|
import ru.dbotthepony.mc.otm.util.TextComponent
|
||||||
import ru.dbotthepony.mc.otm.util.TranslatableComponent
|
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.item.MatteryItem
|
||||||
import ru.dbotthepony.mc.otm.registry.CapabilitiesRegisterListener
|
import ru.dbotthepony.mc.otm.registry.CapabilitiesRegisterListener
|
||||||
import ru.dbotthepony.mc.otm.registry.game.MDataComponentTypes
|
import ru.dbotthepony.mc.otm.registry.game.MDataComponentTypes
|
||||||
|
@ -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.ResourceLocation
|
||||||
import ru.dbotthepony.mc.otm.util.TextComponent
|
import ru.dbotthepony.mc.otm.util.TextComponent
|
||||||
import ru.dbotthepony.mc.otm.util.TranslatableComponent
|
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.filterNotNull
|
||||||
|
import ru.dbotthepony.kommons.collect.stream
|
||||||
import ru.dbotthepony.mc.otm.util.getReverseTag
|
import ru.dbotthepony.mc.otm.util.getReverseTag
|
||||||
import ru.dbotthepony.mc.otm.util.isNotEmpty
|
import ru.dbotthepony.mc.otm.util.isNotEmpty
|
||||||
import ru.dbotthepony.mc.otm.util.math.Decimal
|
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.readComponent
|
||||||
import ru.dbotthepony.mc.otm.util.readItemType
|
import ru.dbotthepony.mc.otm.util.readItemType
|
||||||
import ru.dbotthepony.mc.otm.util.registryName
|
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.formatMatter
|
||||||
import ru.dbotthepony.mc.otm.util.formatMatterFull
|
import ru.dbotthepony.mc.otm.util.formatMatterFull
|
||||||
import ru.dbotthepony.mc.otm.util.formatSiComponent
|
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")) }
|
.executes { dumpRegistry(it, it.getArgument("mode", DumpFilter::class.java), StringArgumentType.getString(it, "mod")) }
|
||||||
.suggests { context, builder ->
|
.suggests { context, builder ->
|
||||||
val startingWith = builder.input.substring(builder.start).lowercase()
|
val startingWith = builder.input.substring(builder.start).lowercase()
|
||||||
ModList.get().mods.iterator()
|
ModList.get().mods.stream()
|
||||||
.filter { it.modId.startsWith(startingWith) }
|
.filter { it.modId.startsWith(startingWith) }
|
||||||
.filter { key -> BuiltInRegistries.ITEM.entrySet().iterator()
|
.filter { key -> BuiltInRegistries.ITEM.entrySet().stream()
|
||||||
.filter { it.key.location().namespace == key.namespace }
|
.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)) }
|
.forEach { builder.suggest(it.modId, TextComponent(it.displayName)) }
|
||||||
builder.buildFuture()
|
builder.buildFuture()
|
||||||
})
|
})
|
||||||
|
@ -9,6 +9,9 @@ import net.minecraft.world.level.material.Fluids
|
|||||||
import net.neoforged.neoforge.capabilities.Capabilities
|
import net.neoforged.neoforge.capabilities.Capabilities
|
||||||
import net.neoforged.neoforge.fluids.FluidStack
|
import net.neoforged.neoforge.fluids.FluidStack
|
||||||
import net.neoforged.neoforge.fluids.capability.IFluidHandler
|
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.Listenable
|
||||||
import ru.dbotthepony.kommons.util.ListenableDelegate
|
import ru.dbotthepony.kommons.util.ListenableDelegate
|
||||||
import ru.dbotthepony.kommons.util.getValue
|
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.block.entity.decorative.PainterBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.player.matteryPlayer
|
import ru.dbotthepony.mc.otm.player.matteryPlayer
|
||||||
import ru.dbotthepony.mc.otm.container.slotted.SlottedContainer
|
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.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.util.isNotEmpty
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
import ru.dbotthepony.mc.otm.menu.MatteryMenu
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
|
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
|
||||||
|
@ -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.ItemMonitorBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.block.entity.storage.ItemMonitorPlayerSettings
|
import ru.dbotthepony.mc.otm.block.entity.storage.ItemMonitorPlayerSettings
|
||||||
import ru.dbotthepony.mc.otm.container.get
|
import ru.dbotthepony.mc.otm.container.get
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
import ru.dbotthepony.mc.otm.util.collect.reduce
|
import ru.dbotthepony.kommons.collect.reduce
|
||||||
import ru.dbotthepony.mc.otm.util.isNotEmpty
|
import ru.dbotthepony.mc.otm.util.isNotEmpty
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
|
import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu
|
||||||
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
|
import ru.dbotthepony.mc.otm.menu.MatteryMenuSlot
|
||||||
|
@ -16,8 +16,6 @@ import net.minecraft.world.level.block.state.BlockState
|
|||||||
import net.minecraft.world.level.chunk.LevelChunk
|
import net.minecraft.world.level.chunk.LevelChunk
|
||||||
import net.minecraft.world.phys.AABB
|
import net.minecraft.world.phys.AABB
|
||||||
import ru.dbotthepony.kommons.util.Listenable
|
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.getBlockEntityNow
|
||||||
import ru.dbotthepony.mc.otm.util.getBlockStateNowOrNull
|
import ru.dbotthepony.mc.otm.util.getBlockStateNowOrNull
|
||||||
import ru.dbotthepony.mc.otm.util.math.Vector
|
import ru.dbotthepony.mc.otm.util.math.Vector
|
||||||
@ -83,7 +81,7 @@ class ShapedMultiblock(pos: BlockPos, factory: ShapedMultiblockFactory) : IMulti
|
|||||||
private val assignedBlockEntityLists = ArrayList<BlockEntitySet<*>>(prototype.blockEntityTags.size)
|
private val assignedBlockEntityLists = ArrayList<BlockEntitySet<*>>(prototype.blockEntityTags.size)
|
||||||
private val assignedBlockStateLists = ArrayList<Reference2IntMap<BlockState>>()
|
private val assignedBlockStateLists = ArrayList<Reference2IntMap<BlockState>>()
|
||||||
private val assignedBlockLists = ArrayList<Reference2IntMap<Block>>()
|
private val assignedBlockLists = ArrayList<Reference2IntMap<Block>>()
|
||||||
private val children: ImmutableList<Part> by lazy(LazyThreadSafetyMode.NONE) { prototype.children.iterator().map { Part(pos, it, chunkPos) }.collect(ImmutableList.toImmutableList()) }
|
private val children: ImmutableList<Part> by lazy(LazyThreadSafetyMode.NONE) { prototype.children.stream().map { Part(pos, it, chunkPos) }.collect(ImmutableList.toImmutableList()) }
|
||||||
|
|
||||||
override fun compareTo(other: Part): Int {
|
override fun compareTo(other: Part): Int {
|
||||||
return chunkPos.compareTo(other.chunkPos)
|
return chunkPos.compareTo(other.chunkPos)
|
||||||
|
@ -10,8 +10,7 @@ import net.minecraft.core.Vec3i
|
|||||||
import net.minecraft.tags.TagKey
|
import net.minecraft.tags.TagKey
|
||||||
import net.minecraft.world.level.block.Block
|
import net.minecraft.world.level.block.Block
|
||||||
import net.minecraft.world.level.block.state.BlockState
|
import net.minecraft.world.level.block.state.BlockState
|
||||||
import ru.dbotthepony.mc.otm.util.collect.collect
|
import ru.dbotthepony.kommons.collect.map
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
|
||||||
import ru.dbotthepony.mc.otm.util.math.RelativeSide
|
import ru.dbotthepony.mc.otm.util.math.RelativeSide
|
||||||
import ru.dbotthepony.mc.otm.util.math.plus
|
import ru.dbotthepony.mc.otm.util.math.plus
|
||||||
import java.util.function.Predicate
|
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.
|
* Created factory does not share reference(s) to this builder, and this builder can be mutated further without consequences.
|
||||||
*/
|
*/
|
||||||
fun build(): ShapedMultiblockFactory {
|
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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,7 @@ import com.google.common.collect.ImmutableSet
|
|||||||
import net.minecraft.core.BlockPos
|
import net.minecraft.core.BlockPos
|
||||||
import net.minecraft.world.level.block.Rotation
|
import net.minecraft.world.level.block.Rotation
|
||||||
import net.minecraft.world.level.block.state.BlockState
|
import net.minecraft.world.level.block.state.BlockState
|
||||||
import ru.dbotthepony.mc.otm.util.collect.collect
|
import ru.dbotthepony.kommons.collect.map
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
|
||||||
import java.util.function.Predicate
|
import java.util.function.Predicate
|
||||||
|
|
||||||
class ShapedMultiblockFactory(val north: ImmutableSet<Part>, val customChecks: ImmutableList<Predicate<IMultiblockAccess>>) {
|
class ShapedMultiblockFactory(val north: ImmutableSet<Part>, val customChecks: ImmutableList<Predicate<IMultiblockAccess>>) {
|
||||||
@ -28,7 +27,7 @@ class ShapedMultiblockFactory(val north: ImmutableSet<Part>, val customChecks: I
|
|||||||
return ShapedMultiblock(pos, this)
|
return ShapedMultiblock(pos, this)
|
||||||
}
|
}
|
||||||
|
|
||||||
val south: ImmutableSet<Part> = north.iterator().map { it.copy(pos = it.pos.rotate(Rotation.CLOCKWISE_180)) }.collect(ImmutableSet.toImmutableSet())
|
val south: ImmutableSet<Part> = north.stream().map { it.copy(pos = it.pos.rotate(Rotation.CLOCKWISE_180)) }.collect(ImmutableSet.toImmutableSet())
|
||||||
val west: ImmutableSet<Part> = north.iterator().map { it.copy(pos = it.pos.rotate(Rotation.COUNTERCLOCKWISE_90)) }.collect(ImmutableSet.toImmutableSet())
|
val west: ImmutableSet<Part> = north.stream().map { it.copy(pos = it.pos.rotate(Rotation.COUNTERCLOCKWISE_90)) }.collect(ImmutableSet.toImmutableSet())
|
||||||
val east: ImmutableSet<Part> = north.iterator().map { it.copy(pos = it.pos.rotate(Rotation.CLOCKWISE_90)) }.collect(ImmutableSet.toImmutableSet())
|
val east: ImmutableSet<Part> = north.stream().map { it.copy(pos = it.pos.rotate(Rotation.CLOCKWISE_90)) }.collect(ImmutableSet.toImmutableSet())
|
||||||
}
|
}
|
||||||
|
@ -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.minecraft
|
||||||
import ru.dbotthepony.mc.otm.client.onceClient
|
import ru.dbotthepony.mc.otm.client.onceClient
|
||||||
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
import ru.dbotthepony.mc.otm.util.ResourceLocation
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
import ru.dbotthepony.mc.otm.util.collect.reduce
|
import ru.dbotthepony.kommons.collect.reduce
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.collections.ArrayList
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
|
@ -18,8 +18,8 @@ import ru.dbotthepony.kommons.util.Listenable
|
|||||||
import ru.dbotthepony.kommons.util.ListenableDelegate
|
import ru.dbotthepony.kommons.util.ListenableDelegate
|
||||||
import ru.dbotthepony.kommons.util.Observer
|
import ru.dbotthepony.kommons.util.Observer
|
||||||
import ru.dbotthepony.mc.otm.OTM_CLEANER
|
import ru.dbotthepony.mc.otm.OTM_CLEANER
|
||||||
import ru.dbotthepony.mc.otm.util.collect.filterNotNull
|
import ru.dbotthepony.kommons.collect.filterNotNull
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
import ru.dbotthepony.mc.otm.util.math.Decimal
|
import ru.dbotthepony.mc.otm.util.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.network.ItemStackCodec
|
import ru.dbotthepony.mc.otm.network.ItemStackCodec
|
||||||
import ru.dbotthepony.mc.otm.network.MatteryStreamCodec
|
import ru.dbotthepony.mc.otm.network.MatteryStreamCodec
|
||||||
|
@ -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.util.slotIterator
|
||||||
import ru.dbotthepony.mc.otm.container.vanishCursedItems
|
import ru.dbotthepony.mc.otm.container.vanishCursedItems
|
||||||
import ru.dbotthepony.mc.otm.util.collect.UUIDIntModifiersMap
|
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.Decimal
|
||||||
import ru.dbotthepony.mc.otm.util.math.RGBColorDFUCodec
|
import ru.dbotthepony.mc.otm.util.math.RGBColorDFUCodec
|
||||||
import ru.dbotthepony.mc.otm.util.math.minus
|
import ru.dbotthepony.mc.otm.util.math.minus
|
||||||
|
@ -19,6 +19,7 @@ import net.neoforged.neoforge.event.OnDatapackSyncEvent
|
|||||||
import net.neoforged.neoforge.network.PacketDistributor
|
import net.neoforged.neoforge.network.PacketDistributor
|
||||||
import net.neoforged.neoforge.network.handling.IPayloadContext
|
import net.neoforged.neoforge.network.handling.IPayloadContext
|
||||||
import org.apache.logging.log4j.LogManager
|
import org.apache.logging.log4j.LogManager
|
||||||
|
import ru.dbotthepony.kommons.gson.set
|
||||||
import ru.dbotthepony.mc.otm.MINECRAFT_SERVER
|
import ru.dbotthepony.mc.otm.MINECRAFT_SERVER
|
||||||
import ru.dbotthepony.mc.otm.NULLABLE_MINECRAFT_SERVER
|
import ru.dbotthepony.mc.otm.NULLABLE_MINECRAFT_SERVER
|
||||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||||
|
@ -18,8 +18,8 @@ import net.minecraft.world.item.crafting.ShapedRecipePattern
|
|||||||
import net.minecraft.world.level.Level
|
import net.minecraft.world.level.Level
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||||
import ru.dbotthepony.mc.otm.capability.matteryEnergy
|
import ru.dbotthepony.mc.otm.capability.matteryEnergy
|
||||||
import ru.dbotthepony.mc.otm.util.collect.filterNotNull
|
import ru.dbotthepony.kommons.collect.filterNotNull
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
import ru.dbotthepony.mc.otm.util.math.Decimal
|
import ru.dbotthepony.mc.otm.util.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.data.codec.DecimalCodec
|
import ru.dbotthepony.mc.otm.data.codec.DecimalCodec
|
||||||
import ru.dbotthepony.mc.otm.data.codec.minRange
|
import ru.dbotthepony.mc.otm.data.codec.minRange
|
||||||
|
@ -13,8 +13,7 @@ import net.minecraft.advancements.critereon.EntityPredicate
|
|||||||
import net.minecraft.resources.ResourceLocation
|
import net.minecraft.resources.ResourceLocation
|
||||||
import net.minecraft.server.PlayerAdvancements
|
import net.minecraft.server.PlayerAdvancements
|
||||||
import net.minecraft.server.level.ServerPlayer
|
import net.minecraft.server.level.ServerPlayer
|
||||||
import ru.dbotthepony.mc.otm.util.collect.filter
|
import ru.dbotthepony.kommons.collect.filter
|
||||||
import ru.dbotthepony.mc.otm.util.collect.toImmutableList
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.function.Predicate
|
import java.util.function.Predicate
|
||||||
|
|
||||||
@ -46,9 +45,9 @@ abstract class MCriterionTrigger<T : MCriterionTrigger<T>.AbstractInstance>(val
|
|||||||
|
|
||||||
val context = EntityPredicate.createContext(player, player)
|
val context = EntityPredicate.createContext(player, player)
|
||||||
|
|
||||||
listeners.iterator()
|
listeners.stream()
|
||||||
.filter { predicate.test(it.trigger) && it.trigger.playerPredicate.map { it.matches(context) }.orElse(true) }
|
.filter { predicate.test(it.trigger) && it.trigger.playerPredicate.map { it.matches(context) }.orElse(true) }
|
||||||
.toImmutableList()
|
.toList()
|
||||||
.forEach { it.run(advancements) }
|
.forEach { it.run(advancements) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -321,3 +321,9 @@ fun RegistryFriendlyByteBuf.readComponent(): Component {
|
|||||||
fun InputStream.readItemType(): Item {
|
fun InputStream.readItemType(): Item {
|
||||||
return BuiltInRegistries.ITEM.byId(readVarIntLE())
|
return BuiltInRegistries.ITEM.byId(readVarIntLE())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun FriendlyByteBuf.writeBigInteger(value: BigInteger) {
|
||||||
|
writeByteArray(value.toByteArray())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun FriendlyByteBuf.readBigInteger(byteLimit: Int = 128) = BigInteger(readByteArray(byteLimit))
|
||||||
|
@ -6,6 +6,7 @@ import net.minecraft.util.RandomSource
|
|||||||
import net.minecraft.world.level.ChunkPos
|
import net.minecraft.world.level.ChunkPos
|
||||||
import net.minecraft.world.level.Level
|
import net.minecraft.world.level.Level
|
||||||
import net.minecraft.world.level.LevelAccessor
|
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.Blocks
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity
|
import net.minecraft.world.level.block.entity.BlockEntity
|
||||||
import net.minecraft.world.level.block.state.BlockState
|
import net.minecraft.world.level.block.state.BlockState
|
||||||
@ -61,3 +62,12 @@ interface IMatteryLevel {
|
|||||||
* because RNG is not sampled only once per tick, obviously)
|
* because RNG is not sampled only once per tick, obviously)
|
||||||
*/
|
*/
|
||||||
val Level.otmRandom: RandomSource get() = (this as IMatteryLevel).otmRandom ?: random
|
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)
|
||||||
|
}
|
||||||
|
@ -63,34 +63,6 @@ operator fun CraftingInput.Positioned.get(x: Int, y: Int): ItemStack {
|
|||||||
return input.getItem(actualX, actualY)
|
return input.getItem(actualX, actualY)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun FriendlyByteBuf.writeBigInteger(value: BigInteger) {
|
|
||||||
writeByteArray(value.toByteArray())
|
|
||||||
}
|
|
||||||
|
|
||||||
fun FriendlyByteBuf.readBigInteger(byteLimit: Int = 128) = BigInteger(readByteArray(byteLimit))
|
|
||||||
|
|
||||||
fun <V> 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 <V> Map<*, V>.asSupplierArray(): Array<Supplier<V>> {
|
|
||||||
val result = arrayOfNulls<Supplier<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<Supplier<V>>
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <V> Future<V>.asSupplier(): Supplier<V> {
|
fun <V> Future<V>.asSupplier(): Supplier<V> {
|
||||||
return Supplier { get() }
|
return Supplier { get() }
|
||||||
}
|
}
|
||||||
@ -101,11 +73,6 @@ fun <V> runInBackground(block: Callable<V>): Future<V> {
|
|||||||
|
|
||||||
operator fun IItemHandler.get(index: Int): ItemStack = getStackInSlot(index)
|
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 FluidStack.isNotEmpty get() = !isEmpty
|
||||||
inline val ItemStack.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 <E> MutableCollection<E>.addAll(elements: Iterator<E>) {
|
|
||||||
for (item in elements) {
|
|
||||||
add(item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <E> MutableCollection<E>.addAll(elements: Stream<out E>) {
|
|
||||||
for (item in elements) {
|
|
||||||
add(item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <E> Iterable<E>.stream(): Stream<out E> {
|
|
||||||
return StreamSupport.stream(this.spliterator(), false)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <E> Iterator<E>.stream(): Stream<out E> {
|
|
||||||
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(this, 0), false)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Entity.genericPositions(): Collection<Vector> {
|
fun Entity.genericPositions(): Collection<Vector> {
|
||||||
return listOf(
|
return listOf(
|
||||||
position,
|
position,
|
||||||
@ -194,38 +132,6 @@ fun String.toUUID(): UUID {
|
|||||||
return UUID.nameUUIDFromBytes(toByteArray(Charsets.UTF_8))
|
return UUID.nameUUIDFromBytes(toByteArray(Charsets.UTF_8))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T> Array<T>.stream(): Stream<T> = Arrays.stream(this)
|
|
||||||
|
|
||||||
inline fun <T> MutableList<out Reference<out T>>.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 <T> MutableList<out Reference<out T>>.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
|
val ComponentContents.key: String
|
||||||
get() = (this as? TranslatableContents ?: throw ClassCastException("$this is not a TranslatableContents")).key
|
get() = (this as? TranslatableContents ?: throw ClassCastException("$this is not a TranslatableContents")).key
|
||||||
|
|
||||||
|
@ -3,9 +3,9 @@ package ru.dbotthepony.mc.otm.util.chart
|
|||||||
import it.unimi.dsi.fastutil.objects.ObjectIterators
|
import it.unimi.dsi.fastutil.objects.ObjectIterators
|
||||||
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet
|
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet
|
||||||
import net.minecraft.network.RegistryFriendlyByteBuf
|
import net.minecraft.network.RegistryFriendlyByteBuf
|
||||||
import ru.dbotthepony.mc.otm.util.collect.filter
|
import ru.dbotthepony.kommons.collect.filter
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
import ru.dbotthepony.mc.otm.util.collect.toList
|
import ru.dbotthepony.kommons.collect.toList
|
||||||
import ru.dbotthepony.mc.otm.util.ITickable
|
import ru.dbotthepony.mc.otm.util.ITickable
|
||||||
import ru.dbotthepony.mc.otm.network.syncher.DynamicSynchableGroup
|
import ru.dbotthepony.mc.otm.network.syncher.DynamicSynchableGroup
|
||||||
import ru.dbotthepony.mc.otm.network.syncher.IRemoteState
|
import ru.dbotthepony.mc.otm.network.syncher.IRemoteState
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package ru.dbotthepony.mc.otm.util.chart
|
package ru.dbotthepony.mc.otm.util.chart
|
||||||
|
|
||||||
import net.minecraft.network.RegistryFriendlyByteBuf
|
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.util.math.Decimal
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.util.chart
|
|||||||
|
|
||||||
import com.mojang.serialization.Codec
|
import com.mojang.serialization.Codec
|
||||||
import net.minecraft.network.RegistryFriendlyByteBuf
|
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.util.math.Decimal
|
||||||
import ru.dbotthepony.mc.otm.data.codec.DecimalCodec
|
import ru.dbotthepony.mc.otm.data.codec.DecimalCodec
|
||||||
import ru.dbotthepony.mc.otm.network.MatteryStreamCodec
|
import ru.dbotthepony.mc.otm.network.MatteryStreamCodec
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package ru.dbotthepony.mc.otm.util.collect
|
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.EnumMap
|
||||||
import java.util.function.BooleanSupplier
|
import java.util.function.BooleanSupplier
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package ru.dbotthepony.mc.otm.util.collect
|
package ru.dbotthepony.mc.otm.util.collect
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap
|
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.function.BooleanSupplier
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import it.unimi.dsi.fastutil.ints.IntComparator
|
|||||||
import it.unimi.dsi.fastutil.ints.IntIterators
|
import it.unimi.dsi.fastutil.ints.IntIterators
|
||||||
import it.unimi.dsi.fastutil.ints.IntSet
|
import it.unimi.dsi.fastutil.ints.IntSet
|
||||||
import it.unimi.dsi.fastutil.ints.IntSortedSet
|
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 {
|
class IntRange2Set private constructor(private val first: Int, private val last: Int) : IntSortedSet {
|
||||||
constructor(range: IntRange) : this(range.first, range.last) {
|
constructor(range: IntRange) : this(range.first, range.last) {
|
||||||
|
@ -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<T>(private val parent: Iterator<T>, private val predicate: Predicate<in T>, private var value: T) : MutableIterator<T> {
|
|
||||||
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<T>).remove()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class MappingIterator<T, R>(private val parent: Iterator<T>, private val mapper: (T) -> R) : MutableIterator<R> {
|
|
||||||
override fun hasNext(): Boolean {
|
|
||||||
return parent.hasNext()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun next(): R {
|
|
||||||
return mapper.invoke(parent.next())
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun remove() {
|
|
||||||
(parent as MutableIterator<T>).remove()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class FlatMappingIterator<T, R>(private val parent: Iterator<T>, private val mapper: (T) -> Iterator<R>) : MutableIterator<R> {
|
|
||||||
private var current: Iterator<R> = mapper.invoke(parent.next())
|
|
||||||
private var last: Iterator<R>? = 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<R>? ?: throw NoSuchElementException()).remove()
|
|
||||||
last = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class LimitingIterator<T>(private val parent: Iterator<T>, private val limit: Long) : Iterator<T> {
|
|
||||||
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<T>(private val parent: Iterator<T>, skip: Long) : MutableIterator<T> {
|
|
||||||
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<T>).remove()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> concatIterators(): MutableIterator<T> {
|
|
||||||
return ObjectIterators.EMPTY_ITERATOR as MutableIterator<T>
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> concatIterators(a: Iterator<T>): MutableIterator<T> {
|
|
||||||
return a as MutableIterator<T>
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> concatIterators(iterators: Iterable<Iterator<T>>): MutableIterator<T> {
|
|
||||||
return iterators.iterator().flatMap { it }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> concatIterators(vararg iterators: Iterator<T>): MutableIterator<T> {
|
|
||||||
return iterators.iterator().flatMap { it }
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Filters elements of [this] iterator
|
|
||||||
*
|
|
||||||
* Resulting [Iterator] is [MutableIterator] if [this] is
|
|
||||||
*/
|
|
||||||
fun <T> Iterator<T>.filter(condition: Predicate<in T>): MutableIterator<T> {
|
|
||||||
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 <T, R> Iterator<T>.map(mapper: (T) -> R): MutableIterator<R> {
|
|
||||||
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 <T, R> Iterator<T>.flatMap(mapper: (T) -> Iterator<R>): MutableIterator<R> {
|
|
||||||
if (!hasNext()) {
|
|
||||||
return emptyIterator()
|
|
||||||
}
|
|
||||||
|
|
||||||
return FlatMappingIterator(this, mapper)
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fun <T> Iterator<T>.reduce(identity: T, reducer: (T, T) -> T): T {
|
|
||||||
var result = identity
|
|
||||||
while (hasNext()) result = reducer.invoke(result, next())
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> Iterator<T?>.filterNotNull(): MutableIterator<T> = filter { it != null } as MutableIterator<T>
|
|
||||||
|
|
||||||
inline fun <reified T> Iterator<*>.filterIsInstance(): MutableIterator<T> = filter { it is T } as MutableIterator<T>
|
|
||||||
|
|
||||||
fun <T> Iterator<T>.any(predicate: Predicate<in T>): Boolean {
|
|
||||||
while (hasNext())
|
|
||||||
if (predicate.test(next()))
|
|
||||||
return true
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fun <T> Iterator<T>.any(predicate: (T) -> Boolean): Boolean {
|
|
||||||
while (hasNext())
|
|
||||||
if (predicate.invoke(next()))
|
|
||||||
return true
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> Iterator<T>.all(predicate: Predicate<in T>): Boolean {
|
|
||||||
while (hasNext())
|
|
||||||
if (!predicate.test(next()))
|
|
||||||
return false
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fun <T> Iterator<T>.all(predicate: (T) -> Boolean): Boolean {
|
|
||||||
while (hasNext())
|
|
||||||
if (!predicate.invoke(next()))
|
|
||||||
return false
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> Iterator<T>.none(predicate: Predicate<in T>): Boolean {
|
|
||||||
while (hasNext())
|
|
||||||
if (predicate.test(next()))
|
|
||||||
return false
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fun <T> Iterator<T>.none(predicate: (T) -> Boolean): Boolean {
|
|
||||||
while (hasNext())
|
|
||||||
if (predicate.invoke(next()))
|
|
||||||
return false
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T, A, R> Iterator<T>.collect(collector: Collector<T, A, R>): R {
|
|
||||||
val accumulator = collector.accumulator()
|
|
||||||
val instance = collector.supplier().get()
|
|
||||||
|
|
||||||
for (value in this) {
|
|
||||||
accumulator.accept(instance, value)
|
|
||||||
}
|
|
||||||
|
|
||||||
return collector.finisher().apply(instance)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> Iterator<T>.toList(expectedSize: Int = 16): MutableList<T> {
|
|
||||||
val result = ArrayList<T>(expectedSize)
|
|
||||||
result.addAll(this)
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> Iterator<T>.toImmutableList(expectedSize: Int = 16): List<T> {
|
|
||||||
if (!hasNext())
|
|
||||||
return emptyList()
|
|
||||||
|
|
||||||
return toList(expectedSize)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T : Any> Iterator<T>.find(): Optional<T> {
|
|
||||||
if (hasNext()) {
|
|
||||||
return Optional.of(next())
|
|
||||||
}
|
|
||||||
|
|
||||||
return Optional.empty<T>()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> Iterator<T>.limit(limit: Long): Iterator<T> = LimitingIterator(this, limit)
|
|
||||||
fun <T> Iterator<T>.skip(skip: Long): Iterator<T> = if (skip == 0L) this else SkippingIterator(this, skip)
|
|
||||||
|
|
||||||
inline fun <T> Iterator<T>.forEach(action: (T) -> Unit) {
|
|
||||||
for (value in this) {
|
|
||||||
action.invoke(value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T : Any> Iterator<T>.min(comparator: Comparator<T>): Optional<T> {
|
|
||||||
if (!hasNext()) {
|
|
||||||
return Optional.empty<T>()
|
|
||||||
}
|
|
||||||
|
|
||||||
var min = next()
|
|
||||||
|
|
||||||
for (value in this) {
|
|
||||||
if (comparator.compare(min, value) > 0) {
|
|
||||||
min = value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Optional.of(min)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T : Any> Iterator<T>.max(comparator: Comparator<T>): Optional<T> {
|
|
||||||
if (!hasNext()) {
|
|
||||||
return Optional.empty<T>()
|
|
||||||
}
|
|
||||||
|
|
||||||
var max = next()
|
|
||||||
|
|
||||||
for (value in this) {
|
|
||||||
if (comparator.compare(max, value) < 0) {
|
|
||||||
max = value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Optional.of(max)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> Iterator<T>.peek(peeker: (T) -> Unit): MutableIterator<T> {
|
|
||||||
return object : MutableIterator<T> {
|
|
||||||
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<T>).remove()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> Iterator<T>.maybe(): T? {
|
|
||||||
return if (hasNext())
|
|
||||||
next()
|
|
||||||
else
|
|
||||||
null
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> emptyIterator(): MutableIterator<T> {
|
|
||||||
return ObjectIterators.emptyIterator()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> iteratorOf(value: T): MutableIterator<T> {
|
|
||||||
return ObjectIterators.singleton(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> iteratorOf(vararg value: T): MutableIterator<T> {
|
|
||||||
return ObjectIterators.wrap(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> Iterator<T>.toStream(): Stream<T> {
|
|
||||||
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(this, 0), false)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> Iterator<T>.allEqual(): Boolean {
|
|
||||||
if (hasNext()) {
|
|
||||||
val v = next()
|
|
||||||
|
|
||||||
while (hasNext()) {
|
|
||||||
if (v != next()) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> Iterator<T>.count(): Long {
|
|
||||||
var count = 0L
|
|
||||||
while (hasNext()) count++
|
|
||||||
return count
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
package ru.dbotthepony.mc.otm.util.collect
|
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.concurrent.Future
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
|
@ -2,7 +2,7 @@ package ru.dbotthepony.mc.otm.util.collect
|
|||||||
|
|
||||||
import com.google.common.collect.ImmutableSet
|
import com.google.common.collect.ImmutableSet
|
||||||
import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap
|
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.function.Supplier
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
|
|
||||||
|
@ -3,6 +3,8 @@ package ru.dbotthepony.mc.otm.util.collect
|
|||||||
import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenCustomHashSet
|
import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenCustomHashSet
|
||||||
import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet
|
import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet
|
||||||
import it.unimi.dsi.fastutil.objects.ObjectSet
|
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 ru.dbotthepony.mc.otm.util.HashedWeakReference
|
||||||
import java.lang.ref.ReferenceQueue
|
import java.lang.ref.ReferenceQueue
|
||||||
|
|
||||||
|
@ -13,9 +13,9 @@ import org.joml.Matrix3f
|
|||||||
import org.joml.Matrix4f
|
import org.joml.Matrix4f
|
||||||
import org.joml.Quaternionf
|
import org.joml.Quaternionf
|
||||||
import org.joml.Vector3f
|
import org.joml.Vector3f
|
||||||
import ru.dbotthepony.mc.otm.util.collect.filter
|
import ru.dbotthepony.kommons.collect.filter
|
||||||
import ru.dbotthepony.mc.otm.util.collect.flatMap
|
import ru.dbotthepony.kommons.collect.flatMap
|
||||||
import ru.dbotthepony.mc.otm.util.collect.map
|
import ru.dbotthepony.kommons.collect.map
|
||||||
import java.lang.ref.SoftReference
|
import java.lang.ref.SoftReference
|
||||||
import java.util.stream.Stream
|
import java.util.stream.Stream
|
||||||
import java.util.stream.StreamSupport
|
import java.util.stream.StreamSupport
|
||||||
|
@ -3,7 +3,7 @@ package ru.dbotthepony.mc.otm.tests
|
|||||||
import org.junit.jupiter.api.DisplayName
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import ru.dbotthepony.mc.otm.util.collect.WeakHashSet
|
import ru.dbotthepony.mc.otm.util.collect.WeakHashSet
|
||||||
import ru.dbotthepony.mc.otm.util.collect.forEach
|
import ru.dbotthepony.kommons.collect.forEach
|
||||||
|
|
||||||
object WeakHashSetTests {
|
object WeakHashSetTests {
|
||||||
@Test
|
@Test
|
||||||
|
Loading…
Reference in New Issue
Block a user