Skip to content

Commit

Permalink
start on 1.21
Browse files Browse the repository at this point in the history
  • Loading branch information
tasgon committed Aug 19, 2024
1 parent f07aba8 commit b511b76
Show file tree
Hide file tree
Showing 21 changed files with 133 additions and 167 deletions.
7 changes: 4 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
buildscript {
ext.kotlin_version = '1.9.10'
ext.kotlin_version = '1.9.25'
ext.kotlin_serialization_version = '1.6.0'
repositories {
mavenCentral()
Expand All @@ -10,7 +10,7 @@ buildscript {
}
plugins {
id "architectury-plugin" version "3.4-SNAPSHOT"
id "dev.architectury.loom" version "1.3.+" apply false
id "dev.architectury.loom" version "1.7-SNAPSHOT" apply false
id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.10'
id "me.shedaniel.unified-publishing" version "0.1.+"
id "io.gitlab.arturbosch.detekt" version "1.23.1"
Expand Down Expand Up @@ -70,6 +70,7 @@ allprojects {
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
// for more information about repositories.
maven { url 'https://jitpack.io' }
maven { url "https://maven.neoforged.net/releases/" }
}

tasks.withType(JavaCompile) {
Expand All @@ -78,7 +79,7 @@ allprojects {
// The Minecraft launcher currently installs Java 8 for users, so your mod probably wants to target Java 8 too
// JDK 9 introduced a new way of specifying this that will make sure no newer classes or methods are used.
// We'll use that if it's available, but otherwise we'll use the older option.
def targetVersion = 17
def targetVersion = 21
if (JavaVersion.current().isJava9Compatible()) {
options.release = targetVersion
}
Expand Down
6 changes: 3 additions & 3 deletions common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ dependencies {
}

architectury {
common("forge", "fabric")
common("neoforge", "fabric")
}

java {
Expand Down Expand Up @@ -51,8 +51,8 @@ repositories {
mavenCentral()
}
compileKotlin {
kotlinOptions.jvmTarget = "17"
kotlinOptions.jvmTarget = "21"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "17"
kotlinOptions.jvmTarget = "21"
}
2 changes: 1 addition & 1 deletion common/src/main/kotlin/observable/Observable.kt
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ object Observable {

private val CLIENT_CHAT get() = GameInstance.getClient().gui.chat

val CHANNEL = BetterChannel(ResourceLocation("channel/observable"))
val CHANNEL = BetterChannel(ResourceLocation.fromNamespaceAndPath("observable", "channel"))
val LOGGER: Logger = LogManager.getLogger("Observable")
val PROFILER: Profiler by lazy { Profiler() }
var RESULTS: ProfilingData? = null
Expand Down
12 changes: 4 additions & 8 deletions common/src/main/kotlin/observable/client/BetterCheckbox.kt
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
package observable.client

import net.minecraft.client.Minecraft
import net.minecraft.client.gui.components.Checkbox
import net.minecraft.network.chat.Component

class BetterCheckbox(
fun BetterCheckbox(
x: Int,
y: Int,
width: Int,
height: Int,
component: Component,
default: Boolean,
var callback: ((Boolean) -> Unit)
) : Checkbox(x, y, width, height, component, default) {
override fun onPress() {
super.onPress()
callback(this.selected())
}
}
callback: ((Boolean) -> Unit)
) = Checkbox.builder(component, Minecraft.getInstance().font).pos(x, y).maxWidth(width).selected(default).onValueChange { _, bl -> callback(bl) }.build()
63 changes: 31 additions & 32 deletions common/src/main/kotlin/observable/client/Overlay.kt
Original file line number Diff line number Diff line change
Expand Up @@ -247,16 +247,15 @@ object Overlay {
fun createVBO(camera: Camera) {
Observable.LOGGER.info("Initializing VBO")
vertexBuf?.close()
val buf = BufferBuilder(renderType.bufferSize() * blocks.size)
buf.begin(renderType.mode(), renderType.format())
val buf = BufferBuilder(ByteBufferBuilder(renderType.bufferSize() * blocks.size), renderType.mode(), renderType.format())

var stack = PoseStack()

for (entry in blocks.filter { block -> block.pos.distSqr(camera.blockPosition) < 1_440_000 }) {
drawBlockOutline(entry, stack, camera, buf)
}

val rendered = buf.end()
val rendered = buf.build() ?: return
val vbuf = VertexBuffer(VertexBuffer.Usage.DYNAMIC)
vbuf.bind()
vbuf.upload(rendered)
Expand Down Expand Up @@ -317,35 +316,35 @@ object Overlay {
Vec3.atLowerCornerOf(entry.pos).subtract(camera.position).apply { poseStack.translate(x, y, z) }
val mat = poseStack.last().pose()
entry.color.apply {
buf.vertex(mat, 0F, 1F, 0F).color(r, g, b, a).endVertex()
buf.vertex(mat, 0F, 1F, 1F).color(r, g, b, a).endVertex()
buf.vertex(mat, 1F, 1F, 1F).color(r, g, b, a).endVertex()
buf.vertex(mat, 1F, 1F, 0F).color(r, g, b, a).endVertex()

buf.vertex(mat, 0F, 1F, 0F).color(r, g, b, a).endVertex()
buf.vertex(mat, 1F, 1F, 0F).color(r, g, b, a).endVertex()
buf.vertex(mat, 1F, 0F, 0F).color(r, g, b, a).endVertex()
buf.vertex(mat, 0F, 0F, 0F).color(r, g, b, a).endVertex()

buf.vertex(mat, 1F, 1F, 1F).color(r, g, b, a).endVertex()
buf.vertex(mat, 0F, 1F, 1F).color(r, g, b, a).endVertex()
buf.vertex(mat, 0F, 0F, 1F).color(r, g, b, a).endVertex()
buf.vertex(mat, 1F, 0F, 1F).color(r, g, b, a).endVertex()

buf.vertex(mat, 0F, 1F, 1F).color(r, g, b, a).endVertex()
buf.vertex(mat, 0F, 1F, 0F).color(r, g, b, a).endVertex()
buf.vertex(mat, 0F, 0F, 0F).color(r, g, b, a).endVertex()
buf.vertex(mat, 0F, 0F, 1F).color(r, g, b, a).endVertex()

buf.vertex(mat, 1F, 0F, 1F).color(r, g, b, a).endVertex()
buf.vertex(mat, 1F, 0F, 0F).color(r, g, b, a).endVertex()
buf.vertex(mat, 1F, 1F, 0F).color(r, g, b, a).endVertex()
buf.vertex(mat, 1F, 1F, 1F).color(r, g, b, a).endVertex()

buf.vertex(mat, 1F, 0F, 0F).color(r, g, b, a).endVertex()
buf.vertex(mat, 1F, 0F, 1F).color(r, g, b, a).endVertex()
buf.vertex(mat, 0F, 0F, 1F).color(r, g, b, a).endVertex()
buf.vertex(mat, 0F, 0F, 0F).color(r, g, b, a).endVertex()
buf.addVertex(mat, 0F, 1F, 0F).setColor(r, g, b, a)
buf.addVertex(mat, 0F, 1F, 1F).setColor(r, g, b, a)
buf.addVertex(mat, 1F, 1F, 1F).setColor(r, g, b, a)
buf.addVertex(mat, 1F, 1F, 0F).setColor(r, g, b, a)

buf.addVertex(mat, 0F, 1F, 0F).setColor(r, g, b, a)
buf.addVertex(mat, 1F, 1F, 0F).setColor(r, g, b, a)
buf.addVertex(mat, 1F, 0F, 0F).setColor(r, g, b, a)
buf.addVertex(mat, 0F, 0F, 0F).setColor(r, g, b, a)

buf.addVertex(mat, 1F, 1F, 1F).setColor(r, g, b, a)
buf.addVertex(mat, 0F, 1F, 1F).setColor(r, g, b, a)
buf.addVertex(mat, 0F, 0F, 1F).setColor(r, g, b, a)
buf.addVertex(mat, 1F, 0F, 1F).setColor(r, g, b, a)

buf.addVertex(mat, 0F, 1F, 1F).setColor(r, g, b, a)
buf.addVertex(mat, 0F, 1F, 0F).setColor(r, g, b, a)
buf.addVertex(mat, 0F, 0F, 0F).setColor(r, g, b, a)
buf.addVertex(mat, 0F, 0F, 1F).setColor(r, g, b, a)

buf.addVertex(mat, 1F, 0F, 1F).setColor(r, g, b, a)
buf.addVertex(mat, 1F, 0F, 0F).setColor(r, g, b, a)
buf.addVertex(mat, 1F, 1F, 0F).setColor(r, g, b, a)
buf.addVertex(mat, 1F, 1F, 1F).setColor(r, g, b, a)

buf.addVertex(mat, 1F, 0F, 0F).setColor(r, g, b, a)
buf.addVertex(mat, 1F, 0F, 1F).setColor(r, g, b, a)
buf.addVertex(mat, 0F, 0F, 1F).setColor(r, g, b, a)
buf.addVertex(mat, 0F, 0F, 0F).setColor(r, g, b, a)
}

poseStack.popPose()
Expand Down
4 changes: 2 additions & 2 deletions common/src/main/kotlin/observable/client/ProfileScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -191,12 +191,12 @@ class ProfileScreen : Screen(Component.translatable("screen.observable.profile")
super.render(graphics, i, j, f)
}

override fun mouseScrolled(d: Double, e: Double, f: Double): Boolean {
override fun mouseScrolled(d: Double, e: Double, f: Double, g: Double): Boolean {
(action as? Action.NewProfile)?.apply {
duration += f.roundToInt() * 5
duration = this.duration.coerceIn(5, 60)
}

return super.mouseScrolled(d, e, f)
return super.mouseScrolled(d, e, f, g)
}
}
32 changes: 3 additions & 29 deletions common/src/main/kotlin/observable/net/BetterChannel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,10 @@ import net.minecraft.server.level.ServerPlayer
import org.apache.logging.log4j.LogManager
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import java.lang.Exception
import java.nio.charset.StandardCharsets
import java.util.*
import java.util.function.Supplier
import java.util.zip.*
import kotlin.collections.HashMap
import kotlin.reflect.KType
import kotlin.reflect.typeOf

Expand Down Expand Up @@ -126,7 +125,7 @@ class BetterChannel(id: ResourceLocation) {
inline fun <reified T> register(
noinline consumer: (T, Supplier<NetworkManager.PacketContext>) -> Unit
) {
LOGGER.info("Registering ${T::class.java}")
LOGGER.info("Registering ${T::class.java} as ${UUID.nameUUIDFromBytes(T::class.java.name.toByteArray(StandardCharsets.UTF_8)).toString().replace("-", "")}")
PartialPacketAssembler.register(consumer)
rawChannel.register(
T::class.java,
Expand All @@ -137,37 +136,12 @@ class BetterChannel(id: ResourceLocation) {
LOGGER.info("Registered ${T::class.java}")
}

@OptIn(ExperimentalSerializationApi::class)
inline fun <reified T> registerCompressed(
noinline consumer: (T, Supplier<NetworkManager.PacketContext>) -> Unit
) {
LOGGER.info("Registering ${T::class.java}")
rawChannel.register(
T::class.java,
{ t, buf ->
val bs = ByteArrayOutputStream()
val deflater = Deflater()
deflater.setLevel(Deflater.BEST_COMPRESSION)
val deflaterStream = DeflaterOutputStream(bs, deflater)
deflaterStream.write(ProtoBuf.encodeToByteArray(t))
deflaterStream.close()
buf.writeByteArray(bs.toByteArray())
},
attempt {
val istream = InflaterInputStream(ByteArrayInputStream(it.readByteArray()))
ProtoBuf.decodeFromByteArray<T>(istream.readBytes())
},
validate(consumer)
)
LOGGER.info("Registered ${T::class.java}")
}

fun <T> sendToPlayers(players: List<ServerPlayer>, msg: T) =
rawChannel.sendToPlayers(players, msg)

fun <T> sendToPlayer(player: ServerPlayer, msg: T) = rawChannel.sendToPlayer(player, msg)

@OptIn(ExperimentalStdlibApi::class)
@OptIn(ExperimentalSerializationApi::class)
inline fun <reified T> sendToPlayersSplit(players: List<ServerPlayer>, msg: T) {
val data = ProtoBuf.encodeToByteArray(msg)
val bs = ByteArrayInputStream(data)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ open class ResourceKeySerializer<T>(val registryKey: ResourceKey<out Registry<T>
override val descriptor = delegate.descriptor

override fun deserialize(decoder: Decoder): ResourceKey<T> =
ResourceKey.create(registryKey, ResourceLocation(delegate.deserialize(decoder)))
ResourceKey.create(registryKey, ResourceLocation.parse(delegate.deserialize(decoder)))

override fun serialize(encoder: Encoder, value: ResourceKey<T>) =
delegate.serialize(encoder, value.location().toString())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class ResourceLocationSerializer : KSerializer<ResourceLocation> {
private val delegate = String.serializer()
override val descriptor = delegate.descriptor

override fun deserialize(decoder: Decoder) = ResourceLocation(delegate.deserialize(decoder))
override fun deserialize(decoder: Decoder) = ResourceLocation.parse(delegate.deserialize(decoder))

override fun serialize(encoder: Encoder, value: ResourceLocation) =
delegate.serialize(encoder, value.toString())
Expand Down
4 changes: 2 additions & 2 deletions fabric/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,8 @@ repositories {
mavenCentral()
}
compileKotlin {
kotlinOptions.jvmTarget = "17"
kotlinOptions.jvmTarget = "21"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "17"
kotlinOptions.jvmTarget = "21"
}
35 changes: 10 additions & 25 deletions forge/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,40 +6,25 @@ plugins {

architectury {
platformSetupLoomIde()
forge()
}

loom {

forge {
// useFabricMixin = true

mixinConfig "observable.common.json"
}
neoForge()
}

loom {}

configurations {
common
shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this.
compileClasspath.extendsFrom common
runtimeClasspath.extendsFrom common
developmentForge.extendsFrom common
developmentNeoForge.extendsFrom common
}

dependencies {
forge "net.minecraftforge:forge:${rootProject.minecraft_version}-${rootProject.forge_version}"
// Remove the next line if you don't want to depend on the API
modApi "dev.architectury:architectury-forge:${rootProject.architectury_version}"

// implementation(project(path: ":common")) {
// transitive = false
// }
// developmentForge(project(path: ":common")) {
// transitive = false
// }
neoForge "net.neoforged:neoforge:${rootProject.neoforge_version}"
modApi "dev.architectury:architectury-neoforge:${rootProject.architectury_version}"

common(project(path: ":common", configuration: "namedElements")) { transitive false }
shadowCommon(project(path: ":common", configuration: "transformProductionForge")) {
shadowCommon(project(path: ":common", configuration: "transformProductionNeoForge")) {
transitive = false
}
shadowCommon("org.jetbrains.kotlinx:kotlinx-serialization-protobuf-jvm:1.3.1") {
Expand Down Expand Up @@ -123,7 +108,7 @@ unifiedPublishing {
curseforge {
token = CURSE_API_KEY
id = rootProject.curseforge_id
gameVersions.addAll "Java 17"
gameVersions.addAll "Java 21"
}
}

Expand Down Expand Up @@ -161,8 +146,8 @@ repositories {
mavenCentral()
}
compileKotlin {
kotlinOptions.jvmTarget = "17"
kotlinOptions.jvmTarget = "21"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "17"
kotlinOptions.jvmTarget = "21"
}
2 changes: 1 addition & 1 deletion forge/gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
loom.platform=forge
loom.platform=neoforge
23 changes: 12 additions & 11 deletions forge/src/main/java/observable/forge/ObservableForge.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package observable.forge;

import cpw.mods.cl.ModuleClassLoader;
import dev.architectury.platform.forge.EventBuses;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.fml.ModLoadingContext;
import net.neoforged.fml.common.Mod;
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
import net.neoforged.fml.loading.FMLEnvironment;
import net.neoforged.neoforge.common.NeoForge;
import observable.Observable;
import static observable.Observable.init;
import observable.server.ModLoader;
Expand All @@ -17,15 +17,16 @@
public class ObservableForge {
public ObservableForge() {
Remapper.modLoader = ModLoader.FORGE;
// Submit our event bus to let architectury register our content on the right time
EventBuses.registerModEventBus(Observable.MOD_ID, FMLJavaModLoadingContext.get().getModEventBus());
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onClientInit);

init();

if (FMLEnvironment.dist == Dist.CLIENT) {
onClientInit();
}
}

public void onClientInit(FMLClientSetupEvent ev) {
public void onClientInit() {
Observable.clientInit();
MinecraftForge.EVENT_BUS.register(ForgeClientHooks.INSTANCE);
NeoForge.EVENT_BUS.register(ForgeClientHooks.INSTANCE);
}
}
Loading

0 comments on commit b511b76

Please sign in to comment.