Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 20 additions & 39 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
@file:Suppress("LocalVariableName")

plugins {
id("com.github.johnrengelman.shadow")
id("com.gladed.androidgitversion")
id("fabric-loom")
alias(libs.plugins.android.git.version)
alias(libs.plugins.fabric.loom)
`java-library`
}

Expand All @@ -15,47 +12,38 @@ androidGitVersion {
group = "arm32x.minecraft"
version = androidGitVersion.name()

configurations.implementation.get().extendsFrom(configurations["shadow"])

repositories {
mavenCentral()
}

dependencies {
val minecraft_version: String by project
minecraft("com.mojang:minecraft:$minecraft_version")
val yarn_mappings: String by project
mappings("net.fabricmc:yarn:$yarn_mappings:v2")
val loader_version: String by project
modImplementation("net.fabricmc:fabric-loader:$loader_version")
minecraft(libs.minecraft)

val fabric_version: String by project
modImplementation("net.fabricmc.fabric-api:fabric-api:$fabric_version")
implementation(libs.fabric.loader)
implementation(libs.fabric.api)

val msgpack_java_version: String by project
shadow("org.msgpack:msgpack-core:${msgpack_java_version}")
implementation(libs.msgpack.core)
include(libs.msgpack.core)

val junit_version: String by project
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junit_version}")
val jqwik_version: String by project
testImplementation("net.jqwik:jqwik:${jqwik_version}")
val assertj_version: String by project
testImplementation("org.assertj:assertj-core:${assertj_version}")
testRuntimeOnly(libs.junit.jupiter.engine)
testImplementation(libs.jqwik)
testImplementation(libs.assertj.core)
}

java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
languageVersion.set(JavaLanguageVersion.of(libs.versions.java.get().toInt()))
}
withSourcesJar()
}

tasks.withType<JavaCompile> {
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
options.release.set(libs.versions.java.get().toInt())
}

loom {
accessWidenerPath.set(File("src/main/resources/commandblockide.accesswidener"))
accessWidenerPath.set(file("src/main/resources/commandblockide.accesswidener"))
}

tasks.processResources {
Expand All @@ -66,24 +54,17 @@ tasks.processResources {
}
}

// Reproducible builds (or at least an attempt)
tasks.withType<AbstractArchiveTask> {
tasks.withType<AbstractArchiveTask>().configureEach {
isPreserveFileTimestamps = false
isReproducibleFileOrder = true
}

tasks.jar {
from("LICENSE")
}

tasks.shadowJar {
configurations = listOf(project.configurations.shadow.get())
from("LICENSE") {
rename { "${it}_${project.name}" }
}
}

tasks.remapJar {
dependsOn(tasks.shadowJar)
inputFile.set(tasks.shadowJar.get().archiveFile)
doLast {
tasks.shadowJar.get().archiveFile.get().asFile.delete()
}
tasks.test {
useJUnitPlatform()
}
20 changes: 2 additions & 18 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,19 +1,3 @@
# Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx2G
# Gradle Plugins
android_git_version_version=0.4.14
loom_version=1.13.3
shadow_version=7.1.2
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.21.11
yarn_mappings=1.21.11+build.4
loader_version=0.18.4
# Dependencies
# check these on https://modmuss50.me/fabric.html
fabric_version=0.141.1+1.21.11
msgpack_java_version=0.9.3
# Test dependencies
junit_version=5.9.2
jqwik_version=1.7.3
assertj_version=3.24.2
org.gradle.parallel=true
org.gradle.configuration-cache=false
28 changes: 28 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
[versions]
java = "25"
minecraft = "26.1.2"

fabric-api = "0.151.0+26.1.2"
fabric-loader = "0.19.3"
fabric-loom = "1.16-SNAPSHOT"

jqwik = "1.7.3"
junit-jupiter = "5.9.2"
android-git-version = "0.4.14"
msgpack-core = "0.9.12"
assertj-core = "3.24.2"

[libraries]
minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" }

fabric-api = { module = "net.fabricmc.fabric-api:fabric-api", version.ref = "fabric-api" }
fabric-loader = { module = "net.fabricmc:fabric-loader", version.ref = "fabric-loader" }

jqwik = { module = "net.jqwik:jqwik", version.ref = "jqwik" }
junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit-jupiter" }
msgpack-core = { module = "org.msgpack:msgpack-core", version.ref = "msgpack-core" }
assertj-core = { module = "org.assertj:assertj-core", version.ref = "assertj-core" }

[plugins]
fabric-loom = { id = "net.fabricmc.fabric-loom", version.ref = "fabric-loom" }
android-git-version = { id = "com.gladed.androidgitversion", version.ref = "android-git-version" }
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
11 changes: 0 additions & 11 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
@file:Suppress("LocalVariableName")

pluginManagement {
repositories {
maven {
Expand All @@ -8,15 +6,6 @@ pluginManagement {
}
gradlePluginPortal()
}
plugins {
val android_git_version_version: String by settings
val loom_version: String by settings
val shadow_version: String by settings

id("com.github.johnrengelman.shadow") version shadow_version
id("com.gladed.androidgitversion") version android_git_version_version
id("fabric-loom") version loom_version
}
}

rootProject.name = "command-block-ide"
34 changes: 17 additions & 17 deletions src/main/java/arm32x/minecraft/commandblockide/CommandBlockIDE.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.command.permission.Permission;
import net.minecraft.command.permission.PermissionLevel;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.server.permissions.Permission;
import net.minecraft.server.permissions.PermissionLevel;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.function.CommandFunction;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.functions.CommandFunction;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.Identifier;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

Expand All @@ -31,38 +31,38 @@ public void onInitialize() {
EditFunctionCommand.register(dispatcher));

final PacketMerger functionMerger = new PacketMerger();
PayloadTypeRegistry.playC2S().register(Packets.APPLY_FUNCTION, ApplyFunctionPayload.CODEC);
PayloadTypeRegistry.serverboundPlay().register(Packets.APPLY_FUNCTION, ApplyFunctionPayload.CODEC);
ServerPlayNetworking.registerGlobalReceiver(Packets.APPLY_FUNCTION, (payload, context) -> {
if (!context.player().getPermissions().hasPermission(new Permission.Level(PermissionLevel.GAMEMASTERS))) {
if (!context.player().permissions().hasPermission(new Permission.HasCommandLevel(PermissionLevel.GAMEMASTERS))) {
return;
}
Optional<PacketByteBuf> maybeMerged = Optional.empty();
Optional<FriendlyByteBuf> maybeMerged = Optional.empty();
try {
maybeMerged = functionMerger.append(payload.toBuf());
} catch (PacketMerger.InvalidSplitPacketException e) {
LOGGER.error("PacketMerger", e);
}
if (maybeMerged.isPresent()) {
PacketByteBuf merged = maybeMerged.get();
FriendlyByteBuf merged = maybeMerged.get();
Identifier functionId = merged.readIdentifier();
int lineCount = merged.readVarInt();
String[] lines = new String[lineCount];
for (int index = 0; index < lineCount; index++) {
lines[index] = merged.readString(Integer.MAX_VALUE >> 2);
lines[index] = merged.readUtf(Integer.MAX_VALUE >> 2);
}

ServerPlayerEntity player = context.player();
ServerPlayer player = context.player();
MinecraftServer server = context.server();
server.execute(() -> {
Text feedbackMessage = FunctionIO.saveFunction(server, functionId, Arrays.asList(lines));
player.sendMessage(feedbackMessage);
Component feedbackMessage = FunctionIO.saveFunction(server, functionId, Arrays.asList(lines));
player.sendSystemMessage(feedbackMessage);
});
}
});
}

private static void updateFunctionLines(MinecraftServer server, Identifier functionId, List<String> lines) {
Optional<CommandFunction<ServerCommandSource>> maybeFunction = server.getCommandFunctionManager().getFunction(functionId);
Optional<CommandFunction<CommandSourceStack>> maybeFunction = server.getFunctions().get(functionId);
maybeFunction.ifPresent(function -> ((CommandFunctionExtension)function).ide$setOriginalLines(lines));
}

Expand Down
10 changes: 5 additions & 5 deletions src/main/java/arm32x/minecraft/commandblockide/Packets.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@
import arm32x.minecraft.commandblockide.payloads.ApplyFunctionPayload;
import arm32x.minecraft.commandblockide.payloads.EditFunctionPayload;
import arm32x.minecraft.commandblockide.payloads.UpdateFunctionCommandPayload;
import net.minecraft.network.packet.CustomPayload.Id;
import net.minecraft.util.Identifier;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload.Type;
import net.minecraft.resources.Identifier;

public final class Packets {
// Namespace
private static final String NAMESPACE = "commandblockide";

// Client to Server
public static final Id<ApplyFunctionPayload> APPLY_FUNCTION = new Id<>(Identifier.of(NAMESPACE + ":apply_function"));
public static final Type<ApplyFunctionPayload> APPLY_FUNCTION = new Type<>(Identifier.parse(NAMESPACE + ":apply_function"));

// Server to Client
public static final Id<EditFunctionPayload> EDIT_FUNCTION = new Id<>(Identifier.of(NAMESPACE + ":edit_function"));
public static final Id<UpdateFunctionCommandPayload> UPDATE_FUNCTION_COMMAND = new Id<>(Identifier.of(NAMESPACE + ":update_function_command"));
public static final Type<EditFunctionPayload> EDIT_FUNCTION = new Type<>(Identifier.parse(NAMESPACE + ":edit_function"));
public static final Type<UpdateFunctionCommandPayload> UPDATE_FUNCTION_COMMAND = new Type<>(Identifier.parse(NAMESPACE + ":update_function_command"));
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.FatalErrorScreen;
import net.minecraft.text.Text;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.ErrorScreen;
import net.minecraft.network.chat.Component;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.Nullable;
Expand All @@ -20,16 +20,16 @@
public final class CommandBlockIDEClient implements ClientModInitializer {
@Override
public void onInitializeClient() {
PayloadTypeRegistry.playS2C().register(Packets.EDIT_FUNCTION, EditFunctionPayload.CODEC);
PayloadTypeRegistry.clientboundPlay().register(Packets.EDIT_FUNCTION, EditFunctionPayload.CODEC);
ClientPlayNetworking.registerGlobalReceiver(Packets.EDIT_FUNCTION, (payload, context) -> {
MinecraftClient client = context.client();
Minecraft client = context.client();
client.execute(() -> client.setScreen(new CommandFunctionIDEScreen(payload.id(), payload.lineCount())));
});
PayloadTypeRegistry.playS2C().register(Packets.UPDATE_FUNCTION_COMMAND, UpdateFunctionCommandPayload.CODEC);
PayloadTypeRegistry.clientboundPlay().register(Packets.UPDATE_FUNCTION_COMMAND, UpdateFunctionCommandPayload.CODEC);
ClientPlayNetworking.registerGlobalReceiver(Packets.UPDATE_FUNCTION_COMMAND, (payload, context) -> {
MinecraftClient client = context.client();
Minecraft client = context.client();
client.execute(() -> {
if (client.currentScreen instanceof CommandFunctionIDEScreen ide) {
if (client.screen instanceof CommandFunctionIDEScreen ide) {
ide.update(payload.index(), payload.line());
}
});
Expand All @@ -42,9 +42,9 @@ public static void showErrorScreen(Exception ex, @Nullable String currentAction)
} else {
LOGGER.error("Error screen shown:", ex);
}
MinecraftClient.getInstance().setScreen(new FatalErrorScreen(
Text.translatable(currentAction != null ? "commandBlockIDE.errorWithContext" : "commandBlockIDE.error", currentAction),
Text.literal(ex.toString())
Minecraft.getInstance().setScreen(new ErrorScreen(
Component.translatable(currentAction != null ? "commandBlockIDE.errorWithContext" : "commandBlockIDE.error", currentAction),
Component.literal(ex.toString())
));
}

Expand Down
Loading