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 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>()
|
||||
|
||||
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.Int2ObjectAVLTreeMap
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectFunction
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.Minecraft
|
||||
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_) {
|
||||
|
||||
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) {
|
||||
private val random = Random()
|
||||
|
@ -4,6 +4,7 @@ import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectFunction
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.client.gui.Font
|
||||
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 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.Int2ObjectArrayMap
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectFunction
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
|
||||
import it.unimi.dsi.fastutil.objects.ReferenceArraySet
|
||||
import net.minecraft.network.FriendlyByteBuf
|
||||
import net.minecraft.world.SimpleContainer
|
||||
@ -37,7 +38,7 @@ private class MenuConfiguration(
|
||||
}
|
||||
|
||||
private val slotPositions = Int2ObjectArrayMap<List<SlotPos>>()
|
||||
private val rows = Int2ObjectAVLTreeMap<List<Slot>>()
|
||||
private val rows = Int2ObjectOpenHashMap<List<Slot>>()
|
||||
val isIncomplete: Boolean
|
||||
|
||||
private fun getRow(index: Int, matteryPlayer: MatteryPlayerCapability) = rows.computeIfAbsent(index, Int2ObjectFunction {
|
||||
@ -200,6 +201,7 @@ class InventoryScrollPacket(val scroll: Int) : MatteryPacket {
|
||||
}
|
||||
|
||||
menuConfigurations.computeIfAbsent(containerMenu) {
|
||||
// do not use hash map because we need keys be iterated in natural order
|
||||
val originalSlots = Int2ObjectAVLTreeMap<Slot>()
|
||||
|
||||
for (slot in it.slots) {
|
||||
|
@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.menu.data
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import net.minecraft.network.FriendlyByteBuf
|
||||
@ -205,7 +206,7 @@ open class NetworkedItemView(val ply: Player, val menu: MatteryMenu, val remote:
|
||||
get() = ITEM_STORAGE
|
||||
|
||||
// this (how client see and interact with)
|
||||
val localState = Int2ObjectAVLTreeMap<NetworkedItem>()
|
||||
val localState = Int2ObjectOpenHashMap<NetworkedItem>()
|
||||
|
||||
val sortedView = LinkedList<NetworkedItem>()
|
||||
var sorter: Comparator<ItemStack> = NAME_SORTER
|
||||
|
@ -1,6 +1,8 @@
|
||||
package ru.dbotthepony.mc.otm.network
|
||||
|
||||
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.FastByteArrayOutputStream
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArraySet
|
||||
@ -1064,9 +1066,9 @@ class FieldSynchronizer(private val callback: Runnable, private val alwaysCallCa
|
||||
return values
|
||||
}
|
||||
|
||||
private val idToField = Int2ObjectAVLTreeMap<IField<*>>()
|
||||
private val idToField = Int2ObjectOpenHashMap<IField<*>>()
|
||||
private val missingFields = ObjectArraySet<String>()
|
||||
private val missingFieldsMap = Int2ObjectAVLTreeMap<String>()
|
||||
private val missingFieldsMap = Int2ObjectArrayMap<String>()
|
||||
|
||||
fun applyNetworkPayload(stream: InputStream): Int {
|
||||
if (stream.read() > 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user