Skip to content

Commit

Permalink
[ADD] - starting save/load custom portals (not finish)
Browse files Browse the repository at this point in the history
  • Loading branch information
kraizzman committed Aug 4, 2024
1 parent cd27888 commit aaa5fbf
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
36 changes: 36 additions & 0 deletions src/main/java/fr/unreal852/quantum/portal/QuantumPortalData.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package fr.unreal852.quantum.portal

import fr.unreal852.quantum.utils.Extensions.getIdentifier
import fr.unreal852.quantum.world.QuantumWorldData
import net.minecraft.nbt.NbtCompound
import net.minecraft.util.Identifier
import net.minecraft.world.Difficulty
import xyz.nucleoid.fantasy.RuntimeWorldConfig

class QuantumPortalData {

Expand All @@ -18,6 +23,13 @@ class QuantumPortalData {
var portalColor: Int = 0
private set

fun writeToNbt(nbt: NbtCompound) {
nbt.putString(DESTINATION_KEY, destinationId.toString())
nbt.putString(BLOCK_KEY, portalBlockId.toString())
nbt.putString(IGNITE_KEY, portalIgniteItemId.toString())
nbt.putInt(COLOR_KEY, portalColor)
}

constructor()

constructor(destId: Identifier, portalBlockId: Identifier, portalIgniteItemId: Identifier, color: Int) {
Expand All @@ -26,4 +38,28 @@ class QuantumPortalData {
this.portalIgniteItemId = portalIgniteItemId
this.portalColor = color
}

companion object {

private const val DESTINATION_KEY = "destinationId"
private const val BLOCK_KEY = "blockId"
private const val IGNITE_KEY = "igniteId"
private const val COLOR_KEY = "color"

fun fromNbt(nbt: NbtCompound): QuantumPortalData {

val destinationId = nbt.getIdentifier(DESTINATION_KEY)
val blockId = nbt.getIdentifier(BLOCK_KEY)
val igniteId = nbt.getIdentifier(IGNITE_KEY)
val color = nbt.getInt(COLOR_KEY)

val quantumPortalData = QuantumPortalData(
destinationId,
blockId,
igniteId,
color
)
return quantumPortalData
}
}
}
26 changes: 26 additions & 0 deletions src/main/java/fr/unreal852/quantum/state/QuantumStorage.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package fr.unreal852.quantum.state

import fr.unreal852.quantum.Quantum
import fr.unreal852.quantum.portal.QuantumPortalData
import fr.unreal852.quantum.world.QuantumWorldData
import net.minecraft.nbt.NbtCompound
import net.minecraft.nbt.NbtList
Expand All @@ -11,28 +12,48 @@ import net.minecraft.world.PersistentState
class QuantumStorage : PersistentState() {

private val worlds: MutableList<QuantumWorldData> = ArrayList()
private val portals: MutableList<QuantumPortalData> = ArrayList()

fun getWorlds(): List<QuantumWorldData> {
return worlds
}

fun getPortals(): List<QuantumPortalData> {
return portals
}

fun addWorldData(quantumWorldData: QuantumWorldData) {
worlds.add(quantumWorldData)
markDirty()
}

fun addPortalData(quantumPortalData: QuantumPortalData) {
portals.add(quantumPortalData)
markDirty()
}

fun removeWorldData(quantumWorldData: QuantumWorldData) {
worlds.remove(quantumWorldData)
markDirty()
}

fun removePortalData(quantumPortalData: QuantumPortalData) {
portals.remove(quantumPortalData)
markDirty()
}

override fun writeNbt(nbt: NbtCompound, registryLookup: WrapperLookup): NbtCompound {
val worldsNbtList = NbtList()
val portalsNbt = NbtList()
for (entry in worlds) {
val entryNbt = NbtCompound()
entry.writeToNbt(entryNbt)
worldsNbtList.add(entryNbt)
}
for (entry in portals) {
val entryNbt = NbtCompound()

}
nbt.put(WORLDS_KEY, worldsNbtList)
return nbt
}
Expand Down Expand Up @@ -60,10 +81,15 @@ class QuantumStorage : PersistentState() {
private fun fromNbt(nbt: NbtCompound, registryLookup: WrapperLookup): QuantumStorage {
val quantumStorage = QuantumStorage()
val worldsNbtList = nbt.getList(WORLDS_KEY, 10) // 10 is the NbtCompound type
val portalsNbt = nbt.getList(PORTALS_KEY, 10)
for (i in worldsNbtList.indices) {
val entryNbt = worldsNbtList.getCompound(i)
quantumStorage.worlds.add(QuantumWorldData.fromNbt(entryNbt))
}
for (i in portalsNbt.indices) {
val entryNbt = portalsNbt.getCompound(i)
quantumStorage.portals.add(QuantumPortalData.fromNbt(entryNbt))
}
return quantumStorage
}
}
Expand Down

0 comments on commit aaa5fbf

Please sign in to comment.