Skip to content

Commit 8af62cb

Browse files
committed
switch to published model version
1 parent cbf0f41 commit 8af62cb

File tree

4 files changed

+50
-21
lines changed

4 files changed

+50
-21
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ travelers_titles_version=oUSK4sOQ
1919
yungs_api_version=PJOYAmAs
2020
dynmap_version=RtI5TFAi
2121
graphql_client_version=8.1.0
22-
atheneum_version=0.0.0-dev
22+
atheneum_version=0.0.7-alpha
2323

2424
repository=voidshake/atheneumconnector
2525
modrinth_project_id=WIPHNZss

src/main/kotlin/com/possible_triangle/atheneum_connector/LocationCache.kt

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ package com.possible_triangle.atheneum_connector
22

33
import com.mojang.datafixers.util.Either
44
import com.possible_triangle.atheneum_connector.generated.AreasQuery
5+
import com.possible_triangle.atheneum_connector.generated.PlacesQuery
56
import com.possible_triangle.atheneum_connector.generated.areasquery.Area
67
import com.possible_triangle.atheneum_connector.generated.areasquery.FlatPoint
78
import com.possible_triangle.atheneum_connector.generated.placesquery.Place
9+
import kotlinx.coroutines.async
810
import kotlinx.coroutines.runBlocking
911
import net.minecraft.core.BlockPos
1012
import net.minecraft.core.SectionPos.blockToSectionCoord
@@ -14,29 +16,55 @@ import net.minecraft.resources.ResourceLocation
1416
import net.minecraft.world.level.ChunkPos
1517
import net.minecraft.world.level.Level
1618

17-
class LocationCache<T> {
19+
class LocationCache<T>(private val getId: (T) -> Int) {
1820

1921
private val lookup = hashMapOf<ResourceKey<Level>, MutableMap<ChunkPos, T>>()
2022
private val reverseLookup = hashMapOf<Int, Pair<ResourceKey<Level>, List<ChunkPos>>>()
2123

24+
fun get(level: ResourceKey<Level>, chunk: ChunkPos): T? {
25+
return lookup[level]?.get(chunk)
26+
}
27+
28+
fun set(level: ResourceKey<Level>, value: T, chunks: List<ChunkPos>) {
29+
reverseLookup[getId(value)] = level to chunks
30+
31+
lookup.getOrPut(level, ::hashMapOf).apply {
32+
chunks.forEach { put(it, value) }
33+
}
34+
}
35+
2236
companion object {
23-
private val AREAS = LocationCache<Area>()
37+
private val AREAS = LocationCache<Area> { it.id }
38+
private val PLACES = LocationCache<Place> { it.id }
2439

2540
fun reload() {
2641
AREAS.clear()
42+
PLACES.clear()
2743
initialize()
2844
}
2945

46+
private fun String.levelKey() = ResourceKey.create(Registries.DIMENSION, ResourceLocation(this))
47+
48+
private fun chunkAt(x: Int, z: Int) = ChunkPos(
49+
blockToSectionCoord(x),
50+
blockToSectionCoord(z),
51+
)
52+
3053
fun initialize() = runBlocking {
31-
val areas = GraphQL.query(AreasQuery()).areas
32-
areas.nodes.forEach { area ->
33-
val level = ResourceKey.create(Registries.DIMENSION, ResourceLocation(area.world))
54+
val areasQuery = async { GraphQL.query(AreasQuery()) }
55+
val placesQuery = async { GraphQL.query(PlacesQuery()) }
56+
57+
areasQuery.await().areas.nodes.forEach { area ->
58+
val level = area.world.levelKey()
3459
val chunks = area.points.containingChunks()
35-
AREAS.reverseLookup[area.id] = level to chunks
60+
AREAS.set(level, area, chunks)
61+
}
3662

37-
AREAS.lookup.getOrPut(level, ::hashMapOf).apply {
38-
chunks.forEach { put(it, area) }
39-
}
63+
placesQuery.await().places.nodes.forEach { place ->
64+
val level = place.pos.world.levelKey()
65+
val chunks = listOf(chunkAt(place.pos.x, place.pos.z))
66+
67+
PLACES.set(level, place, chunks)
4068
}
4169
}
4270

@@ -69,20 +97,17 @@ class LocationCache<T> {
6997
}
7098

7199
odd
72-
}.map {
73-
ChunkPos(
74-
blockToSectionCoord(it.x),
75-
blockToSectionCoord(it.z),
76-
)
77-
}
100+
}.map { chunkAt(it.x, it.z) }
78101
}
79102

80103
fun containing(level: ResourceKey<Level>, pos: BlockPos): Either<Area, Place>? {
81104
val chunk = ChunkPos(pos)
82105

83-
val area = AREAS.lookup[level]?.get(chunk)
84-
85-
return area?.let { Either.left(area) }
106+
return PLACES.get(level, chunk)?.let {
107+
Either.right(it)
108+
} ?: AREAS.get(level, chunk)?.let {
109+
Either.left(it)
110+
}
86111
}
87112
}
88113

src/main/kotlin/com/possible_triangle/atheneum_connector/events/PlayerEvents.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ object PlayerEvents {
4141
val location = LocationCache.containing(level.dimension(), player.onPos) ?: return
4242

4343
location.ifLeft {
44-
Network.sendTo(player, DisplayTitlePaket(Component.literal("You entered ${it.name}"), "area-${it.id}"))
44+
Network.sendTo(player, DisplayTitlePaket(Component.translatable("travelerstitles.entered_area", it.name), "area-${it.id}"))
4545
}
4646

4747
location.ifRight {
4848
Network.sendTo(
4949
player,
50-
DisplayTitlePaket(Component.literal("You are close to ${it.name}"), "place-${it.id}")
50+
DisplayTitlePaket(Component.translatable("travelerstitles.at_place", it.name), "place-${it.id}")
5151
)
5252
}
5353
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"travelerstitles.at_place": "%s",
3+
"travelerstitles.entered_area": "%s"
4+
}

0 commit comments

Comments
 (0)