Replace Int2Object avl maps with hash maps
This commit is contained in:
parent
e971a6014d
commit
400b92faf6
@ -46,6 +46,7 @@ import kotlin.collections.HashMap
|
|||||||
|
|
||||||
private class SlotTuple(val slot: Int, val stack: ItemStack)
|
private class SlotTuple(val slot: Int, val stack: ItemStack)
|
||||||
private class TrackedTuple(override val stack: ItemStackWrapper, override val id: UUID) : IStorageTuple<ItemStackWrapper> {
|
private class TrackedTuple(override val stack: ItemStackWrapper, override val id: UUID) : IStorageTuple<ItemStackWrapper> {
|
||||||
|
// do not use hash map because we need keys to be iterated in natural order
|
||||||
val children = Int2ObjectAVLTreeMap<SlotTuple>()
|
val children = Int2ObjectAVLTreeMap<SlotTuple>()
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
|
@ -6,6 +6,7 @@ import com.mojang.blaze3d.vertex.PoseStack
|
|||||||
import it.unimi.dsi.fastutil.ints.Int2FloatAVLTreeMap
|
import it.unimi.dsi.fastutil.ints.Int2FloatAVLTreeMap
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectFunction
|
import it.unimi.dsi.fastutil.ints.Int2ObjectFunction
|
||||||
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
|
||||||
import net.minecraft.ChatFormatting
|
import net.minecraft.ChatFormatting
|
||||||
import net.minecraft.client.Minecraft
|
import net.minecraft.client.Minecraft
|
||||||
import net.minecraft.network.chat.Component
|
import net.minecraft.network.chat.Component
|
||||||
@ -524,7 +525,7 @@ class AndroidStationScreen constructor(p_97741_: AndroidStationMenu, p_97742_: I
|
|||||||
MatteryScreen<AndroidStationMenu>(p_97741_, p_97742_, p_97743_) {
|
MatteryScreen<AndroidStationMenu>(p_97741_, p_97742_, p_97743_) {
|
||||||
|
|
||||||
private fun makeCanvas(isPreview: Boolean): DraggableCanvasPanel<AndroidStationScreen> {
|
private fun makeCanvas(isPreview: Boolean): DraggableCanvasPanel<AndroidStationScreen> {
|
||||||
val rows = Int2ObjectAVLTreeMap<EditablePanel<AndroidStationScreen>>()
|
val rows = Int2ObjectOpenHashMap<EditablePanel<AndroidStationScreen>>()
|
||||||
|
|
||||||
val canvas = object : DraggableCanvasPanel<AndroidStationScreen>(this@AndroidStationScreen, null) {
|
val canvas = object : DraggableCanvasPanel<AndroidStationScreen>(this@AndroidStationScreen, null) {
|
||||||
private val random = Random()
|
private val random = Random()
|
||||||
|
@ -4,6 +4,7 @@ import com.mojang.blaze3d.systems.RenderSystem
|
|||||||
import com.mojang.blaze3d.vertex.PoseStack
|
import com.mojang.blaze3d.vertex.PoseStack
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectFunction
|
import it.unimi.dsi.fastutil.ints.Int2ObjectFunction
|
||||||
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
|
||||||
import net.minecraft.ChatFormatting
|
import net.minecraft.ChatFormatting
|
||||||
import net.minecraft.client.gui.Font
|
import net.minecraft.client.gui.Font
|
||||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
|
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
|
||||||
@ -63,7 +64,7 @@ abstract class MatteryScreen<T : MatteryMenu>(menu: T, inventory: Inventory, tit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val inventorySlotsRows = Int2ObjectAVLTreeMap<EditablePanel<MatteryScreen<*>>>()
|
private val inventorySlotsRows = Int2ObjectOpenHashMap<EditablePanel<MatteryScreen<*>>>()
|
||||||
private lateinit var slotListCanvas: EditablePanel<MatteryScreen<*>>
|
private lateinit var slotListCanvas: EditablePanel<MatteryScreen<*>>
|
||||||
private lateinit var inventoryScrollbar: DiscreteScrollBarPanel<MatteryScreen<*>>
|
private lateinit var inventoryScrollbar: DiscreteScrollBarPanel<MatteryScreen<*>>
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.compat
|
|||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap
|
import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectFunction
|
import it.unimi.dsi.fastutil.ints.Int2ObjectFunction
|
||||||
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
|
||||||
import it.unimi.dsi.fastutil.objects.ReferenceArraySet
|
import it.unimi.dsi.fastutil.objects.ReferenceArraySet
|
||||||
import net.minecraft.network.FriendlyByteBuf
|
import net.minecraft.network.FriendlyByteBuf
|
||||||
import net.minecraft.world.SimpleContainer
|
import net.minecraft.world.SimpleContainer
|
||||||
@ -37,7 +38,7 @@ private class MenuConfiguration(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val slotPositions = Int2ObjectArrayMap<List<SlotPos>>()
|
private val slotPositions = Int2ObjectArrayMap<List<SlotPos>>()
|
||||||
private val rows = Int2ObjectAVLTreeMap<List<Slot>>()
|
private val rows = Int2ObjectOpenHashMap<List<Slot>>()
|
||||||
val isIncomplete: Boolean
|
val isIncomplete: Boolean
|
||||||
|
|
||||||
private fun getRow(index: Int, matteryPlayer: MatteryPlayerCapability) = rows.computeIfAbsent(index, Int2ObjectFunction {
|
private fun getRow(index: Int, matteryPlayer: MatteryPlayerCapability) = rows.computeIfAbsent(index, Int2ObjectFunction {
|
||||||
@ -200,6 +201,7 @@ class InventoryScrollPacket(val scroll: Int) : MatteryPacket {
|
|||||||
}
|
}
|
||||||
|
|
||||||
menuConfigurations.computeIfAbsent(containerMenu) {
|
menuConfigurations.computeIfAbsent(containerMenu) {
|
||||||
|
// do not use hash map because we need keys be iterated in natural order
|
||||||
val originalSlots = Int2ObjectAVLTreeMap<Slot>()
|
val originalSlots = Int2ObjectAVLTreeMap<Slot>()
|
||||||
|
|
||||||
for (slot in it.slots) {
|
for (slot in it.slots) {
|
||||||
|
@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.menu.data
|
|||||||
|
|
||||||
import com.mojang.blaze3d.platform.InputConstants
|
import com.mojang.blaze3d.platform.InputConstants
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
||||||
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
|
||||||
import net.minecraft.client.Minecraft
|
import net.minecraft.client.Minecraft
|
||||||
import net.minecraft.client.gui.screens.Screen
|
import net.minecraft.client.gui.screens.Screen
|
||||||
import net.minecraft.network.FriendlyByteBuf
|
import net.minecraft.network.FriendlyByteBuf
|
||||||
@ -205,7 +206,7 @@ open class NetworkedItemView(val ply: Player, val menu: MatteryMenu, val remote:
|
|||||||
get() = ITEM_STORAGE
|
get() = ITEM_STORAGE
|
||||||
|
|
||||||
// this (how client see and interact with)
|
// this (how client see and interact with)
|
||||||
val localState = Int2ObjectAVLTreeMap<NetworkedItem>()
|
val localState = Int2ObjectOpenHashMap<NetworkedItem>()
|
||||||
|
|
||||||
val sortedView = LinkedList<NetworkedItem>()
|
val sortedView = LinkedList<NetworkedItem>()
|
||||||
var sorter: Comparator<ItemStack> = NAME_SORTER
|
var sorter: Comparator<ItemStack> = NAME_SORTER
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package ru.dbotthepony.mc.otm.network
|
package ru.dbotthepony.mc.otm.network
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
||||||
|
import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap
|
||||||
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
|
||||||
import it.unimi.dsi.fastutil.io.FastByteArrayInputStream
|
import it.unimi.dsi.fastutil.io.FastByteArrayInputStream
|
||||||
import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream
|
import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream
|
||||||
import it.unimi.dsi.fastutil.objects.ObjectArraySet
|
import it.unimi.dsi.fastutil.objects.ObjectArraySet
|
||||||
@ -1064,9 +1066,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
|
|||||||
return values
|
return values
|
||||||
}
|
}
|
||||||
|
|
||||||
private val idToField = Int2ObjectAVLTreeMap<IField<*>>()
|
private val idToField = Int2ObjectOpenHashMap<IField<*>>()
|
||||||
private val missingFields = ObjectArraySet<String>()
|
private val missingFields = ObjectArraySet<String>()
|
||||||
private val missingFieldsMap = Int2ObjectAVLTreeMap<String>()
|
private val missingFieldsMap = Int2ObjectArrayMap<String>()
|
||||||
|
|
||||||
fun applyNetworkPayload(stream: InputStream): Int {
|
fun applyNetworkPayload(stream: InputStream): Int {
|
||||||
if (stream.read() > 0) {
|
if (stream.read() > 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user