From a046cebbbada317f0dd3aa4164b1e8d0a29627d6 Mon Sep 17 00:00:00 2001 From: antideath Date: Sat, 14 Feb 2026 18:56:24 +0800 Subject: [PATCH 01/10] fix: CommandManager_Mixin --- gradle.properties | 2 +- .../mixins/rule/commandLogger/CommandManager_Mixin.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 87f8256..fed7c59 100755 --- a/gradle.properties +++ b/gradle.properties @@ -12,6 +12,6 @@ loader_version=0.17.3 loader_requirement_version=>=0.15 # Mod Metadata -mod_version=1.9.0 +mod_version=2.0.0 maven_group=io.github.optijava archives_base_name=opt-carpet-addition diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/commandLogger/CommandManager_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/commandLogger/CommandManager_Mixin.java index 1f6fefb..3ab6568 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/commandLogger/CommandManager_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/commandLogger/CommandManager_Mixin.java @@ -74,7 +74,7 @@ public void injectExecute(ServerCommandSource commandSource, String command, Cal @Unique private void logCommand(String command, ServerCommandSource commandSource){ - CommandManager_Mixin.LOGGER.info("[OCA Command Logger] %s submit command: %s".formatted(commandSource.getName(), command)); + CommandManager_Mixin.LOGGER.info("[OCA Command Logger] {} submit command: {}", commandSource.getName(), command); if (OptCarpetSettings.commandLoggerBroadcastToPlayer.equals("true")) { Messenger.print_server_message(CarpetServer.minecraft_server, Messenger.c( @@ -91,7 +91,6 @@ private void logCommand(String command, ServerCommandSource commandSource){ "gi : " + command + "]" )); } - }); } } From a1a3a9b2a2df1e9a368a4d92dd4d95fa9609a506 Mon Sep 17 00:00:00 2001 From: antideath Date: Sun, 5 Apr 2026 18:01:17 +0800 Subject: [PATCH 02/10] update: preprocessor --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 754f1a1..c761326 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ plugins { // id 'fabric-loom' version '1.10-SNAPSHOT' apply false id 'fabric-loom' version '1.11-SNAPSHOT' apply false id 'maven-publish' - id 'com.replaymod.preprocess' version '20c7ec554a' + id 'com.replaymod.preprocess' version 'd452ef7612' } @@ -14,7 +14,7 @@ preprocess { def mc1215 = createNode('1.21.5' , 1_21_05, 'yarn') def mc12110 = createNode('1.21.10', 1_21_10, 'yarn') - mc117 .link(mc1204, null) + mc117.link(mc1204, null) mc1204.link(mc1210, null) mc1210.link(mc1215, null) mc1215.link(mc12110, null) From 9a18af89ec3065c77fa6f66a0bb639424a86dc3b Mon Sep 17 00:00:00 2001 From: antideath Date: Mon, 27 Apr 2026 23:48:57 +0800 Subject: [PATCH 03/10] stonecutter --- build.gradle | 21 --- build.gradle.kts | 93 +++++++++++ common.gradle | 107 ------------ gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 34 ---- settings.gradle.kts | 23 +++ .../OptCarpetAddition.java | 53 ++---- .../OptCarpetSettings.java | 158 +++++------------- .../commands/CommandLoggerCommand.java | 8 +- .../commands/CrashCommand.java | 9 +- .../commands/ListAdvanceCommand.java | 21 +-- .../commands/PlayerTpCommand.java | 13 +- .../commands/TpLimitCommand.java | 6 +- .../fixExperienceBug/FixExperienceBug.java | 2 +- .../logger/LoggerRegister.java | 18 +- .../logger/blockUpdate/BlockUpdateLogger.java | 128 +++++++------- .../CCESuppressionCrashLogger.java | 71 ++++---- .../logger/disk/DiskHUDLogger.java | 32 +--- .../UpdateSuppressionLogger.java | 33 ---- .../mixins/logger/HUDController_Mixin.java | 3 +- .../ChainRestrictedNeighborUpdater_Mixin.java | 116 ++++++------- .../blockUpdate/LoggerRegistry_Mixin.java | 64 +++---- .../SimpleNeighborUpdater_Mixin.java | 86 +++++----- .../logger/blockUpdate/World_Mixin.java | 58 +++---- .../logger/updateSuppression/World_Mixin.java | 28 ---- .../rule/async/MinecraftServer_Mixin.java | 49 ------ .../EntityTrackerEntry_Mixin.java | 29 ---- .../PlayerManager_Mixin.java | 49 ------ .../ServerLoginNetworkHandler_Mixin.java | 45 ----- .../ServerWorld_Mixin.java | 60 ------- .../optimizePlayerConnect/World_Mixin.java | 36 ---- .../ServerPlayNetworkHandler_Mixin.java | 60 ------- .../ServerPlayerEntity_Mixin.java | 69 -------- .../MinecraftServer_Mixin.java | 47 ------ .../ShulkerBoxBlock_Mixin.java | 39 ----- .../commandLogger/CommandManager_Mixin.java | 25 +-- .../EnderManEntity_Mixin.java | 8 +- .../EndermanEntity_Mixin.java | 9 +- .../disabledEntityTick/ServerWorld_Mixin.java | 8 +- .../disabledLayEggs/ChickenEntity_Mixin.java | 10 +- .../NetherPortalBlock_Mixin.java | 8 +- .../NetworkThreadUtils_Mixin.java | 33 ---- .../ThreadExecutor_Mixin.java | 43 ----- .../RedstoneWireBlock_Mixin.java | 46 ++--- .../dropperCrashFix/DispenserBlock_Mixin.java | 28 ---- .../dropperCrashFix/DropperBlock_Mixin.java | 29 ---- .../EntityPlayerMPFake_Mixin.java | 29 +--- .../PlayerCommand_Mixin.java | 34 +--- .../ServerPlayerEntity_Mixin.java | 58 +++---- .../rule/removeBats/BatEntity_Mixin.java | 27 ++- .../ChatMessageC2SPacket_Mixin.java | 6 +- .../unescapeChatMessage/Screen_Mixin.java | 33 ---- .../opt_carpet_addition/utils/McUtils.java | 16 +- .../exceptions/ThrowableCCESuppression.java | 12 -- .../CustomItemDiscardTimeValidator.java | 18 +- .../PlayerTpRateLimitTimeValidator.java | 15 +- .../resources/opt-carpet-addition.mixins.json | 50 +----- stonecutter.gradle.kts | 6 + versions/1.17.1/gradle.properties | 17 -- .../1.17.1/opt-carpet-addition.accesswidener | 8 - versions/1.20.4/gradle.properties | 16 -- .../1.20.4/opt-carpet-addition.accesswidener | 15 -- .../1.21.10/opt-carpet-addition.accesswidener | 12 +- .../1.21.5/opt-carpet-addition.accesswidener | 9 +- .../1.21/opt-carpet-addition.accesswidener | 9 +- versions/mainProject | 1 - 66 files changed, 585 insertions(+), 1723 deletions(-) delete mode 100644 build.gradle create mode 100644 build.gradle.kts delete mode 100755 common.gradle delete mode 100755 settings.gradle create mode 100644 settings.gradle.kts delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/logger/updateSuppression/UpdateSuppressionLogger.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/updateSuppression/World_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/MinecraftServer_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/EntityTrackerEntry_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/PlayerManager_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/ServerLoginNetworkHandler_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/ServerWorld_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/World_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizeTeleport/ServerPlayNetworkHandler_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizeTeleport/ServerPlayerEntity_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/cceSuppressionCrashFix/MinecraftServer_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/cceSuppressionCrashFix/ShulkerBoxBlock_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledUpdateSuppressionErrorStackTrace/NetworkThreadUtils_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledUpdateSuppressionErrorStackTrace/ThreadExecutor_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/dropperCrashFix/DispenserBlock_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/dropperCrashFix/DropperBlock_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/unescapeChatMessage/Screen_Mixin.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/utils/exceptions/ThrowableCCESuppression.java create mode 100644 stonecutter.gradle.kts delete mode 100644 versions/1.17.1/gradle.properties delete mode 100644 versions/1.17.1/opt-carpet-addition.accesswidener delete mode 100644 versions/1.20.4/gradle.properties delete mode 100644 versions/1.20.4/opt-carpet-addition.accesswidener delete mode 100644 versions/mainProject diff --git a/build.gradle b/build.gradle deleted file mode 100644 index c761326..0000000 --- a/build.gradle +++ /dev/null @@ -1,21 +0,0 @@ -plugins { -//旧版fabric loom 无法识别1.21.10 -// id 'fabric-loom' version '1.10-SNAPSHOT' apply false - id 'fabric-loom' version '1.11-SNAPSHOT' apply false - id 'maven-publish' - id 'com.replaymod.preprocess' version 'd452ef7612' -} - - -preprocess { - def mc117 = createNode('1.17.1' , 1_17_01, 'yarn') - def mc1204 = createNode('1.20.4' , 1_20_04, 'yarn') - def mc1210 = createNode('1.21' , 1_21_00, 'yarn') - def mc1215 = createNode('1.21.5' , 1_21_05, 'yarn') - def mc12110 = createNode('1.21.10', 1_21_10, 'yarn') - - mc117.link(mc1204, null) - mc1204.link(mc1210, null) - mc1210.link(mc1215, null) - mc1215.link(mc12110, null) -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..199542b --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,93 @@ +import java.text.SimpleDateFormat +import java.util.Date + +plugins { + id("fabric-loom") + id("maven-publish") +} + + +val minecraftVer = stonecutter.current.version +val modver = "${property("mod_version")}" +val mod = "${modver}+${minecraftVer}+build.${SimpleDateFormat("yyMMddHHmm").format(Date())}" +val archivesBaseName = project.findProperty("archives_base_name") + +base { + archivesName.set("${archivesBaseName}+${mod}") +} + +repositories { + mavenCentral() + // 阿里云镜像 + maven { + url = uri("https://maven.aliyun.com/repository/public/") + } + // CurseMaven + maven { + url = uri("https://www.cursemaven.com") + } + // Modrinth + maven { + name = "Modrinth" + url = uri("https://api.modrinth.com/maven") + } + // JitPack + maven { + url = uri("https://jitpack.io") + } +} + + +//https://github.com/FabricMC/fabric-loader/issues/783 +//configurations { +// modRuntimeOnly.exclude group: 'net.fabricmc', module: 'fabric-loader' +//} + + +dependencies { + // loom + "minecraft"("com.mojang:minecraft:${minecraftVer}") + "mappings"(loom.officialMojangMappings()) + "modImplementation"("net.fabricmc:fabric-loader:${property("loader_version")}") + "modImplementation"("net.fabricmc.fabric-api:fabric-api:${property("fabric_version")}") + "modImplementation"("curse.maven:carpet-349239:${property("carpet_core_version")}") +} + + +tasks.processResources { + from("opt-carpet-addition.accesswidener") + + inputs.property("version", modver) + inputs.property("minecraft_requirement_version", minecraftVer) + inputs.property("carpet_requirement_version", property("carpet_requirement_version")) + inputs.property("loader_requirement_version", property("loader_requirement_version")) + + filesMatching("fabric.mod.json") { + val valueMap = mapOf( + "version" to modver, + "carpet_requirement_version" to property("carpet_requirement_version"), + "minecraft_requirement_version" to minecraftVer, + "loader_requirement_version" to property("loader_requirement_version"), + ) + expand(valueMap) + } +} + +loom { + accessWidenerPath.set(file("opt-carpet-addition.accesswidener")) + + runConfigs.all { + ideConfigGenerated(true) + vmArgs("-Dmixin.debug.export=true") + runDir("../../run") + } +} + +tasks.jar { + inputs.property("archivesName", base.archivesName) + from("LICENSE") { + rename { fileName -> + "${fileName}_${base.archivesName.get()}" + } + } +} diff --git a/common.gradle b/common.gradle deleted file mode 100755 index 111058f..0000000 --- a/common.gradle +++ /dev/null @@ -1,107 +0,0 @@ -// plugins -apply plugin: 'fabric-loom' -apply plugin: 'maven-publish' -apply plugin: 'com.replaymod.preprocess' - - -archivesBaseName = project.archives_base_name // in central gradle.properties - -def simple_version = 'v' + project.mod_version + '+build.' + new Date().format('yyMMddHHmm') -def short_version = 'v' + project.mod_version -version = simple_version + '-' + project.minecraft_version - -group = project.maven_group - -println "mcVersion: " + project.mcVersion -if (project.mcVersion >= 12005) { - sourceCompatibility = JavaVersion.VERSION_21 - targetCompatibility = JavaVersion.VERSION_21 -} else if (project.mcVersion >= 11800) { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} else if (project.mcVersion >= 11700) { - sourceCompatibility = JavaVersion.VERSION_16 - targetCompatibility = JavaVersion.VERSION_16 -} - - -repositories { - maven { - url 'https://www.cursemaven.com' - } - maven { - name = "Modrinth" - url = "https://api.modrinth.com/maven" - } - - maven { - url 'https://jitpack.io' - } - - maven { url 'https://maven.aliyun.com/repository/public/' } - mavenCentral() -} - - -// https://github.com/FabricMC/fabric-loader/issues/783 -configurations { - modRuntimeOnly.exclude group: 'net.fabricmc', module: 'fabric-loader' -} - - -dependencies { - // loom - minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - - // loader - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" // in central gradle.properties - - // mods - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - modImplementation("curse.maven:carpet-349239:${project.carpet_core_version}") -} - - -processResources { - from "opt-carpet-addition.accesswidener" - - inputs.property "version", short_version - inputs.property "minecraft_requirement_version", project.minecraft_requirement_version - inputs.property "carpet_requirement_version", project.carpet_requirement_version - inputs.property "loader_requirement_version", project.loader_requirement_version - - filesMatching("fabric.mod.json") { - def valueMap = [ - "version": short_version, - "carpet_requirement_version": project.carpet_requirement_version, - "minecraft_requirement_version": project.minecraft_requirement_version, - "loader_requirement_version": project.loader_requirement_version, - ] - expand valueMap - } -} - - -tasks.withType(JavaCompile).configureEach { - options.encoding = "UTF-8" -} - - -loom { - accessWidenerPath.set(file("opt-carpet-addition.accesswidener")) - - runConfigs.all { - // to make sure it generates all "Minecraft Client (:subproject_name)" applications - ideConfigGenerated = true - vmArgs '-Dmixin.debug.export=true' - runDir '../../run' - } -} - - -jar { - from("LICENSE") { - rename { "${it}_${archivesBaseName}" } - } -} diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0b55a3b..f50f69e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle deleted file mode 100755 index 6f2c4fb..0000000 --- a/settings.gradle +++ /dev/null @@ -1,34 +0,0 @@ -pluginManagement { - repositories { - maven { - name = 'Fabric' - url = 'https://maven.fabricmc.net/' - } - maven { - name = 'Jitpack' - url = 'https://maven.fallenbreath.me/jitpack' - } - mavenCentral() - gradlePluginPortal() - } - resolutionStrategy { - eachPlugin { - switch (requested.id.id) { - case "com.replaymod.preprocess": { - useModule("com.github.Fallen-Breath:preprocessor:${requested.version}") - break - } - } - } - } -} - -for (File version : new File('./versions').listFiles()) { - if (version.isDirectory()) { - include(":${version.name}") - - def proj = project(":${version.name}") - proj.projectDir = file("versions/${version.name}") - proj.buildFileName = "../../common.gradle" - } -} diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..02c89f0 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,23 @@ +#!/usr/bin/env kotlin + +pluginManagement { + repositories { + mavenLocal() + mavenCentral() + gradlePluginPortal() + maven("https://maven.fabricmc.net/") + maven("https://maven.kikugie.dev/snapshots") { name = "KikuGie Snapshots" } + } +} + +plugins { + id("dev.kikugie.stonecutter").version("0.9.2") +} + +stonecutter { + create(rootProject) { + versions("1.21", "1.21.5", "1.21.10").buildscript("build.gradle.kts") +// version("26.1").buildscript("unobfuscated.gradle.kts") + vcsVersion = "1.21.5" + } +} \ No newline at end of file diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java index 32fa1e5..83f36c3 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java @@ -14,9 +14,7 @@ import io.github.optijava.opt_carpet_addition.utils.TpLimit; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents; -//#if MC >= 11900 -//$$ import net.minecraft.command.CommandRegistryAccess; -//#endif +import net.minecraft.command.CommandRegistryAccess; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.world.GameMode; @@ -45,16 +43,8 @@ public void onGameStarted() { CarpetServer.settingsManager.parseSettingsClass(OptCarpetSettings.class); // add rule observer - //#if MC >= 11900 - //$$ CarpetServer.settingsManager.registerRuleObserver(((serverCommandSource, rule, s) -> { - //#else - CarpetServer.settingsManager.addRuleObserver(((serverCommandSource, rule, s) -> { - //#endif - //#if MC >= 11900 - //$$ if (Objects.equals(rule.name(), "forceFakePlayerGameMode") && !Objects.equals(OptCarpetSettings.forceFakePlayerGameMode, "false")) { - //#else - if (Objects.equals(rule.name, "forceFakePlayerGameMode") && !Objects.equals(OptCarpetSettings.forceFakePlayerGameMode, "false")) { - //#endif + CarpetServer.settingsManager.registerRuleObserver(((serverCommandSource, rule, s) -> { + if (Objects.equals(rule.name(), "forceFakePlayerGameMode") && !Objects.equals(OptCarpetSettings.forceFakePlayerGameMode, "false")) { GameMode gameMode; if (OptCarpetSettings.forceFakePlayerGameMode.equals("creative")) { @@ -72,44 +62,25 @@ public void onGameStarted() { }); } - //#if MC >= 11900 - //$$ if (rule.name().equals("enableTpPrefixBlacklist") && OptCarpetSettings.enableTpPrefixBlacklist && OptCarpetSettings.enableTpPrefixWhitelist) { - //#else - if (rule.name.equals("enableTpPrefixBlacklist") && OptCarpetSettings.enableTpPrefixBlacklist && OptCarpetSettings.enableTpPrefixWhitelist) { - //#endif + if (rule.name().equals("enableTpPrefixBlacklist") && OptCarpetSettings.enableTpPrefixBlacklist && OptCarpetSettings.enableTpPrefixWhitelist) { OptCarpetSettings.enableTpPrefixBlacklist = false; Messenger.m(serverCommandSource, "r You can't enable TpPrefixBlacklist because you have enabled TpPrefixWhitelist"); } - //#if MC >= 11900 - //$$ if (rule.name().equals("enableTpPrefixWhitelist") && OptCarpetSettings.enableTpPrefixWhitelist && OptCarpetSettings.enableTpPrefixBlacklist) { - //#else - if (rule.name.equals("enableTpPrefixWhitelist") && OptCarpetSettings.enableTpPrefixWhitelist && OptCarpetSettings.enableTpPrefixBlacklist) { - //#endif + if (rule.name().equals("enableTpPrefixWhitelist") && OptCarpetSettings.enableTpPrefixWhitelist && OptCarpetSettings.enableTpPrefixBlacklist) { OptCarpetSettings.enableTpPrefixWhitelist = false; Messenger.m(serverCommandSource, "r You can't enable TpPrefixWhitelist because you have enabled TpPrefixBlacklist"); } - //#if MC >= 11900 - //$$ if (rule.name().equals("enableTpherePrefixWhitelist") && OptCarpetSettings.enableTpHerePrefixWhitelist && OptCarpetSettings.enableTpHerePrefixBlacklist) { - //#else - if (rule.name.equals("enableTpherePrefixWhitelist") && OptCarpetSettings.enableTpHerePrefixWhitelist && OptCarpetSettings.enableTpHerePrefixBlacklist) { - //#endif + if (rule.name().equals("enableTpherePrefixWhitelist") && OptCarpetSettings.enableTpHerePrefixWhitelist && OptCarpetSettings.enableTpHerePrefixBlacklist) { OptCarpetSettings.enableTpHerePrefixWhitelist = false; Messenger.m(serverCommandSource, "r You can't enable TpherePrefixWhitelist because you have enabled TpherePrefixBlacklist"); } - //#if MC >= 11900 - //$$ if (rule.name().equals("enableTpherePrefixBlacklist") && OptCarpetSettings.enableTpHerePrefixBlacklist && OptCarpetSettings.enableTpHerePrefixWhitelist) { - //#else - if (rule.name.equals("enableTpherePrefixBlacklist") && OptCarpetSettings.enableTpHerePrefixBlacklist && OptCarpetSettings.enableTpHerePrefixWhitelist) { - //#endif + if (rule.name().equals("enableTpherePrefixBlacklist") && OptCarpetSettings.enableTpHerePrefixBlacklist && OptCarpetSettings.enableTpHerePrefixWhitelist) { OptCarpetSettings.enableTpHerePrefixBlacklist = false; Messenger.m(serverCommandSource, "r You can't enable TpherePrefixBlacklist because you have enabled TpherePrefixWhitelist"); } - //#if MC >= 11900 - //$$ if (rule.name().equals("playerTpRateLimitTime")) { - //#else - if (rule.name.equals("playerTpRateLimitTime")) { - //#endif + + if (rule.name().equals("playerTpRateLimitTime")) { double time; if (OptCarpetSettings.playerTpRateLimitTime == 0) { time = 0; @@ -133,11 +104,7 @@ public void onGameStarted() { } @Override - //#if MC >= 11900 - //$$ public void registerCommands(CommandDispatcher dispatcher, CommandRegistryAccess commandBuildContext) { - //#else - public void registerCommands(CommandDispatcher dispatcher) { - //#endif + public void registerCommands(CommandDispatcher dispatcher, CommandRegistryAccess commandBuildContext) { PlayerTpCommand.registerCommands(dispatcher); ListAdvanceCommand.registerCommand(dispatcher); TpLimitCommand.registerCommand(dispatcher); diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java index 93b7f73..d884f35 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java @@ -1,13 +1,7 @@ package io.github.optijava.opt_carpet_addition; -//#if MC >= 11900 -//$$ import carpet.api.settings.RuleCategory; -//#else - -import carpet.settings.RuleCategory; -//#endif -import carpet.settings.Rule; - +import carpet.api.settings.Rule; +import carpet.api.settings.RuleCategory; import io.github.optijava.opt_carpet_addition.utils.config_bean.CommandLoggerConfigBean; import io.github.optijava.opt_carpet_addition.utils.config_bean.TpLimitConfigBean; import io.github.optijava.opt_carpet_addition.utils.validator.CustomItemDiscardTimeValidator; @@ -17,9 +11,7 @@ import java.nio.file.Path; -//#if MC >= 11900 -//$$ @SuppressWarnings("all") -//#endif +@SuppressWarnings("all") public class OptCarpetSettings { public static final String OCA = "OCA"; public static final String FALSE = "false"; @@ -28,45 +20,38 @@ public class OptCarpetSettings { // Tp command rules ======================================================================= @Rule( - desc = "Enables [/player xxx tp] to teleport to fake player", - category = {RuleCategory.COMMAND,OCA}, - options = {"true", "false", "ops"} + categories = {RuleCategory.COMMAND,OCA} ) public static String commandTpToFakePlayer = FALSE; @Rule( - desc = "Enables [/player xxx tp] to teleport to real player", - category = {RuleCategory.COMMAND,OCA}, + categories = {RuleCategory.COMMAND,OCA}, options = {"true", "false", "ops"} ) public static String allowTpToRealPlayer = FALSE; @Rule( - desc = "Enables [/player xxx tp] to teleport to fake player", - category = {RuleCategory.COMMAND,OCA}, + categories = {RuleCategory.COMMAND,OCA}, options = {"true", "false", "ops"} ) public static String commandTpHereFakePlayer = FALSE; @Rule( - desc = "Enables [/player xxx tp] to teleport to real player", - category = {RuleCategory.COMMAND,OCA}, + categories = {RuleCategory.COMMAND,OCA}, options = {"true", "false", "ops"} ) public static String allowTpHereRealPlayer = FALSE; // Force fake player gamemode rule ========================================================= @Rule( - desc = "Force fake player gamemode", - category = {RuleCategory.FEATURE,OCA}, + categories = {RuleCategory.FEATURE,OCA}, options = {"survival", "creative", "adventure", "false"} ) public static String forceFakePlayerGameMode = FALSE; // Fix bugs ================================================================================ @Rule( - desc = "Refresh xp level when player change world", - category = {RuleCategory.BUGFIX,OCA} + categories = {RuleCategory.BUGFIX,OCA} ) public static boolean fixXpLevelBug = false; @@ -77,198 +62,133 @@ public class OptCarpetSettings { public static CommandLoggerConfigBean commandLoggerConfigBean; @Rule( - desc = "Enable tp prefix blacklist", - category = {RuleCategory.FEATURE,OCA} + categories = {RuleCategory.FEATURE,OCA} ) public static boolean enableTpPrefixBlacklist = false; @Rule( - desc = "Enable tp prefix whitelist", - category = {RuleCategory.FEATURE,OCA} + categories = {RuleCategory.FEATURE,OCA} ) public static boolean enableTpPrefixWhitelist = false; @Rule( - desc = "Enable tp here prefix blacklist", - category = {RuleCategory.FEATURE,OCA} + categories = {RuleCategory.FEATURE,OCA} ) public static boolean enableTpHerePrefixBlacklist = false; @Rule( - desc = "Enable tp here prefix whitelist", - category = {RuleCategory.FEATURE,OCA} + categories = {RuleCategory.FEATURE,OCA} ) public static boolean enableTpHerePrefixWhitelist = false; @Rule( - desc = "Disable chicken lays eggs", - category = {RuleCategory.FEATURE,OCA} + categories = {RuleCategory.FEATURE,OCA} ) public static boolean disabledLayEggs = false; @Rule( - desc = "Disable enderman pickup block goal", - category = {RuleCategory.FEATURE,OCA} + categories = {RuleCategory.FEATURE,OCA} ) public static boolean disabledEnderManPickupGoal = false; @Rule( - desc = "Disable enderman place block goal", - category = {RuleCategory.FEATURE,OCA} + categories = {RuleCategory.FEATURE,OCA} ) public static boolean disabledEnderManPlaceBlockGoal = false; @Rule( - desc = "Disable zombified piglin spawn in nether portal", - category = {RuleCategory.OPTIMIZATION, RuleCategory.FEATURE,OCA} + categories = {RuleCategory.OPTIMIZATION, RuleCategory.FEATURE,OCA} ) public static boolean disabledNetherPortalSpawn = false; @Rule( - desc = "Disable entity tick(contains all entity and BlockEntity)", - category = {RuleCategory.EXPERIMENTAL,OCA} + categories = {RuleCategory.EXPERIMENTAL,OCA} ) public static boolean disabledEntityTick = false; - //#if MC < 11900 - @Rule( - desc = "Disable error stack when update suppression.", - category = {RuleCategory.BUGFIX,OCA} - ) - public static boolean disabledUpdateSuppressionErrorStackTrace = false; - //#endif - @Rule( - desc = "Unescape chat message. \\u4e2d -> 中", - category = {RuleCategory.FEATURE, RuleCategory.CLIENT,OCA} + categories = {RuleCategory.FEATURE, RuleCategory.CLIENT,OCA} ) public static boolean unescapeChatMessage = false; - //#if MC < 11900 @Rule( - desc = "Handle player connect in a new thread to reduce the lag.", - category = {RuleCategory.OPTIMIZATION, RuleCategory.EXPERIMENTAL,OCA} - ) - public static boolean optimizePlayerConnect = false; - //#endif - - //#if MC < 11900 - @Rule( - desc = "Handle player teleport in a new thread to reduce the lag.", - category = {RuleCategory.OPTIMIZATION, RuleCategory.EXPERIMENTAL,OCA} - ) - public static boolean optimizeTeleport = false; - //#endif - - @Rule( - desc = "Print info log when players submit command", - category = {RuleCategory.COMMAND, RuleCategory.FEATURE,OCA} + categories = {RuleCategory.COMMAND, RuleCategory.FEATURE,OCA} ) public static boolean commandLogger = false; - - //#if MC < 11900 - @Rule( - desc = "Dropper crash fix", - category = {RuleCategory.BUGFIX,OCA} - ) - public static boolean dropperCrashFix = false; - //#endif //#if MC < 12110 @Rule( - desc = "Always spawn offline fake player to reduce lagging", - category = {RuleCategory.OPTIMIZATION,OCA} + categories = {RuleCategory.OPTIMIZATION,OCA} ) public static boolean optimizeFakePlayerSpawn = false; //#endif - - //#if MC < 12100 - @Rule( - desc = "Fix CCE Suppression crashes", - category = {RuleCategory.BUGFIX, RuleCategory.EXPERIMENTAL,OCA} - ) - public static boolean cceSuppressionCrashFix = false; - //#endif @Rule( - desc = "Remove every armour which has `curse of binding` enchantment when player dead in wall (keepInventory must be true).", - category = {RuleCategory.FEATURE,OCA} + categories = {RuleCategory.FEATURE,OCA} ) public static boolean removeAllCurseOfBindingArmorWhenPlayerDeadInWall = false; @Rule( - desc = "Modify item disappeared time, default value -1 (unit: tick)", - category = {RuleCategory.FEATURE,OCA}, + categories = {RuleCategory.FEATURE,OCA}, options = {"-1", "6000"}, strict = false, - validate = CustomItemDiscardTimeValidator.class + validators = CustomItemDiscardTimeValidator.class ) public static int customItemDiscardTime = -1; - //#if MC >= 12000 - //$$ @Rule( - //$$ desc = "Disallow redstone wire connects to open trapdoor(in version >= 1.20)", - //$$ category = {RuleCategory.FEATURE,OCA} - //$$ ) - //$$ public static boolean disallowRedstoneWireConnectsToOpenTrapdoor = false; - //#endif + @Rule( + categories = {RuleCategory.FEATURE,OCA} + ) + public static boolean disallowRedstoneWireConnectsToOpenTrapdoor = false; + @Rule( - desc = "Don't enable this rule unless you need blockUpdate logger! Enabling this rule may cause performance issues, so this rule was false by default. Before you set this rule to true, everyone can not use blockUpdate logger.", - category = {RuleCategory.FEATURE, RuleCategory.OPTIMIZATION,OCA} + categories = {RuleCategory.FEATURE, RuleCategory.OPTIMIZATION,OCA} ) public static boolean allowBlockUpdateLogger = false; @Rule( - desc = "Don't spawn bats!", - category = {RuleCategory.FEATURE,OCA} + categories = {RuleCategory.FEATURE,OCA} ) public static boolean removeBats = false; @Rule( - desc = "The rate limit of `/player xxx tp` command. Default: permit 1 request per 2 seconds per player.", - category = {RuleCategory.FEATURE, RuleCategory.COMMAND,OCA}, - validate = PlayerTpRateLimitTimeValidator.class, + categories = {RuleCategory.FEATURE, RuleCategory.COMMAND,OCA}, + validators = PlayerTpRateLimitTimeValidator.class, strict = false, options = {"2"} ) public static int playerTpRateLimitTime = 2; @Rule( - desc = "If enabled, command logger will broadcast commands to those players.", - category = {RuleCategory.COMMAND, RuleCategory.FEATURE,OCA}, + categories = {RuleCategory.COMMAND, RuleCategory.FEATURE,OCA}, options = {"true", "false", "ops"} ) public static String commandLoggerBroadcastToPlayer = FALSE; @Rule( - desc = "allow spectator tp to any player!", - category = {RuleCategory.FEATURE, RuleCategory.COMMAND,OCA}, + categories = {RuleCategory.FEATURE, RuleCategory.COMMAND,OCA}, options = {"true", "false"} ) public static boolean allowSpectatorTpToAnyPlayer = false; @Rule( - desc = "enableLoggerCommand", - category = {RuleCategory.COMMAND , OCA} + categories = {RuleCategory.COMMAND , OCA} ) public static boolean enableLoggerCommand = true; @Rule( - desc = "enableCrashCommand", - category = {RuleCategory.COMMAND , OCA} + categories = {RuleCategory.COMMAND , OCA} ) public static boolean enableCrashCommand = true; @Rule( - desc = "enableListAdvanceCommand", - category = {RuleCategory.COMMAND , OCA} + categories = {RuleCategory.COMMAND , OCA} ) public static boolean enableListAdvanceCommand = true; @Rule( - desc = "enableTpmanagerCommand", - category = {RuleCategory.COMMAND , OCA} + categories = {RuleCategory.COMMAND , OCA} ) public static boolean enableTpmanagerCommand = true; } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CommandLoggerCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CommandLoggerCommand.java index 5a724a4..bacd222 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CommandLoggerCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CommandLoggerCommand.java @@ -10,12 +10,8 @@ public class CommandLoggerCommand { public static void registerCommand(CommandDispatcher dispatcher) { - LiteralArgumentBuilder argumentBuilder = CommandManager.literal("commandlogger") - //#if MC < 12004 - //$$.requires((player) -> carpet.settings.SettingsManager.canUseCommand(source, enableLoggerCommand)) - //#else - //$$.requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableLoggerCommand)) - //#endif + LiteralArgumentBuilder argumentBuilder = CommandManager.literal("commandlogger"). + requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableLoggerCommand)) .then( CommandManager.literal("reload") .executes(CommandLoggerCommand::reload) diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java index 8099bf2..b1f7f0d 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java @@ -18,13 +18,8 @@ private CrashCommand() { public static void registerCommand(CommandDispatcher dispatcher) { LiteralArgumentBuilder argumentBuilder = literal("crash") - //#if MC < 12004 - //$$ .requires((serverCommandSource -> serverCommandSource.hasPermissionLevel(4))) - //$$.requires((player) -> carpet.settings.SettingsManager.canUseCommand(source, enableCrashCommand)) - //#else - //$$.requires((serverCommandSource -> serverCommandSource.hasPermissionLevel(4))) - //$$.requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableCrashCommand)) - //#endif + .requires((serverCommandSource -> serverCommandSource.hasPermissionLevel(4))) + .requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableCrashCommand)) .executes(CrashCommand::prepare) .then( literal("confirm") diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java index 5ed78ac..2f20a7c 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java @@ -16,11 +16,7 @@ public class ListAdvanceCommand { public static void registerCommand(CommandDispatcher dispatcher) { LiteralArgumentBuilder argumentBuilder = literal("list") - //#if MC < 12004 - //$$.requires((player) -> carpet.settings.SettingsManager.canUseCommand(source, enableListAdvanceCommand)) - //#else - //$$.requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableListAdvanceCommand)) - //#endif + .requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableListAdvanceCommand)) .then(literal("-advance").executes(ListAdvanceCommand::listAdvance)); dispatcher.register(argumentBuilder); } @@ -31,17 +27,12 @@ private static int listAdvance(CommandContext context) { StringBuilder sb = new StringBuilder(); sb.append("\n"); minecraftServer.getPlayerManager().getPlayerList().forEach(s -> { - //#if MC >= 12110 - //$$ sb.append(s.getName().getString()).append(" ").append(s.getGameMode().getId()).append(" ").append(s.networkHandler.getLatency()).append("ms ").append(s.getIp()).append(" ").append(s.getGameProfile().id().toString()).append("\n"); - //#endif - //#if MC >= 12004 && MC < 12110 - //$$ sb.append(s.getName().getString()).append(" ").append(s.interactionManager.getGameMode().getName()).append(" ").append(s.networkHandler.getLatency()).append("ms ").append(s.getIp()).append(" ").append(s.getGameProfile().getId().toString()).append("\n"); - //#endif - //#if MC < 12004 - sb.append(s.getName().getString()).append(" ").append(s.interactionManager.getGameMode().getName()).append(" ").append(s.pingMilliseconds).append("ms ").append(s.getIp()).append(" ").append(s.getGameProfile().getId().toString()).append("\n"); - //#endif + //? if >= 1.21.10 { + //sb.append(s.getName().getString()).append(" ").append(s.getGameMode().getId()).append(" ").append(s.networkHandler.getLatency()).append("ms ").append(s.getIp()).append(" ").append(s.getGameProfile().id().toString()).append("\n"); + //?} else { + //sb.append(s.getName().getString()).append(" ").append(s.interactionManager.getGameMode().getName()).append(" ").append(s.networkHandler.getLatency()).append("ms ").append(s.getIp()).append(" ").append(s.getGameProfile().getId().toString()).append("\n"); + //?} }); - // OptCarpetAddition.LOGGER.info(sb.toString()); Messenger.m(context.getSource(), sb.toString()); } catch (Exception e) { context.getSource().sendError(Messenger.c("Unexpected exception occurred when command list advance executed.")); diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java index 9c16d20..0eae7c3 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java @@ -15,9 +15,8 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; -//#if MC >= 12110 -//$$ import net.minecraft.server.PlayerConfigEntry; -//#endif +//? >= 1.21.10 +//import net.minecraft.server.PlayerConfigEntry; import net.minecraft.world.GameMode; import java.util.HashMap; @@ -85,11 +84,7 @@ private static int teleport(CommandContext context) { } try { - //#if MC >= 17001 final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().getName(); - //#else - //$$ final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayerOrThrow()).getName().getString(); - //#endif if (server.getPlayerManager().getPlayer(target) instanceof EntityPlayerMPFake) { @@ -172,11 +167,7 @@ private static int teleportHere(CommandContext context) { } try { - //#if MC >= 17001 final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().getName(); - //#else - //$$ final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayerOrThrow()).getName().getString(); - //#endif if (server.getPlayerManager().getPlayer(target) instanceof EntityPlayerMPFake) { diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/TpLimitCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/TpLimitCommand.java index 724f60b..289fb04 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/TpLimitCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/TpLimitCommand.java @@ -24,11 +24,7 @@ public static void registerCommand(CommandDispatcher dispat LiteralArgumentBuilder argument = literal("tpmanager") - //#if MC < 12004 - //$$.requires((player) -> carpet.settings.SettingsManager.canUseCommand(source, enableTpmanagerCommand)) - //#else - //$$.requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableTpmanagerCommand)) - //#endif + .requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableTpmanagerCommand)) .then( literal("reload") .executes(TpLimit::reload) diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java b/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java index dc4ded6..74f3961 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java @@ -9,8 +9,8 @@ public class FixExperienceBug implements ServerEntityWorldChangeEvents.AfterPlay @Override public void afterChangeWorld(ServerPlayerEntity player, ServerWorld origin, ServerWorld destination) { if (OptCarpetSettings.fixXpLevelBug) { + // refresh player's experience bar player.addExperience(0); - // refresh xp level } } } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java b/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java index fdaef7a..151e6af 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java @@ -1,12 +1,7 @@ package io.github.optijava.opt_carpet_addition.logger; import carpet.logging.LoggerRegistry; -import io.github.optijava.opt_carpet_addition.logger.blockUpdate.BlockUpdateLogger; -import io.github.optijava.opt_carpet_addition.logger.cceSuppressionCrashLogger.CCESuppressionCrashLogger; import io.github.optijava.opt_carpet_addition.logger.disk.DiskHUDLogger; -//#if MC < 11900 -import io.github.optijava.opt_carpet_addition.logger.updateSuppression.UpdateSuppressionLogger; -//#endif public class LoggerRegister { private LoggerRegister() { @@ -14,22 +9,13 @@ private LoggerRegister() { public static boolean __disk = false; - //#if MC < 11900 - public static boolean __updateSuppression = false; - //#endif - public static boolean __cceSuppressionCrash = false; public static boolean __blockUpdate = false; public static void registry() { LoggerRegistry.registerLogger("disk", DiskHUDLogger.INSTANCE); - //#if MC < 11900 - LoggerRegistry.registerLogger("updateSuppression", UpdateSuppressionLogger.INSTANCE); - //#endif - //#if MC < 12100 - LoggerRegistry.registerLogger("cceSuppressionCrash", CCESuppressionCrashLogger.INSTANCE); - //#endif - LoggerRegistry.registerLogger("blockUpdate", BlockUpdateLogger.INSTANCE); + //incompatible with 26.1 + //LoggerRegistry.registerLogger("blockUpdate", BlockUpdateLogger.INSTANCE); } } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/logger/blockUpdate/BlockUpdateLogger.java b/src/main/java/io/github/optijava/opt_carpet_addition/logger/blockUpdate/BlockUpdateLogger.java index d882fcb..521d16b 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/logger/blockUpdate/BlockUpdateLogger.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/logger/blockUpdate/BlockUpdateLogger.java @@ -1,73 +1,61 @@ package io.github.optijava.opt_carpet_addition.logger.blockUpdate; -import carpet.utils.Messenger; -import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -import io.github.optijava.opt_carpet_addition.logger.AbstractLogger; -import io.github.optijava.opt_carpet_addition.logger.LoggerRegister; -import io.github.optijava.opt_carpet_addition.utils.exceptions.ThrowableCCESuppression; -import net.minecraft.block.Block; -//#if MC >= 11900 -//$$ import net.minecraft.text.Text; -//#else -import net.minecraft.text.BaseText; -//#endif -import net.minecraft.util.math.BlockPos; -import java.lang.reflect.Field; - -public class BlockUpdateLogger extends AbstractLogger { - public static final BlockUpdateLogger INSTANCE; - - static { - try { - INSTANCE = new BlockUpdateLogger(LoggerRegister.class.getField("__blockUpdate"), "blockUpdate", null, null, false); - } catch (NoSuchFieldException e) { - throw new Error("Failed to init BlockUpdateLogger.", e); - } - } - - protected BlockUpdateLogger(Field acceleratorField, String logName, String def, String[] options, boolean strictOptions) { - super(acceleratorField, logName, def, options, strictOptions); - } - - public void logBlockUpdate(Block updatingBlock, BlockPos updatingBlockPos, Block sourceBlock, BlockPos centreBlockPos) { - // 在1.17.1中,ServerWorld.updateNeighbor方法如下: - // public void updateNeighbor(BlockPos pos, Block sourceBlock, BlockPos neighborPos) - // ^^^^ ^^^^^^^^^ ^^^^^^^ - // 被更新方块 源方块(更新源) 由源方块指定的更新的中心方块 - - // 在1.19.3中,SimpleNeighborUpdater.updateNeighbor方法如下: - // public void updateNeighbor(BlockState state, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) - // ^^^^ ^^^ ^^^^^^^^ ^^^^^ ^^^^ - // 这俩都是被更新的 源 中心 不知道干什么的 - // 在1.19.3中,ChainRestrictedNeighborUpdater.enqueue方法如下: - // private void enqueue(BlockPos pos, Entry entry) - // ^^ ^^^ - // 被更新的 一个封装 - - try { - //#if MC >= 11900 - //$$ super.log(() -> new Text[]{ - //$$ Messenger.c("m " + updatingBlock.getName().getString(), "w block ", - //$$ "m [" + updatingBlockPos.getX() + " " + updatingBlockPos.getY() + " " + updatingBlockPos.getZ() + "]", "w is updated. " + - //$$ "Source block: ", "m " + sourceBlock.getName().getString() + ". ", - //$$ "w Centre block position: ", "m [" + centreBlockPos.getX() + " " + centreBlockPos.getY() + " " + centreBlockPos.getZ() + "]." - //$$ ) - //$$ }); - //#else - super.log(() -> new BaseText[]{ - Messenger.c("m " + updatingBlock.getName().getString(), "w block ", - "g [" + updatingBlockPos.getX() + " " + updatingBlockPos.getY() + " " + updatingBlockPos.getZ() + "]", "w is updated. " + - "Source block: ", "m " + sourceBlock.getName().getString() + ". ", - "w Centre block position: ", "g [" + centreBlockPos.getX() + " " + centreBlockPos.getY() + " " + centreBlockPos.getZ() + "]." - ) - }); - //#endif - } catch (Exception e) { - if (e instanceof ThrowableCCESuppression t) { - throw t; - } - OptCarpetAddition.LOGGER.error("Unexpected exception occurred when logging block update.", e); - } - } -} +//TODO make it compatible with 26.1 +//import carpet.utils.Messenger; +//import io.github.optijava.opt_carpet_addition.OptCarpetAddition; +//import io.github.optijava.opt_carpet_addition.logger.AbstractLogger; +//import io.github.optijava.opt_carpet_addition.logger.LoggerRegister; +//import io.github.optijava.opt_carpet_addition.utils.exceptions.ThrowableCCESuppression; +//import net.minecraft.block.Block; +//import net.minecraft.text.Text; +//import net.minecraft.util.math.BlockPos; +// +//import java.lang.reflect.Field; +// +//public class BlockUpdateLogger extends AbstractLogger { +// public static final BlockUpdateLogger INSTANCE; +// +// static { +// try { +// INSTANCE = new BlockUpdateLogger(LoggerRegister.class.getField("__blockUpdate"), "blockUpdate", null, null, false); +// } catch (NoSuchFieldException e) { +// throw new Error("Failed to init BlockUpdateLogger.", e); +// } +// } +// +// protected BlockUpdateLogger(Field acceleratorField, String logName, String def, String[] options, boolean strictOptions) { +// super(acceleratorField, logName, def, options, strictOptions); +// } +// +// public void logBlockUpdate(Block updatingBlock, BlockPos updatingBlockPos, Block sourceBlock, BlockPos centreBlockPos) { +// // 在1.17.1中,ServerWorld.updateNeighbor方法如下: +// // public void updateNeighbor(BlockPos pos, Block sourceBlock, BlockPos neighborPos) +// // ^^^^ ^^^^^^^^^ ^^^^^^^ +// // 被更新方块 源方块(更新源) 由源方块指定的更新的中心方块 +// +// // 在1.19.3中,SimpleNeighborUpdater.updateNeighbor方法如下: +// // public void updateNeighbor(BlockState state, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) +// // ^^^^ ^^^ ^^^^^^^^ ^^^^^ ^^^^ +// // 这俩都是被更新的 源 中心 不知道干什么的 +// // 在1.19.3中,ChainRestrictedNeighborUpdater.enqueue方法如下: +// // private void enqueue(BlockPos pos, Entry entry) +// // ^^ ^^^ +// // 被更新的 一个封装 +// +// try { +// super.log(() -> new Text[]{ +// Messenger.c("m " + updatingBlock.getName().getString(), "w block ", +// "m [" + updatingBlockPos.getX() + " " + updatingBlockPos.getY() + " " + updatingBlockPos.getZ() + "]", "w is updated. " + +// "Source block: ", "m " + sourceBlock.getName().getString() + ". ", +// "w Centre block position: ", "m [" + centreBlockPos.getX() + " " + centreBlockPos.getY() + " " + centreBlockPos.getZ() + "]." +// ) +// }); +// } catch (Exception e) { +// if (e instanceof ThrowableCCESuppression t) { +// throw t; +// } +// OptCarpetAddition.LOGGER.error("Unexpected exception occurred when logging block update.", e); +// } +// } +//} diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/logger/cceSuppressionCrashLogger/CCESuppressionCrashLogger.java b/src/main/java/io/github/optijava/opt_carpet_addition/logger/cceSuppressionCrashLogger/CCESuppressionCrashLogger.java index 6651115..2d962d8 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/logger/cceSuppressionCrashLogger/CCESuppressionCrashLogger.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/logger/cceSuppressionCrashLogger/CCESuppressionCrashLogger.java @@ -1,42 +1,33 @@ package io.github.optijava.opt_carpet_addition.logger.cceSuppressionCrashLogger; -import carpet.utils.Messenger; -import io.github.optijava.opt_carpet_addition.logger.AbstractLogger; -import io.github.optijava.opt_carpet_addition.logger.LoggerRegister; -//#if MC >= 11900 -//$$ import net.minecraft.text.Text; -//#else -import net.minecraft.text.BaseText; -//#endif -import net.minecraft.util.math.BlockPos; - -import java.lang.reflect.Field; - -public class CCESuppressionCrashLogger extends AbstractLogger { - - public static final CCESuppressionCrashLogger INSTANCE; - - static { - try { - INSTANCE = new CCESuppressionCrashLogger(LoggerRegister.class.getField("__cceSuppressionCrash"), "cceSuppressionCrash", null, null, false); - } catch (NoSuchFieldException e) { - throw new Error("Failed to init UpdateSuppressionLogger", e); - } - } - - protected CCESuppressionCrashLogger(Field acceleratorField, String logName, String def, String[] options, boolean strictOptions) { - super(acceleratorField, logName, def, options, strictOptions); - } - - public void logUpdateSuppression(BlockPos pos) { - if (LoggerRegister.__cceSuppressionCrash) { - //#if MC >= 11900 - //$$ super.log(() -> new Text[]{Messenger.c("w CCE suppression crash prevented in: ", "m world tick ", "w - at: ", "g [ " + pos.toShortString() + " ]")}); - //#else - super.log(() -> new BaseText[]{ - Messenger.c("w CCE suppression crash prevented in: ", "m world tick ", "w - at: ", "g [ " + pos.toShortString() + " ]") - }); - //#endif - } - } -} \ No newline at end of file +//TODO make it compatible with 26.1 +//import carpet.utils.Messenger; +//import io.github.optijava.opt_carpet_addition.logger.AbstractLogger; +//import io.github.optijava.opt_carpet_addition.logger.LoggerRegister; +//import net.minecraft.text.Text; +//import net.minecraft.util.math.BlockPos; +// +//import java.lang.reflect.Field; +// +//public class CCESuppressionCrashLogger extends AbstractLogger { +// +// public static final CCESuppressionCrashLogger INSTANCE; +// +// static { +// try { +// INSTANCE = new CCESuppressionCrashLogger(LoggerRegister.class.getField("__cceSuppressionCrash"), "cceSuppressionCrash", null, null, false); +// } catch (NoSuchFieldException e) { +// throw new Error("Failed to init UpdateSuppressionLogger", e); +// } +// } +// +// protected CCESuppressionCrashLogger(Field acceleratorField, String logName, String def, String[] options, boolean strictOptions) { +// super(acceleratorField, logName, def, options, strictOptions); +// } +// +// public void logUpdateSuppression(BlockPos pos) { +// if (LoggerRegister.__cceSuppressionCrash) { +// super.log(() -> new Text[]{Messenger.c("w CCE suppression crash prevented in: ", "m world tick ", "w - at: ", "g [ " + pos.toShortString() + " ]")}); +// } +// } +//} \ No newline at end of file diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/logger/disk/DiskHUDLogger.java b/src/main/java/io/github/optijava/opt_carpet_addition/logger/disk/DiskHUDLogger.java index 4963999..9adc784 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/logger/disk/DiskHUDLogger.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/logger/disk/DiskHUDLogger.java @@ -1,16 +1,11 @@ package io.github.optijava.opt_carpet_addition.logger.disk; import carpet.logging.LoggerRegistry; +import carpet.utils.Messenger; import io.github.optijava.opt_carpet_addition.logger.AbstractHUDLogger; import io.github.optijava.opt_carpet_addition.logger.LoggerRegister; import net.minecraft.server.MinecraftServer; -//#if MC >= 11900 -//$$ import net.minecraft.text.Text; -//$$ import carpet.utils.Messenger; -//#else -import net.minecraft.text.BaseText; -import net.minecraft.text.LiteralText; -//#endif +import net.minecraft.text.Text; import java.io.File; import java.lang.reflect.Field; @@ -37,31 +32,16 @@ protected DiskHUDLogger(Field acceleratorField, String logName, String def, Stri @Override public void updateHUD(MinecraftServer server) { if (LoggerRegister.__disk) { - //#if MC >= 11900 - //$$ List list = new ArrayList<>(); - //#else - List list = new ArrayList<>(); - //#endif + List list = new ArrayList<>(); - //#if MC >= 11900 - //$$ for (File f : File.listRoots()) { - //$$ if (f.getPath().equals("/")) { - //$$ list.add(Text.of(Messenger.c("g %s %sGB/%sGB".formatted("RootFileSystem", (f.getTotalSpace() - f.getFreeSpace()) / TO_GB, f.getTotalSpace() / TO_GB)))); - //$$ } else { - //$$ list.add(Text.of(Messenger.c("g %s %sGB/%sGB".formatted(f.getPath(), (f.getTotalSpace() - f.getFreeSpace()) / TO_GB, f.getTotalSpace() / TO_GB)))); - //$$ } - //$$ } - //$$ LoggerRegistry.getLogger("disk").log(() -> list.toArray(new Text[0])); - //#else for (File f : File.listRoots()) { if (f.getPath().equals("/")) { - list.add(new LiteralText("%s %sGB/%sGB".formatted("RootFileSystem", (f.getTotalSpace() - f.getFreeSpace()) / TO_GB, f.getTotalSpace() / TO_GB))); + list.add(Text.of(Messenger.c("g %s %sGB/%sGB".formatted("RootFileSystem", (f.getTotalSpace() - f.getFreeSpace()) / TO_GB, f.getTotalSpace() / TO_GB)))); } else { - list.add(new LiteralText("%s %sGB/%sGB".formatted(f.getPath(), (f.getTotalSpace() - f.getFreeSpace()) / TO_GB, f.getTotalSpace() / TO_GB))); + list.add(Text.of(Messenger.c("g %s %sGB/%sGB".formatted(f.getPath(), (f.getTotalSpace() - f.getFreeSpace()) / TO_GB, f.getTotalSpace() / TO_GB)))); } } - LoggerRegistry.getLogger("disk").log(() -> list.toArray(new BaseText[0])); - //#endif + LoggerRegistry.getLogger("disk").log(() -> list.toArray(new Text[0])); } } } \ No newline at end of file diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/logger/updateSuppression/UpdateSuppressionLogger.java b/src/main/java/io/github/optijava/opt_carpet_addition/logger/updateSuppression/UpdateSuppressionLogger.java deleted file mode 100644 index ae1acf0..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/logger/updateSuppression/UpdateSuppressionLogger.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.github.optijava.opt_carpet_addition.logger.updateSuppression; -//#if MC < 11900 -import io.github.optijava.opt_carpet_addition.logger.AbstractLogger; -import io.github.optijava.opt_carpet_addition.logger.LoggerRegister; -import net.minecraft.text.LiteralText; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -import java.lang.reflect.Field; - -public class UpdateSuppressionLogger extends AbstractLogger { - - public static final UpdateSuppressionLogger INSTANCE; - - static { - try { - INSTANCE = new UpdateSuppressionLogger(LoggerRegister.class.getField("__updateSuppression"), "updateSuppression", null, null, false); - } catch (NoSuchFieldException e) { - throw new Error("Failed to init UpdateSuppressionLogger", e); - } - } - - protected UpdateSuppressionLogger(Field acceleratorField, String logName, String def, String[] options, boolean strictOptions) { - super(acceleratorField, logName, def, options, strictOptions); - } - - public void logSuppression(BlockPos neighborPos, String exception, World world) { - super.log(() -> new LiteralText[]{ - new LiteralText("Update Suppression @ %s [%s %s %s] %s".formatted(world.getRegistryKey().getValue().getPath(), neighborPos.getX(), neighborPos.getY(), neighborPos.getZ(), exception)) - }); - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/HUDController_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/HUDController_Mixin.java index 2aec557..617901d 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/HUDController_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/HUDController_Mixin.java @@ -16,7 +16,8 @@ public abstract class HUDController_Mixin { @Inject( method = "update_hud", at = @At(value = "INVOKE", - target = "Ljava/util/Map;keySet()Ljava/util/Set;"), + target = "Ljava/util/Map;keySet()Ljava/util/Set;" + ), remap = false ) private static void injectUpdateHUD(MinecraftServer server, List force, CallbackInfo ci) { diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/ChainRestrictedNeighborUpdater_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/ChainRestrictedNeighborUpdater_Mixin.java index e53575c..e4705ff 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/ChainRestrictedNeighborUpdater_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/ChainRestrictedNeighborUpdater_Mixin.java @@ -1,58 +1,58 @@ -package io.github.optijava.opt_carpet_addition.mixins.logger.blockUpdate; - -//#if MC >= 11900 -//$$ import carpet.CarpetServer; -//$$ import io.github.optijava.opt_carpet_addition.logger.blockUpdate.BlockUpdateLogger; -//$$ import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -//$$ import net.minecraft.block.Block; -//$$ import net.minecraft.util.math.BlockPos; -//$$ import net.minecraft.world.block.ChainRestrictedNeighborUpdater; -//$$ import org.spongepowered.asm.mixin.Mixin; -//$$ import org.spongepowered.asm.mixin.injection.At; -//$$ import org.spongepowered.asm.mixin.injection.Inject; -//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -//$$ -//$$ @Mixin(ChainRestrictedNeighborUpdater.class) -//$$ public class ChainRestrictedNeighborUpdater_Mixin { -//$$ -//$$ @Inject( -//$$ method = "enqueue", -//$$ at = @At("HEAD") -//$$ ) -//$$ private void injectEnqueue(BlockPos updatingBlockPos, ChainRestrictedNeighborUpdater.Entry entry, CallbackInfo ci) { -//$$ if (OptCarpetSettings.allowBlockUpdateLogger) { -//$$ Block updatingBlock = CarpetServer.minecraft_server.getCommandSource().getWorld().getChunk(updatingBlockPos).getBlockState(updatingBlockPos).getBlock(); -//$$ -//$$ Block sourceBlock = null; -//$$ BlockPos centreBlockPos = null; -//$$ -//$$ if (entry instanceof ChainRestrictedNeighborUpdater.SimpleEntry simpleEntry) { -//$$ sourceBlock = simpleEntry.sourceBlock(); -//$$ //#if MC < 12105 -//$$ //$$ centreBlockPos = simpleEntry.sourcePos(); -//$$ //#endif -//$$ } else if (entry instanceof ChainRestrictedNeighborUpdater.StatefulEntry statefulEntry) { -//$$ sourceBlock = statefulEntry.sourceBlock(); -//$$ //#if MC < 12105 -//$$ //$$ centreBlockPos = statefulEntry.sourcePos(); -//$$ //#endif -//$$ } else if (entry instanceof ChainRestrictedNeighborUpdater.SixWayEntry sixWayEntry) { -//$$ sourceBlock = sixWayEntry.sourceBlock; -//$$ //#if MC < 12105 -//$$ //$$ centreBlockPos = sixWayEntry.pos; -//$$ //#endif -//$$ } else if (entry instanceof ChainRestrictedNeighborUpdater.StateReplacementEntry stateReplacementEntry) { -//$$ sourceBlock = stateReplacementEntry.neighborState().getBlock(); -//$$ //#if MC < 12105 -//$$ //$$ centreBlockPos = stateReplacementEntry.neighborPos(); -//$$ //#endif -//$$ } -//$$ //#if MC >= 12105 -//$$ //$$ BlockUpdateLogger.INSTANCE.logBlockUpdate(updatingBlock, updatingBlockPos, sourceBlock); -//$$ //#else -//$$ BlockUpdateLogger.INSTANCE.logBlockUpdate(updatingBlock, updatingBlockPos, sourceBlock, centreBlockPos); -//$$ //#endif -//$$ } -//$$ } -//$$ } -//#endif +//package io.github.optijava.opt_carpet_addition.mixins.logger.blockUpdate; +// +////#if MC >= 11900 +////$$ import carpet.CarpetServer; +////$$ import io.github.optijava.opt_carpet_addition.logger.blockUpdate.BlockUpdateLogger; +////$$ import io.github.optijava.opt_carpet_addition.OptCarpetSettings; +////$$ import net.minecraft.block.Block; +////$$ import net.minecraft.util.math.BlockPos; +////$$ import net.minecraft.world.block.ChainRestrictedNeighborUpdater; +////$$ import org.spongepowered.asm.mixin.Mixin; +////$$ import org.spongepowered.asm.mixin.injection.At; +////$$ import org.spongepowered.asm.mixin.injection.Inject; +////$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +////$$ +////$$ @Mixin(ChainRestrictedNeighborUpdater.class) +////$$ public class ChainRestrictedNeighborUpdater_Mixin { +////$$ +////$$ @Inject( +////$$ method = "enqueue", +////$$ at = @At("HEAD") +////$$ ) +////$$ private void injectEnqueue(BlockPos updatingBlockPos, ChainRestrictedNeighborUpdater.Entry entry, CallbackInfo ci) { +////$$ if (OptCarpetSettings.allowBlockUpdateLogger) { +////$$ Block updatingBlock = CarpetServer.minecraft_server.getCommandSource().getWorld().getChunk(updatingBlockPos).getBlockState(updatingBlockPos).getBlock(); +////$$ +////$$ Block sourceBlock = null; +////$$ BlockPos centreBlockPos = null; +////$$ +////$$ if (entry instanceof ChainRestrictedNeighborUpdater.SimpleEntry simpleEntry) { +////$$ sourceBlock = simpleEntry.sourceBlock(); +////$$ //#if MC < 12105 +////$$ //$$ centreBlockPos = simpleEntry.sourcePos(); +////$$ //#endif +////$$ } else if (entry instanceof ChainRestrictedNeighborUpdater.StatefulEntry statefulEntry) { +////$$ sourceBlock = statefulEntry.sourceBlock(); +////$$ //#if MC < 12105 +////$$ //$$ centreBlockPos = statefulEntry.sourcePos(); +////$$ //#endif +////$$ } else if (entry instanceof ChainRestrictedNeighborUpdater.SixWayEntry sixWayEntry) { +////$$ sourceBlock = sixWayEntry.sourceBlock; +////$$ //#if MC < 12105 +////$$ //$$ centreBlockPos = sixWayEntry.pos; +////$$ //#endif +////$$ } else if (entry instanceof ChainRestrictedNeighborUpdater.StateReplacementEntry stateReplacementEntry) { +////$$ sourceBlock = stateReplacementEntry.neighborState().getBlock(); +////$$ //#if MC < 12105 +////$$ //$$ centreBlockPos = stateReplacementEntry.neighborPos(); +////$$ //#endif +////$$ } +////$$ //#if MC >= 12105 +////$$ //$$ BlockUpdateLogger.INSTANCE.logBlockUpdate(updatingBlock, updatingBlockPos, sourceBlock); +////$$ //#else +////$$ BlockUpdateLogger.INSTANCE.logBlockUpdate(updatingBlock, updatingBlockPos, sourceBlock, centreBlockPos); +////$$ //#endif +////$$ } +////$$ } +////$$ } +////#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/LoggerRegistry_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/LoggerRegistry_Mixin.java index e143433..3c3ec62 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/LoggerRegistry_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/LoggerRegistry_Mixin.java @@ -1,32 +1,32 @@ -package io.github.optijava.opt_carpet_addition.mixins.logger.blockUpdate; - -import carpet.CarpetServer; -import carpet.logging.LoggerRegistry; -import carpet.utils.Messenger; -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.server.command.ServerCommandSource; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.Objects; - -@Mixin(LoggerRegistry.class) -public class LoggerRegistry_Mixin { - - @Inject( - method = "subscribePlayer", - at = @At("HEAD"), - remap = false - ) - private static void injectSubscribePlayer(String playerName, String logName, String option, CallbackInfo ci) { - if (Objects.equals(logName, "blockUpdate") && !OptCarpetSettings.allowBlockUpdateLogger) { - try { - ServerCommandSource commandSource = Objects.requireNonNull(CarpetServer.minecraft_server.getPlayerManager().getPlayer(playerName)).getCommandSource(); - Messenger.m(commandSource, "g Rule allowBlockUpdateLogger was disabled. You can't receive any block update message. Please contact operators."); - } catch (Exception ignored) { - } - } - } -} +//package io.github.optijava.opt_carpet_addition.mixins.logger.blockUpdate; +// +//import carpet.CarpetServer; +//import carpet.logging.LoggerRegistry; +//import carpet.utils.Messenger; +//import io.github.optijava.opt_carpet_addition.OptCarpetSettings; +//import net.minecraft.server.command.ServerCommandSource; +//import org.spongepowered.asm.mixin.Mixin; +//import org.spongepowered.asm.mixin.injection.At; +//import org.spongepowered.asm.mixin.injection.Inject; +//import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +// +//import java.util.Objects; +// +//@Mixin(LoggerRegistry.class) +//public class LoggerRegistry_Mixin { +// +// @Inject( +// method = "subscribePlayer", +// at = @At("HEAD"), +// remap = false +// ) +// private static void injectSubscribePlayer(String playerName, String logName, String option, CallbackInfo ci) { +// if (Objects.equals(logName, "blockUpdate") && !OptCarpetSettings.allowBlockUpdateLogger) { +// try { +// ServerCommandSource commandSource = Objects.requireNonNull(CarpetServer.minecraft_server.getPlayerManager().getPlayer(playerName)).getCommandSource(); +// Messenger.m(commandSource, "g Rule allowBlockUpdateLogger was disabled. You can't receive any block update message. Please contact operators."); +// } catch (Exception ignored) { +// } +// } +// } +//} diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/SimpleNeighborUpdater_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/SimpleNeighborUpdater_Mixin.java index c109ba5..fecd2d2 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/SimpleNeighborUpdater_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/SimpleNeighborUpdater_Mixin.java @@ -1,43 +1,43 @@ -package io.github.optijava.opt_carpet_addition.mixins.logger.blockUpdate; - -//#if MC >= 11900 -//$$ import io.github.optijava.opt_carpet_addition.logger.blockUpdate.BlockUpdateLogger; -//$$ import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -//$$ import net.minecraft.block.Block; -//$$ import net.minecraft.block.BlockState; -//$$ import net.minecraft.util.math.BlockPos; -//$$ import net.minecraft.world.block.SimpleNeighborUpdater; -//$$ import org.spongepowered.asm.mixin.Mixin; -//$$ import org.spongepowered.asm.mixin.injection.At; -//$$ import org.spongepowered.asm.mixin.injection.Inject; -//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -//$$ //#if MC >= 12105 -//$$ //$$ import net.minecraft.world.block.WireOrientation; -//$$ //#endif -//$$ -//$$ @Mixin(SimpleNeighborUpdater.class) -//$$ public class SimpleNeighborUpdater_Mixin { -//$$ -//$$ //#if MC >= 12105 -//$$ //$$ @Inject( -//$$ //$$ method = "updateNeighbor(Lnet/minecraft/block/BlockState;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/Block;Lnet/minecraft/world/block/WireOrientation;Z)V", -//$$ //$$ at = @At("HEAD") -//$$ //$$ ) -//$$ //$$ private void injectUpdateNeighbor(BlockState state, BlockPos pos, Block sourceBlock, WireOrientation orientation, boolean notify, CallbackInfo ci) { -//$$ //$$ if (OptCarpetSettings.allowBlockUpdateLogger) { -//$$ //$$ BlockUpdateLogger.INSTANCE.logBlockUpdate(state.getBlock(), pos, sourceBlock); -//$$ //$$ } -//$$ //$$ } -//$$ //#else -//$$ @Inject( -//$$ method = "updateNeighbor(Lnet/minecraft/block/BlockState;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/Block;Lnet/minecraft/util/math/BlockPos;Z)V", -//$$ at = @At("HEAD") -//$$ ) -//$$ private void injectUpdateNeighbor(BlockState updatingBlockState, BlockPos updatingBlockPos, Block sourceBlock, BlockPos centreBlockPos, boolean notify, CallbackInfo ci) { -//$$ if (OptCarpetSettings.allowBlockUpdateLogger) { -//$$ BlockUpdateLogger.INSTANCE.logBlockUpdate(updatingBlockState.getBlock(), updatingBlockPos, sourceBlock, centreBlockPos); -//$$ } -//$$ } -//$$ //#endif -//$$ } -//#endif \ No newline at end of file +//package io.github.optijava.opt_carpet_addition.mixins.logger.blockUpdate; +// +////#if MC >= 11900 +////$$ import io.github.optijava.opt_carpet_addition.logger.blockUpdate.BlockUpdateLogger; +////$$ import io.github.optijava.opt_carpet_addition.OptCarpetSettings; +////$$ import net.minecraft.block.Block; +////$$ import net.minecraft.block.BlockState; +////$$ import net.minecraft.util.math.BlockPos; +////$$ import net.minecraft.world.block.SimpleNeighborUpdater; +////$$ import org.spongepowered.asm.mixin.Mixin; +////$$ import org.spongepowered.asm.mixin.injection.At; +////$$ import org.spongepowered.asm.mixin.injection.Inject; +////$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +////$$ //#if MC >= 12105 +////$$ //$$ import net.minecraft.world.block.WireOrientation; +////$$ //#endif +////$$ +////$$ @Mixin(SimpleNeighborUpdater.class) +////$$ public class SimpleNeighborUpdater_Mixin { +////$$ +////$$ //#if MC >= 12105 +////$$ //$$ @Inject( +////$$ //$$ method = "updateNeighbor(Lnet/minecraft/block/BlockState;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/Block;Lnet/minecraft/world/block/WireOrientation;Z)V", +////$$ //$$ at = @At("HEAD") +////$$ //$$ ) +////$$ //$$ private void injectUpdateNeighbor(BlockState state, BlockPos pos, Block sourceBlock, WireOrientation orientation, boolean notify, CallbackInfo ci) { +////$$ //$$ if (OptCarpetSettings.allowBlockUpdateLogger) { +////$$ //$$ BlockUpdateLogger.INSTANCE.logBlockUpdate(state.getBlock(), pos, sourceBlock); +////$$ //$$ } +////$$ //$$ } +////$$ //#else +////$$ @Inject( +////$$ method = "updateNeighbor(Lnet/minecraft/block/BlockState;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/Block;Lnet/minecraft/util/math/BlockPos;Z)V", +////$$ at = @At("HEAD") +////$$ ) +////$$ private void injectUpdateNeighbor(BlockState updatingBlockState, BlockPos updatingBlockPos, Block sourceBlock, BlockPos centreBlockPos, boolean notify, CallbackInfo ci) { +////$$ if (OptCarpetSettings.allowBlockUpdateLogger) { +////$$ BlockUpdateLogger.INSTANCE.logBlockUpdate(updatingBlockState.getBlock(), updatingBlockPos, sourceBlock, centreBlockPos); +////$$ } +////$$ } +////$$ //#endif +////$$ } +////#endif \ No newline at end of file diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/World_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/World_Mixin.java index 063bbf6..51e2830 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/World_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/World_Mixin.java @@ -1,29 +1,29 @@ -package io.github.optijava.opt_carpet_addition.mixins.logger.blockUpdate; - -//#if MC < 11900 -import carpet.CarpetServer; -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import io.github.optijava.opt_carpet_addition.logger.blockUpdate.BlockUpdateLogger; -import net.minecraft.block.Block; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(World.class) -public class World_Mixin { - - @Inject( - method = "updateNeighbor", - at = @At("HEAD") - ) - private void injectUpdateNeighbor(BlockPos updatingBlockPos, Block sourceBlock, BlockPos centreBlockPos, CallbackInfo ci) { - if (OptCarpetSettings.allowBlockUpdateLogger) { - Block updatingBlock = CarpetServer.minecraft_server.getCommandSource().getWorld().getChunk(updatingBlockPos).getBlockState(updatingBlockPos).getBlock(); - BlockUpdateLogger.INSTANCE.logBlockUpdate(updatingBlock, updatingBlockPos, sourceBlock, centreBlockPos); - } - } -} -//#endif +//package io.github.optijava.opt_carpet_addition.mixins.logger.blockUpdate; +// +////#if MC < 11900 +////$$import carpet.CarpetServer; +////$$import io.github.optijava.opt_carpet_addition.OptCarpetSettings; +////$$import io.github.optijava.opt_carpet_addition.logger.blockUpdate.BlockUpdateLogger; +////$$import net.minecraft.block.Block; +////$$import net.minecraft.util.math.BlockPos; +////$$import net.minecraft.world.World; +////$$import org.spongepowered.asm.mixin.Mixin; +////$$import org.spongepowered.asm.mixin.injection.At; +////$$import org.spongepowered.asm.mixin.injection.Inject; +////$$import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +// +////$$@Mixin(World.class) +////$$public class World_Mixin { +////$$ +////$$ @Inject( +////$$ method = "updateNeighbor", +////$$ at = @At("HEAD") +////$$ ) +////$$ private void injectUpdateNeighbor(BlockPos updatingBlockPos, Block sourceBlock, BlockPos centreBlockPos, CallbackInfo ci) { +////$$ if (OptCarpetSettings.allowBlockUpdateLogger) { +////$$ Block updatingBlock = CarpetServer.minecraft_server.getCommandSource().getWorld().getChunk(updatingBlockPos).getBlockState(updatingBlockPos).getBlock(); +////$$ BlockUpdateLogger.INSTANCE.logBlockUpdate(updatingBlock, updatingBlockPos, sourceBlock, centreBlockPos); +////$$ } +////$$ } +////$$} +////#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/updateSuppression/World_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/updateSuppression/World_Mixin.java deleted file mode 100644 index 1700cbc..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/updateSuppression/World_Mixin.java +++ /dev/null @@ -1,28 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.logger.updateSuppression; -//#if MC < 11900 -import io.github.optijava.opt_carpet_addition.logger.updateSuppression.UpdateSuppressionLogger; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -@Mixin(value = World.class, priority = 500) -public class World_Mixin { - - @Inject( - method = "updateNeighbor", - at = @At(value = "INVOKE", target = "Lnet/minecraft/util/crash/CrashReport;create(Ljava/lang/Throwable;Ljava/lang/String;)Lnet/minecraft/util/crash/CrashReport;"), - locals = LocalCapture.CAPTURE_FAILHARD - ) - public void injectUpdateNeighbors(BlockPos pos, Block sourceBlock, BlockPos neighborPos, CallbackInfo ci, BlockState blockState, Throwable throwable) { - if (throwable instanceof StackOverflowError) { - UpdateSuppressionLogger.INSTANCE.logSuppression(neighborPos, throwable.getClass().getSimpleName(), ((World) (Object) this)); - } - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/MinecraftServer_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/MinecraftServer_Mixin.java deleted file mode 100644 index 4311ed0..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/MinecraftServer_Mixin.java +++ /dev/null @@ -1,49 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.async; -//#if MC < 11900 -import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import io.github.optijava.opt_carpet_addition.utils.threading.Threading; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.world.ServerWorld; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -import java.util.ConcurrentModificationException; -import java.util.Iterator; -import java.util.function.BooleanSupplier; - -@Mixin(MinecraftServer.class) -public class MinecraftServer_Mixin { - - @Inject( - method = "shutdown()V", - at = @At("HEAD") - ) - public void injectShutdown(CallbackInfo ci) { - OptCarpetAddition.LOGGER.info("[OptCarpetAddition] Closing thread pool..."); - Threading.THREAD_POOL.shutdown(); - OptCarpetAddition.LOGGER.info("[OptCarpetAddition] Thread pool closed successfully!"); - } - - @Inject( - method = {"tickWorlds"}, - at = {@At( - value = "INVOKE", - target = "Lnet/minecraft/util/crash/CrashReport;create(Ljava/lang/Throwable;Ljava/lang/String;)Lnet/minecraft/util/crash/CrashReport;" - )}, - locals = LocalCapture.CAPTURE_FAILHARD, - cancellable = true - ) - public void injectTickWorlds(BooleanSupplier shouldKeepTicking, CallbackInfo ci, @SuppressWarnings("all") Iterator var2, ServerWorld serverWorld, Throwable throwable) { - if (OptCarpetSettings.optimizePlayerConnect && (throwable instanceof ConcurrentModificationException)) { - OptCarpetAddition.LOGGER.fatal("[OptCarpetAddition] Unexpected exception when ticking world: {}", serverWorld.toString(), throwable); - OptCarpetAddition.LOGGER.fatal("[OptCarpetAddition] If you see this message, you may need to restart the server. This exception may cause by OptCarpetAddition, if you think so, please send the reports to GitHub Issues."); - OptCarpetAddition.LOGGER.fatal("[OptCarpetAddition] I'm sorry to hear that."); - ci.cancel(); - } - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/EntityTrackerEntry_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/EntityTrackerEntry_Mixin.java deleted file mode 100644 index 74b83e7..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/EntityTrackerEntry_Mixin.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.async.optimizePlayerConnect; -//#if MC < 11900 -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import io.github.optijava.opt_carpet_addition.utils.threading.Threading; -import net.minecraft.server.network.EntityTrackerEntry; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -import java.util.Iterator; - -@Mixin(EntityTrackerEntry.class) -public class EntityTrackerEntry_Mixin { - - @Redirect( - method = "tick", - at = @At(value = "INVOKE", target = "Ljava/util/Iterator;next()Ljava/lang/Object;") - ) - public Object redirectNext(@SuppressWarnings("all") Iterator instance) { - if (OptCarpetSettings.optimizePlayerConnect) { - synchronized (Threading.LOCK) { - return instance.next(); - } - } else { - return instance.next(); - } - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/PlayerManager_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/PlayerManager_Mixin.java deleted file mode 100644 index 8a55ea1..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/PlayerManager_Mixin.java +++ /dev/null @@ -1,49 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.async.optimizePlayerConnect; -//#if MC < 11900 -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import io.github.optijava.opt_carpet_addition.utils.threading.Threading; -import net.minecraft.server.PlayerManager; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -import java.util.List; -import java.util.Map; - -@Mixin(PlayerManager.class) -public class PlayerManager_Mixin { - - @Redirect( - method = "onPlayerConnect", - at = @At(value = "INVOKE", target = "Ljava/util/List;add(Ljava/lang/Object;)Z") - ) - @SuppressWarnings("unchecked") - public boolean redirectAdd(@SuppressWarnings("all") List instance, Object entity) { - if (OptCarpetSettings.optimizePlayerConnect) { - synchronized (Threading.LOCK) { - instance.add(entity); - } - } else { - instance.add(entity); - } - - return true; - } - - @Redirect( - method = "onPlayerConnect", - at = @At(value = "INVOKE", target = "Ljava/util/Map;put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;") - ) - @SuppressWarnings("unchecked") - public Object redirectPut(@SuppressWarnings("all") Map instance, Object k, Object v) { - if (OptCarpetSettings.optimizePlayerConnect) { - synchronized (Threading.LOCK) { - instance.put(k, v); - } - } else { - instance.put(k, v); - } - return v; - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/ServerLoginNetworkHandler_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/ServerLoginNetworkHandler_Mixin.java deleted file mode 100644 index 624dea2..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/ServerLoginNetworkHandler_Mixin.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.async.optimizePlayerConnect; -//#if MC < 11900 -import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import io.github.optijava.opt_carpet_addition.utils.threading.Threading; -import net.minecraft.server.network.ServerLoginNetworkHandler; -import net.minecraft.server.network.ServerPlayerEntity; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(ServerLoginNetworkHandler.class) -public abstract class ServerLoginNetworkHandler_Mixin { - - /** - * 此优化灵感来源于模组 Very Many Player - *

- * Mixin ServerLoginNetworkHandler.addToServer(Lnet/minecraft/server/network/ServerPlayerEntity;)V - * - * @author OptiJava - * @reason rule: optimizePlayerConnect - */ - @Inject( - method = "addToServer(Lnet/minecraft/server/network/ServerPlayerEntity;)V", - at = @At("HEAD"), - cancellable = true - ) - public void injectAddToServer(ServerPlayerEntity player, CallbackInfo ci) { - if (OptCarpetSettings.optimizePlayerConnect) { - Threading.THREAD_POOL.submit(() -> { - OptCarpetAddition.LOGGER.info("[OptCarpetAddition] PlayerConnectThread started. Thread name: {}", Thread.currentThread().getName()); - OptCarpetAddition.LOGGER.info("[OptCarpetAddition] {} is trying to join the server...", player.getGameProfile().getName()); - try { - ((ServerLoginNetworkHandler) (Object) this).server.getPlayerManager().onPlayerConnect(((ServerLoginNetworkHandler) (Object) this).connection, player); - OptCarpetAddition.LOGGER.info("[OptCarpetAddition] {} joined successfully.", player.getGameProfile().getName()); - } catch (Throwable t) { - OptCarpetAddition.LOGGER.error("[OptCarpetAddition] Unexpected exception when player %s joined the game.".formatted(player.getGameProfile().getName()), t); - } - }); - ci.cancel(); - } - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/ServerWorld_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/ServerWorld_Mixin.java deleted file mode 100644 index 51bc421..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/ServerWorld_Mixin.java +++ /dev/null @@ -1,60 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.async.optimizePlayerConnect; -//#if MC < 11900 -import com.google.common.collect.Lists; -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import io.github.optijava.opt_carpet_addition.utils.threading.Threading; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.server.world.ServerWorld; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Predicate; - -@Mixin({ServerWorld.class}) -public class ServerWorld_Mixin { - @Final - @Shadow - List players; - - @Inject( - method = {"getPlayers()Ljava/util/List;"}, - at = {@At("HEAD")}, - cancellable = true - ) - public void injectGetPlayer(CallbackInfoReturnable> cir) { - if (OptCarpetSettings.optimizePlayerConnect) { - synchronized (Threading.LOCK) { - cir.setReturnValue(this.players); - } - } - } - - @Inject( - method = {"getPlayers(Ljava/util/function/Predicate;)Ljava/util/List;"}, - at = {@At("HEAD")}, - cancellable = true - ) - @SuppressWarnings("unchecked") - public void injectGetPlayer(@SuppressWarnings("all") Predicate predicate, CallbackInfoReturnable> cir) { - if (OptCarpetSettings.optimizePlayerConnect) { - ArrayList list = Lists.newArrayList(); - - synchronized (Threading.LOCK) { - for (ServerPlayerEntity serverPlayerEntity : this.players) { - if (predicate.test(serverPlayerEntity)) { - list.add(serverPlayerEntity); - } - } - cir.setReturnValue(list); - } - } - - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/World_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/World_Mixin.java deleted file mode 100644 index 31713c5..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizePlayerConnect/World_Mixin.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.async.optimizePlayerConnect; -//#if MC < 11900 -import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.entity.Entity; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -import java.util.ConcurrentModificationException; -import java.util.function.Consumer; - -@Mixin(World.class) -public class World_Mixin { - @Inject( - method = "tickEntity", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/util/crash/CrashReport;create(Ljava/lang/Throwable;Ljava/lang/String;)Lnet/minecraft/util/crash/CrashReport;" - ), - locals = LocalCapture.CAPTURE_FAILHARD, - cancellable = true - ) - public void injectTickWorlds(@SuppressWarnings("all") Consumer tickConsumer, Entity entity, CallbackInfo ci, Throwable throwable) { - if (OptCarpetSettings.optimizePlayerConnect && (throwable instanceof ConcurrentModificationException)) { - OptCarpetAddition.LOGGER.fatal("[OptCarpetAddition] Unexpected exception when ticking entity: %s (class %s) in BlockPos %s (in chunk %s %s %s)".formatted(entity.toString(), entity.getClass().toString(), entity.getBlockPos().toString(), entity.getBlockX() / 16, entity.getBlockY() / 16, entity.getBlockZ() / 16), throwable); - OptCarpetAddition.LOGGER.fatal("[OptCarpetAddition] If you see this message, you may need to restart the server. This exception may cause by OptCarpetAddition, if you think so, please send the reports to GitHub Issues."); - OptCarpetAddition.LOGGER.fatal("[OptCarpetAddition] I'm sorry to hear that."); - ci.cancel(); - } - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizeTeleport/ServerPlayNetworkHandler_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizeTeleport/ServerPlayNetworkHandler_Mixin.java deleted file mode 100644 index 4188221..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizeTeleport/ServerPlayNetworkHandler_Mixin.java +++ /dev/null @@ -1,60 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.async.optimizeTeleport; -//#if MC < 11900 -import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import io.github.optijava.opt_carpet_addition.utils.threading.Threading; -import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket; -import net.minecraft.server.network.ServerPlayNetworkHandler; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.math.Vec3d; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.Set; - -@Mixin( - value = ServerPlayNetworkHandler.class, - priority = 900 -) -public abstract class ServerPlayNetworkHandler_Mixin { - - @Shadow - private Vec3d requestedTeleportPos; - @Shadow - private int requestedTeleportId; - @Shadow - private int teleportRequestTick; - @Shadow - public ServerPlayerEntity player; - @Shadow - private int ticks; - - @Inject( - method = "requestTeleport(DDDFFLjava/util/Set;Z)V", - at = @At("HEAD"), - cancellable = true - ) - public void injectRequestTeleport(double x, double y, double z, float yaw, float pitch, Set flags, boolean shouldDismount, CallbackInfo ci) { - if (OptCarpetSettings.optimizeTeleport) { - double d = flags.contains(PlayerPositionLookS2CPacket.Flag.X) ? this.player.getX() : 0.0; - double e = flags.contains(PlayerPositionLookS2CPacket.Flag.Y) ? this.player.getY() : 0.0; - double f = flags.contains(PlayerPositionLookS2CPacket.Flag.Z) ? this.player.getZ() : 0.0; - float g = flags.contains(PlayerPositionLookS2CPacket.Flag.Y_ROT) ? this.player.getYaw() : 0.0f; - float h = flags.contains(PlayerPositionLookS2CPacket.Flag.X_ROT) ? this.player.getPitch() : 0.0f; - this.requestedTeleportPos = new Vec3d(x, y, z); - if (++this.requestedTeleportId == Integer.MAX_VALUE) { - this.requestedTeleportId = 0; - } - this.teleportRequestTick = this.ticks; - this.player.updatePositionAndAngles(x, y, z, yaw, pitch); - - OptCarpetAddition.LOGGER.info("[OptCarpetAddition] Submit teleport task."); - Threading.THREAD_POOL.submit(() -> this.player.networkHandler.sendPacket(new PlayerPositionLookS2CPacket(x - d, y - e, z - f, yaw - g, pitch - h, flags, this.requestedTeleportId, shouldDismount))); - ci.cancel(); - } - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizeTeleport/ServerPlayerEntity_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizeTeleport/ServerPlayerEntity_Mixin.java deleted file mode 100644 index 1ba9f46..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/async/optimizeTeleport/ServerPlayerEntity_Mixin.java +++ /dev/null @@ -1,69 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.async.optimizeTeleport; -//#if MC < 11900 -import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import io.github.optijava.opt_carpet_addition.utils.threading.Threading; -import net.minecraft.entity.Entity; -import net.minecraft.network.packet.s2c.play.DifficultyS2CPacket; -import net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.world.WorldProperties; -import net.minecraft.world.biome.source.BiomeAccess; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin( - value = ServerPlayerEntity.class, - priority = 900 -) -public abstract class ServerPlayerEntity_Mixin { - - @Inject( - method = "teleport", - at = @At("HEAD"), - cancellable = true - ) - public void injectTeleport(ServerWorld targetWorld, double x, double y, double z, float yaw, float pitch, CallbackInfo ci) { - if (OptCarpetSettings.optimizeTeleport) { - OptCarpetAddition.LOGGER.info("[OptCarpetAddition] Submit teleport task."); - - Threading.THREAD_POOL.submit(() -> { - ServerPlayerEntity thisInstance = ((ServerPlayerEntity) (Object) this); - - thisInstance.setCameraEntity(thisInstance); - thisInstance.stopRiding(); - if (targetWorld == thisInstance.world) { - thisInstance.networkHandler.requestTeleport(x, y, z, yaw, pitch); - } else { - //#if MC >= 11800 - //$$ ServerWorld serverWorld = thisInstance.getWorld(); - //#elseif MC < 11800 - ServerWorld serverWorld = thisInstance.getServerWorld(); - //#endif - WorldProperties worldProperties = targetWorld.getLevelProperties(); - //#if MC >= 11800 - //$$ thisInstance.networkHandler.sendPacket(new PlayerRespawnS2CPacket(targetWorld.method_40134(), targetWorld.getRegistryKey(), BiomeAccess.hashSeed(targetWorld.getSeed()), thisInstance.interactionManager.getGameMode(), thisInstance.interactionManager.getPreviousGameMode(), targetWorld.isDebugWorld(), targetWorld.isFlat(), true)); - //#else - thisInstance.networkHandler.sendPacket(new PlayerRespawnS2CPacket(targetWorld.getDimension(), targetWorld.getRegistryKey(), BiomeAccess.hashSeed(targetWorld.getSeed()), thisInstance.interactionManager.getGameMode(), thisInstance.interactionManager.getPreviousGameMode(), targetWorld.isDebugWorld(), targetWorld.isFlat(), true)); - //#endif - thisInstance.networkHandler.sendPacket(new DifficultyS2CPacket(worldProperties.getDifficulty(), worldProperties.isDifficultyLocked())); - thisInstance.server.getPlayerManager().sendCommandTree(thisInstance); - serverWorld.removePlayer(thisInstance, Entity.RemovalReason.CHANGED_DIMENSION); - thisInstance.unsetRemoved(); - thisInstance.refreshPositionAndAngles(x, y, z, yaw, pitch); - thisInstance.setWorld(targetWorld); - targetWorld.onPlayerTeleport(thisInstance); - thisInstance.worldChanged(serverWorld); - thisInstance.networkHandler.requestTeleport(x, y, z, yaw, pitch); - thisInstance.server.getPlayerManager().sendWorldInfo(thisInstance, targetWorld); - thisInstance.server.getPlayerManager().sendPlayerStatus(thisInstance); - } - }); - ci.cancel(); - } - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/cceSuppressionCrashFix/MinecraftServer_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/cceSuppressionCrashFix/MinecraftServer_Mixin.java deleted file mode 100644 index 5025d36..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/cceSuppressionCrashFix/MinecraftServer_Mixin.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.cceSuppressionCrashFix; - -//#if MC < 12100 -import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import io.github.optijava.opt_carpet_addition.logger.cceSuppressionCrashLogger.CCESuppressionCrashLogger; -import io.github.optijava.opt_carpet_addition.utils.exceptions.ThrowableCCESuppression; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.world.ServerWorld; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -import java.util.Iterator; -import java.util.function.BooleanSupplier; - -@Mixin(MinecraftServer.class) -public class MinecraftServer_Mixin { - - @Inject( - method = {"tickWorlds"}, - at = {@At( - value = "INVOKE", - target = "Lnet/minecraft/util/crash/CrashReport;create(Ljava/lang/Throwable;Ljava/lang/String;)Lnet/minecraft/util/crash/CrashReport;" - )}, - locals = LocalCapture.CAPTURE_FAILHARD, - cancellable = true - ) - public void injectTickWorlds(BooleanSupplier shouldKeepTicking, CallbackInfo ci, @SuppressWarnings("all") Iterator var2, ServerWorld serverWorld, Throwable throwable) { - if (OptCarpetSettings.cceSuppressionCrashFix && (throwable instanceof ThrowableCCESuppression || throwable.getCause() instanceof ThrowableCCESuppression)) { - try { - if (throwable instanceof ThrowableCCESuppression) { - CCESuppressionCrashLogger.INSTANCE.logUpdateSuppression(((ThrowableCCESuppression) throwable).pos); - } else { - CCESuppressionCrashLogger.INSTANCE.logUpdateSuppression(((ThrowableCCESuppression) throwable.getCause()).pos); - } - } catch (Exception e){ - OptCarpetAddition.LOGGER.error("Exception when handle CCE in MinecraftServer.tickWorlds(...)", e); - } - - ci.cancel(); - } - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/cceSuppressionCrashFix/ShulkerBoxBlock_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/cceSuppressionCrashFix/ShulkerBoxBlock_Mixin.java deleted file mode 100644 index e55c03f..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/cceSuppressionCrashFix/ShulkerBoxBlock_Mixin.java +++ /dev/null @@ -1,39 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.cceSuppressionCrashFix; - -//#if MC < 12100 -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import io.github.optijava.opt_carpet_addition.utils.exceptions.ThrowableCCESuppression; -import net.minecraft.block.BlockState; -import net.minecraft.block.ShulkerBoxBlock; -import net.minecraft.inventory.Inventory; -import net.minecraft.screen.ScreenHandler; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(ShulkerBoxBlock.class) -public class ShulkerBoxBlock_Mixin { - - @Inject( - method = "getComparatorOutput", - at = @At("HEAD"), - cancellable = true - ) - public void injectGetComparatorOutput(BlockState state, World world, BlockPos pos, CallbackInfoReturnable cir) { - if (OptCarpetSettings.cceSuppressionCrashFix) { - int var1; - try { - var1 = ScreenHandler.calculateComparatorOutput((Inventory)((Object)world.getBlockEntity(pos))); - } catch (ClassCastException e) { - throw new ThrowableCCESuppression(e.getMessage(), pos, e); - } - cir.setReturnValue(var1); - } else { - cir.setReturnValue(ScreenHandler.calculateComparatorOutput((Inventory)((Object)world.getBlockEntity(pos)))); - } - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/commandLogger/CommandManager_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/commandLogger/CommandManager_Mixin.java index 3ab6568..926492a 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/commandLogger/CommandManager_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/commandLogger/CommandManager_Mixin.java @@ -1,13 +1,7 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.commandLogger; -//#if MC >= 11900 -//$$ import com.mojang.brigadier.ParseResults; -//#endif - -//#if MC >= 12000 -//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -//#endif - +import com.mojang.brigadier.ParseResults; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import carpet.CarpetServer; import carpet.utils.Messenger; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; @@ -20,7 +14,6 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(CommandManager.class) @@ -33,18 +26,8 @@ public class CommandManager_Mixin { method = "execute", at = @At("HEAD") ) - //#if MC >= 12004 - //$$ public void injectExecute(ParseResults parseResults, String command, CallbackInfo ci) { - //#elseif MC >= 12000 - //$$ public void injectExecute(ParseResults parseResults, String command, CallbackInfoReturnable cir) { - //#elseif MC >= 11900 - //$$ public void injectExecute(ParseResults parseResults, String command, CallbackInfoReturnable cir) { - //#else - public void injectExecute(ServerCommandSource commandSource, String command, CallbackInfoReturnable cir) { - //#endif - //#if MC >= 11900 - //$$ ServerCommandSource commandSource = parseResults.getContext().getSource(); - //#endif + public void injectExecute(ParseResults parseResults, String command, CallbackInfo ci) { + ServerCommandSource commandSource = parseResults.getContext().getSource(); if (!OptCarpetSettings.commandLoggerConfigBean.logAllCommand && OptCarpetSettings.commandLogger) { if (OptCarpetSettings.commandLoggerConfigBean.LogCommandWhitelist.contains(command)) { diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEnderManPickupGoal/EnderManEntity_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEnderManPickupGoal/EnderManEntity_Mixin.java index 6539963..b5fb380 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEnderManPickupGoal/EnderManEntity_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEnderManPickupGoal/EnderManEntity_Mixin.java @@ -1,22 +1,22 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.disabledEnderManPickupGoal; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.entity.mob.EndermanEntity; +import net.minecraft.world.entity.monster.EnderMan; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(EndermanEntity.PickUpBlockGoal.class) +@Mixin(EnderMan.EndermanTakeBlockGoal.class) public class EnderManEntity_Mixin { - /** +/** * Mixin EndermanEntity.PickUpBlockGoal.tick()V * * @author OptiJava * @reason rule: disabledEnderManPickupGoal */ @Inject( - method = "tick()V", + method = "tick", at = @At("HEAD"), cancellable = true ) diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEnderManPlaceBlockGoal/EndermanEntity_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEnderManPlaceBlockGoal/EndermanEntity_Mixin.java index fe11fa2..c01ca07 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEnderManPlaceBlockGoal/EndermanEntity_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEnderManPlaceBlockGoal/EndermanEntity_Mixin.java @@ -1,22 +1,23 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.disabledEnderManPlaceBlockGoal; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.entity.mob.EndermanEntity; +import net.minecraft.world.entity.monster.EnderMan; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(EndermanEntity.PlaceBlockGoal.class) +@Mixin(EnderMan.EndermanLeaveBlockGoal.class) public class EndermanEntity_Mixin { - /** + // TODO(Ravel): target method tick with the signature not found +/** * Mixin EndermanEntity.PlaceBlockGoal.tick()V * * @author OptiJava * @reason rule: disabledEnderManPlaceBlockGoal */ @Inject( - method = "tick()V", + method = "tick", at = @At("HEAD"), cancellable = true ) diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEntityTick/ServerWorld_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEntityTick/ServerWorld_Mixin.java index cab2ab1..62c4b8b 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEntityTick/ServerWorld_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEntityTick/ServerWorld_Mixin.java @@ -1,13 +1,13 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.disabledEntityTick; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.server.world.ServerWorld; +import net.minecraft.server.level.ServerLevel; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ServerWorld.class) +@Mixin(ServerLevel.class) public class ServerWorld_Mixin { /** * Mixin ServerWorld.tick(Ljava/util/function/BooleanSupplier;)V @@ -16,8 +16,8 @@ public class ServerWorld_Mixin { * @reason rule: disabledEntityTick */ @Inject( - method = "tick(Ljava/util/function/BooleanSupplier;)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/server/world/ServerWorld;resetIdleTimeout()V"), + method = "tick", + at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerLevel;resetEmptyTime()V"), cancellable = true ) public void injectTick(CallbackInfo ci) { diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledLayEggs/ChickenEntity_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledLayEggs/ChickenEntity_Mixin.java index 7440b6d..b096038 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledLayEggs/ChickenEntity_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledLayEggs/ChickenEntity_Mixin.java @@ -1,16 +1,16 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.disabledLayEggs; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.entity.passive.ChickenEntity; +import net.minecraft.world.entity.animal.Chicken; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ChickenEntity.class) +@Mixin(Chicken.class) public class ChickenEntity_Mixin { - /** +/** * Mixin ChickenEntity.tickMovement()V * * @author OptiJava @@ -18,11 +18,11 @@ public class ChickenEntity_Mixin { */ @Inject( at = @At("HEAD"), - method = "tickMovement()V" + method = "aiStep" ) public void injectTickMovement(CallbackInfo callbackInfo) { if (OptCarpetSettings.disabledLayEggs) { - ((ChickenEntity) (Object) this).eggLayTime = 50; + ((Chicken) (Object) this).eggTime = 50; } } } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledNetherPortalSpawn/NetherPortalBlock_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledNetherPortalSpawn/NetherPortalBlock_Mixin.java index e2f822c..46c4caf 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledNetherPortalSpawn/NetherPortalBlock_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledNetherPortalSpawn/NetherPortalBlock_Mixin.java @@ -1,7 +1,7 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.disabledNetherPortalSpawn; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.block.NetherPortalBlock; +import net.minecraft.world.level.block.NetherPortalBlock; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -16,11 +16,7 @@ public class NetherPortalBlock_Mixin { * @reason rule: disabledNetherPortalSpawn */ @Inject( - //#if MC >= 11900 - //$$ method = "randomTick", - //#else - method = "randomTick(Lnet/minecraft/block/BlockState;Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/util/math/BlockPos;Ljava/util/Random;)V", - //#endif + method = "randomTick", at = @At("HEAD"), cancellable = true ) diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledUpdateSuppressionErrorStackTrace/NetworkThreadUtils_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledUpdateSuppressionErrorStackTrace/NetworkThreadUtils_Mixin.java deleted file mode 100644 index 84eb232..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledUpdateSuppressionErrorStackTrace/NetworkThreadUtils_Mixin.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.disabledUpdateSuppressionErrorStackTrace; -//#if MC >= 11900 -//$$ -//#elseif MC >= 11800 -//$$ import carpet.helpers.ThrowableSuppression; -//$$ import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -//$$ import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -//$$ import net.minecraft.network.NetworkThreadUtils; -//$$ import org.slf4j.Logger; -//$$ import org.spongepowered.asm.mixin.Mixin; -//$$ import org.spongepowered.asm.mixin.injection.At; -//$$ import org.spongepowered.asm.mixin.injection.Redirect; -//$$ -//$$ @Mixin(NetworkThreadUtils.class) -//$$ public class NetworkThreadUtils_Mixin { -//$$ -//$$ @Redirect( -//$$ method = "method_11072", -//$$ at = @At( -//$$ value = "INVOKE", -//$$ target = "Lorg/slf4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V", -//$$ remap = false -//$$ ) -//$$ ) -//$$ private static void redirectError(Logger instance, String s, Object packet, Object exception) { -//$$ if (!(OptCarpetSettings.disabledUpdateSuppressionErrorStackTrace && exception instanceof Exception e && (e instanceof ThrowableSuppression || e.getCause() instanceof ThrowableSuppression))) { -//$$ instance.error("Failed to handle packet {}, suppressing error", packet, exception); -//$$ } else { -//$$ OptCarpetAddition.LOGGER.info("[OptCarpetAddition] Update Suppression."); -//$$ } -//$$ } -//$$ } -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledUpdateSuppressionErrorStackTrace/ThreadExecutor_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledUpdateSuppressionErrorStackTrace/ThreadExecutor_Mixin.java deleted file mode 100644 index 4bf88d9..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledUpdateSuppressionErrorStackTrace/ThreadExecutor_Mixin.java +++ /dev/null @@ -1,43 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.disabledUpdateSuppressionErrorStackTrace; -//#if MC < 11900 -import carpet.helpers.ThrowableSuppression; -import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.util.thread.ThreadExecutor; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -@Mixin(ThreadExecutor.class) -public class ThreadExecutor_Mixin { - - /** - * Mixin ThreadExecutor.executeTask(Ljava/lang/Runnable;)V - * - * @author OptiJava - * @reason rule: disabledUpdateSuppressionErrorStackTrace - */ - @Inject( - method = "executeTask", - at = @At( - value = "INVOKE", - //#if MC >= 11800 - //$$ target = "Lorg/slf4j/Logger;error(Lorg/slf4j/Marker;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V", - //#else - target = "Lorg/apache/logging/log4j/Logger;fatal(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V", - //#endif - remap = false - ), - cancellable = true, - locals = LocalCapture.CAPTURE_FAILHARD - ) - public void injectExecuteTask(Runnable task, CallbackInfo ci, Exception exception) { - if (OptCarpetSettings.disabledUpdateSuppressionErrorStackTrace && (exception instanceof ThrowableSuppression || exception.getCause() instanceof ThrowableSuppression)) { - OptCarpetAddition.LOGGER.info("[OptCarpetAddition] Update Suppression."); - ci.cancel(); - } - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disallowRedstoneWireConnectsToOpenTrapdoor/RedstoneWireBlock_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disallowRedstoneWireConnectsToOpenTrapdoor/RedstoneWireBlock_Mixin.java index 11a0b27..740ba06 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disallowRedstoneWireConnectsToOpenTrapdoor/RedstoneWireBlock_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disallowRedstoneWireConnectsToOpenTrapdoor/RedstoneWireBlock_Mixin.java @@ -1,25 +1,25 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.disallowRedstoneWireConnectsToOpenTrapdoor; -//#if MC >= 12000 -//$$ import net.minecraft.block.*; -//$$ import org.spongepowered.asm.mixin.Mixin; -//$$ import org.spongepowered.asm.mixin.injection.At; -//$$ import org.spongepowered.asm.mixin.injection.Redirect; -//$$ -//$$ import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -//$$ -//$$ @Mixin(value = RedstoneWireBlock.class, priority = 2000) -//$$ public class RedstoneWireBlock_Mixin { -//$$ @Redirect( -//$$ method = "getRenderConnectionType(Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/Direction;Z)Lnet/minecraft/block/enums/WireConnection;", -//$$ at = @At(value = "INVOKE", target = "Lnet/minecraft/block/BlockState;getBlock()Lnet/minecraft/block/Block;") -//$$ ) -//$$ private Block redirectGetBlock(BlockState instance) { -//$$ if (OptCarpetSettings.disallowRedstoneWireConnectsToOpenTrapdoor) { -//$$ return (RedstoneWireBlock) (Object) this; -//$$ } else { -//$$ return instance.getBlock(); -//$$ } -//$$ } -//$$ } -//#endif + import net.minecraft.world.level.block.Block; + import net.minecraft.world.level.block.RedStoneWireBlock; + import net.minecraft.world.level.block.state.BlockState; + import org.spongepowered.asm.mixin.Mixin; + import org.spongepowered.asm.mixin.injection.At; + import org.spongepowered.asm.mixin.injection.Redirect; + + import io.github.optijava.opt_carpet_addition.OptCarpetSettings; + + @Mixin(value = RedStoneWireBlock.class,priority = 2000) + public class RedstoneWireBlock_Mixin { + @Redirect( + method = "getConnectingSide(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;Z)Lnet/minecraft/world/level/block/state/properties/RedstoneSide;", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;getBlock()Lnet/minecraft/world/level/block/Block;") + ) + private Block redirectGetBlock(BlockState instance) { + if (OptCarpetSettings.disallowRedstoneWireConnectsToOpenTrapdoor) { + return (RedStoneWireBlock) (Object) this; + } else { + return instance.getBlock(); + } + } + } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/dropperCrashFix/DispenserBlock_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/dropperCrashFix/DispenserBlock_Mixin.java deleted file mode 100644 index 8685e98..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/dropperCrashFix/DispenserBlock_Mixin.java +++ /dev/null @@ -1,28 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.dropperCrashFix; -//#if MC < 11900 -import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.block.DispenserBlock; -import net.minecraft.block.entity.DispenserBlockEntity; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.math.BlockPos; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(DispenserBlock.class) -public class DispenserBlock_Mixin { - @Inject( - method = "dispense", - at = @At("HEAD"), - cancellable = true - ) - public void injectDispense(ServerWorld world, BlockPos pos, CallbackInfo ci) { - if (OptCarpetSettings.dropperCrashFix && !(world.getBlockEntity(pos) instanceof DispenserBlockEntity)) { - OptCarpetAddition.LOGGER.fatal("[OptCarpetAddition] Detected dispenser crash at %s [%s %s %s]".formatted(world.getRegistryKey().getValue().getPath(), pos.getX(), pos.getY(), pos.getZ())); - ci.cancel(); - } - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/dropperCrashFix/DropperBlock_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/dropperCrashFix/DropperBlock_Mixin.java deleted file mode 100644 index e31c731..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/dropperCrashFix/DropperBlock_Mixin.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.dropperCrashFix; -//#if MC < 11900 -import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.block.DropperBlock; -import net.minecraft.block.entity.DropperBlockEntity; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.math.BlockPos; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(DropperBlock.class) -public class DropperBlock_Mixin { - - @Inject( - method = "dispense", - at = @At("HEAD"), - cancellable = true - ) - public void injectDispense(ServerWorld world, BlockPos pos, CallbackInfo ci) { - if (OptCarpetSettings.dropperCrashFix && !(world.getBlockEntity(pos) instanceof DropperBlockEntity)) { - OptCarpetAddition.LOGGER.fatal("[OptCarpetAddition] Detected dropper crash at %s [%s %s %s]".formatted(world.getRegistryKey().getValue().getPath(), pos.getX(), pos.getY(), pos.getZ())); - ci.cancel(); - } - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java index 8779a2f..b0da97a 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java @@ -3,17 +3,8 @@ import carpet.patches.EntityPlayerMPFake; import com.mojang.authlib.GameProfile; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -//#if MC >= 11900 -//$$ import net.minecraft.util.Uuids; -//#endif -//#if MC >= 12110 -//$$ import net.minecraft.server.ServerConfigHandler; -//$$ import net.minecraft.server.MinecraftServer; -//$$ import java.util.UUID; -//#else -import net.minecraft.entity.player.PlayerEntity; -//#endif -import net.minecraft.util.UserCache; +import net.minecraft.core.UUIDUtil; +import net.minecraft.server.players.GameProfileCache; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -22,21 +13,17 @@ @Mixin(EntityPlayerMPFake.class) public abstract class EntityPlayerMPFake_Mixin { - //#if MC < 12110 + //? if < 1.21.10 { @Redirect( method = "createFake", - at = @At(value = "INVOKE", target = "Lnet/minecraft/util/UserCache;findByName(Ljava/lang/String;)Ljava/util/Optional;") + at = @At(value = "INVOKE", target = "Lnet/minecraft/server/players/GameProfileCache;get(Ljava/lang/String;)Ljava/util/Optional;") ) - private static Optional redirectCreateFake(UserCache instance, String playerName) { + private static Optional redirectCreateFake(GameProfileCache instance, String playerName) { if (OptCarpetSettings.optimizeFakePlayerSpawn) { - //#if MC >= 11900 - //$$ return Optional.of(new GameProfile(Uuids.getOfflinePlayerUuid(playerName), playerName)); - //#else - return Optional.of(new GameProfile(PlayerEntity.getOfflinePlayerUuid(playerName), playerName)); - //#endif + return Optional.of(new GameProfile(UUIDUtil.createOfflinePlayerUUID(playerName), playerName)); } else { - return instance.findByName(playerName); + return instance.get(playerName); } } - //#endif + //?} } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java index e7b3694..b2f8e52 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java @@ -3,22 +3,8 @@ import carpet.commands.PlayerCommand; import com.mojang.authlib.GameProfile; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -//#if MC >= 11900 -//$$ import net.minecraft.util.Uuids; -//#endif -//#if MC >= 12110 -//$$ import net.minecraft.server.ServerConfigHandler; -//$$ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -//$$ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -//$$ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -//$$ import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -//$$ import net.minecraft.server.PlayerConfigEntry; -//$$ import net.minecraft.util.NameToIdCache; -//$$ import java.util.UUID; -//#else -import net.minecraft.entity.player.PlayerEntity; -//#endif -import net.minecraft.util.UserCache; +import net.minecraft.core.UUIDUtil; +import net.minecraft.server.players.GameProfileCache; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -27,21 +13,17 @@ @Mixin(PlayerCommand.class) public abstract class PlayerCommand_Mixin { - //#if MC < 12110 + //? if < 1.21.10 { @Redirect( method = "cantSpawn", - at = @At(value = "INVOKE", target = "Lnet/minecraft/util/UserCache;findByName(Ljava/lang/String;)Ljava/util/Optional;") + at = @At(value = "INVOKE", target = "Lnet/minecraft/server/players/GameProfileCache;get(Ljava/lang/String;)Ljava/util/Optional;") ) - private static Optional redirectFindByName(UserCache instance, String playerName) { + private static Optional redirectFindByName(GameProfileCache instance, String playerName) { if (OptCarpetSettings.optimizeFakePlayerSpawn) { - //#if MC >= 11900 - //$$ return Optional.of(new GameProfile(Uuids.getOfflinePlayerUuid(playerName), playerName)); - //#else - return Optional.of(new GameProfile(PlayerEntity.getOfflinePlayerUuid(playerName), playerName)); - //#endif + return Optional.of(new GameProfile(UUIDUtil.createOfflinePlayerUUID(playerName), playerName)); } else { - return instance.findByName(playerName); + return instance.get(playerName); } } - //#endif + //?} } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayerEntity_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayerEntity_Mixin.java index 86b8017..abfb9f4 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayerEntity_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayerEntity_Mixin.java @@ -1,43 +1,35 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.enchantment.Enchantments; -import net.minecraft.entity.damage.DamageSource; -import net.minecraft.item.ItemStack; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.world.GameRules; +import net.minecraft.core.component.DataComponentType; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.enchantment.Enchantments; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.util.Objects; - -@Mixin(ServerPlayerEntity.class) +@Mixin(ServerPlayer.class) public class ServerPlayerEntity_Mixin { - - @Inject( - method = "onDeath", - at = @At("HEAD") - ) - public void injectOnDeath(DamageSource source, CallbackInfo ci) { - //#if MC >= 12000 - //$$ if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && ((ServerPlayerEntity) (Object)this).getWorld().getGameRules().getBoolean(GameRules.KEEP_INVENTORY) && Objects.equals(source.getName(), "inWall")) { - //#else - if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && ((ServerPlayerEntity) (Object)this).world.getGameRules().getBoolean(GameRules.KEEP_INVENTORY) && Objects.equals(source.getName(), "inWall")) { - //#endif - for (ItemStack armor : ((ServerPlayerEntity) (Object)this).getArmorItems()) { - //#if MC >= 12100 - //$$ if (EnchantmentHelper.hasAnyEnchantmentsWith(armor, net.minecraft.component.EnchantmentEffectComponentTypes.PREVENT_EQUIPMENT_DROP)) { - //$$ armor.setCount(0); - //$$ } - //#else - if (EnchantmentHelper.getLevel(Enchantments.BINDING_CURSE, armor) > 0) { - armor.setCount(0); - } - //#endif - } - } - } + //TODO support 26.1 +// @Inject( +// method = "die", +// at = @At("HEAD") +// ) +// public void injectOnDeath(DamageSource source, CallbackInfo ci) { +// if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && ((ServerPlayerEntity) (Object)this).getWorld().().getBoolean(GameRules.KEEP_INVENTORY) && Objects.equals(source.getName(), "inWall")) { +// for (ItemStack armor : ((ServerPlayer) (Object)this).getArmorItems()) { +// if (EnchantmentHelper.has(armor, DataComponentType)) { +// armor.setCount(0); +// } +// +// if (EnchantmentHelper.getItemEnchantmentLevel(, armor) > 0) { +// armor.setCount(0); +// } +// } +// } +// } } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeBats/BatEntity_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeBats/BatEntity_Mixin.java index 7231fd0..82c6854 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeBats/BatEntity_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeBats/BatEntity_Mixin.java @@ -1,35 +1,28 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.removeBats; +import carpet.script.api.WorldAccess; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.SpawnReason; -import net.minecraft.entity.passive.BatEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.WorldAccess; +import net.minecraft.core.BlockPos; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.EntitySpawnReason; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ambient.Bat; +import net.minecraft.world.level.LevelAccessor; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.util.Random; - -@Mixin(BatEntity.class) +@Mixin(Bat.class) public class BatEntity_Mixin { @Inject( - method = "canSpawn", + method = "checkBatSpawnRules", at = @At("HEAD"), cancellable = true ) - //#if MC == 12001 - //$$ private static void injectCanSpawn(EntityType type, WorldAccess world, SpawnReason spawnReason, BlockPos pos, net.minecraft.util.math.random.Random random, CallbackInfoReturnable cir) { - //#elseif MC >= 11900 - //$$ private static void injectCanSpawn(EntityType type, WorldAccess world, SpawnReason spawnReason, BlockPos pos, net.minecraft.util.math.random.Random random, CallbackInfoReturnable cir) { - //#else - private static void injectCanSpawn(EntityType type, WorldAccess world, SpawnReason spawnReason, BlockPos pos, Random random, CallbackInfoReturnable cir) { - //#endif + private static void injectCanSpawn(EntityType entityType, LevelAccessor levelAccessor, EntitySpawnReason entitySpawnReason, BlockPos blockPos, RandomSource randomSource, CallbackInfoReturnable cir) { if (OptCarpetSettings.removeBats) { cir.setReturnValue(false); - cir.cancel(); } } } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/unescapeChatMessage/ChatMessageC2SPacket_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/unescapeChatMessage/ChatMessageC2SPacket_Mixin.java index 68bec37..67fc004 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/unescapeChatMessage/ChatMessageC2SPacket_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/unescapeChatMessage/ChatMessageC2SPacket_Mixin.java @@ -1,14 +1,14 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.unescapeChatMessage; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket; +import net.minecraft.network.protocol.game.ServerboundChatPacket; import org.apache.commons.lang3.StringEscapeUtils; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ChatMessageC2SPacket.class) +@Mixin(ServerboundChatPacket.class) public class ChatMessageC2SPacket_Mixin { /** @@ -22,7 +22,7 @@ public class ChatMessageC2SPacket_Mixin { public void injectInit(CallbackInfo ci) { if (OptCarpetSettings.unescapeChatMessage) { try { - ((ChatMessageC2SPacket) (Object) this).chatMessage = StringEscapeUtils.unescapeJava(((ChatMessageC2SPacket) (Object) this).chatMessage); + ((ServerboundChatPacket) (Object) this).message = StringEscapeUtils.unescapeJava(((ServerboundChatPacket) (Object) this).message); } catch (Exception ignore) { } } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/unescapeChatMessage/Screen_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/unescapeChatMessage/Screen_Mixin.java deleted file mode 100644 index 6461657..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/unescapeChatMessage/Screen_Mixin.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.unescapeChatMessage; -//#if MC < 11900 -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.client.gui.screen.Screen; -import org.apache.commons.lang3.StringEscapeUtils; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyArg; - -@Mixin(Screen.class) -public class Screen_Mixin { - - /** - * Mixin Screen.sendMessage(Ljava/lang/String;)V - * - * @author OptiJava - * @reason rule: unescapeChatMessage - */ - @ModifyArg(method = "sendMessage(Ljava/lang/String;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/Screen;sendMessage(Ljava/lang/String;Z)V"), index = 0) - @SuppressWarnings("all") - public String injectSendMessage(String message) { - if (OptCarpetSettings.unescapeChatMessage) { - try { - return StringEscapeUtils.unescapeJava(message); - } catch (Exception e) { - return message; - } - } else { - return message; - } - } -} -//#endif diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java b/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java index a63f421..42ce9d4 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java @@ -3,19 +3,19 @@ import carpet.CarpetServer; import com.mojang.authlib.GameProfile; import net.minecraft.server.MinecraftServer; -//#if MC >= 12110 -//$$ import net.minecraft.server.PlayerConfigEntry; -//#endif +//? > 1.21.10 +//import net.minecraft.server.PlayerConfigEntry; + public class McUtils { private static final MinecraftServer server = CarpetServer.minecraft_server; public static boolean isOp(GameProfile gameProfile) { - //#if MC < 12110 - return server.getPlayerManager().isOperator(gameProfile); - //#else - //$$ return server.getPlayerManager().isOperator(server.getPlayerManager().getPlayer(gameProfile.id()).getPlayerConfigEntry()); - //#endif + //? if < 1.21.10 { + return server.getPlayerList().isOp(gameProfile); + //?} else { + //return server.getPlayerManager().isOperator(server.getPlayerManager().getPlayer(gameProfile.id()).getPlayerConfigEntry()); + //?} } } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/utils/exceptions/ThrowableCCESuppression.java b/src/main/java/io/github/optijava/opt_carpet_addition/utils/exceptions/ThrowableCCESuppression.java deleted file mode 100644 index 86b1438..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/utils/exceptions/ThrowableCCESuppression.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.github.optijava.opt_carpet_addition.utils.exceptions; - -import net.minecraft.util.math.BlockPos; - -public class ThrowableCCESuppression extends RuntimeException{ - public final BlockPos pos; - - public ThrowableCCESuppression(String message, BlockPos pos, Throwable cause) { - super(message, cause); - this.pos = pos; - } -} diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/CustomItemDiscardTimeValidator.java b/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/CustomItemDiscardTimeValidator.java index ab9c49c..1249596 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/CustomItemDiscardTimeValidator.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/CustomItemDiscardTimeValidator.java @@ -1,22 +1,14 @@ package io.github.optijava.opt_carpet_addition.utils.validator; -//#if MC >= 11900 -//$$ import carpet.api.settings.Validator; -//$$ import carpet.api.settings.CarpetRule; -//#else -import carpet.settings.Validator; -import carpet.settings.ParsedRule; -//#endif + +import carpet.api.settings.CarpetRule; +import carpet.api.settings.Validator; import net.minecraft.server.command.ServerCommandSource; public class CustomItemDiscardTimeValidator extends Validator { - //#if MC >= 11900 - //$$ public Integer validate(ServerCommandSource source, CarpetRule currentRule, Integer newValue, String string) { - //#else - public Integer validate(ServerCommandSource source, ParsedRule currentRule, Integer newValue, String string) { - //#endif + public Integer validate(ServerCommandSource source, CarpetRule currentRule, Integer newValue, String string) { return newValue >= -1 ? newValue : null; - } + } @Override public String description() { diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/PlayerTpRateLimitTimeValidator.java b/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/PlayerTpRateLimitTimeValidator.java index 95cb9c2..43f0439 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/PlayerTpRateLimitTimeValidator.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/PlayerTpRateLimitTimeValidator.java @@ -1,21 +1,12 @@ package io.github.optijava.opt_carpet_addition.utils.validator; -//#if MC >= 11900 -//$$ import carpet.api.settings.Validator; -//$$ import carpet.api.settings.CarpetRule; -//#else -import carpet.settings.Validator; -import carpet.settings.ParsedRule; -//#endif +import carpet.api.settings.Validator; +import carpet.api.settings.CarpetRule; import net.minecraft.server.command.ServerCommandSource; public class PlayerTpRateLimitTimeValidator extends Validator { @Override - //#if MC >= 11900 - //$$ public Integer validate(ServerCommandSource source, CarpetRule currentRule, Integer newValue, String string) { - //#else - public Integer validate(ServerCommandSource source, ParsedRule currentRule, Integer newValue, String string) { - //#endif + public Integer validate(ServerCommandSource source, CarpetRule currentRule, Integer newValue, String string) { return newValue >= 0 ? newValue : null; } diff --git a/src/main/resources/opt-carpet-addition.mixins.json b/src/main/resources/opt-carpet-addition.mixins.json index eb56f9d..0eaa924 100644 --- a/src/main/resources/opt-carpet-addition.mixins.json +++ b/src/main/resources/opt-carpet-addition.mixins.json @@ -2,64 +2,30 @@ "required": false, "minVersion": "0.8", "package": "io.github.optijava.opt_carpet_addition.mixins", - //#if MC >= 12100 - //$$ "compatibilityLevel": "JAVA_21", - //#elseif MC >= 11800 - //$$ "compatibilityLevel": "JAVA_17", - //#else - "compatibilityLevel": "JAVA_16", - //#endif + "compatibilityLevel": "JAVA_21", "mixins": [ - //#if MC < 11900 - "logger.updateSuppression.World_Mixin", - "rule.async.MinecraftServer_Mixin", - "rule.async.optimizePlayerConnect.EntityTrackerEntry_Mixin", - "rule.async.optimizePlayerConnect.PlayerManager_Mixin", - "rule.async.optimizePlayerConnect.ServerLoginNetworkHandler_Mixin", - "rule.async.optimizePlayerConnect.ServerWorld_Mixin", - "rule.async.optimizePlayerConnect.World_Mixin", - "rule.async.optimizeTeleport.ServerPlayerEntity_Mixin", - "rule.async.optimizeTeleport.ServerPlayNetworkHandler_Mixin", - "rule.disabledUpdateSuppressionErrorStackTrace.ThreadExecutor_Mixin", - "rule.dropperCrashFix.DispenserBlock_Mixin", - "rule.dropperCrashFix.DropperBlock_Mixin", - //#if MC >= 11800 - //$$ "rule.disabledUpdateSuppressionErrorStackTrace.NetworkThreadUtils_Mixin", - //#endif - //#endif "logger.HUDController_Mixin", - //#if MC < 12100 + "logger.blockUpdate.LoggerRegistry_Mixin", "rule.cceSuppressionCrashFix.MinecraftServer_Mixin", "rule.cceSuppressionCrashFix.ShulkerBoxBlock_Mixin", - //#endif "rule.commandLogger.CommandManager_Mixin", + "rule.customItemDiscardTime.ItemEntity_Mixin", "rule.disabledEnderManPickupGoal.EnderManEntity_Mixin", "rule.disabledEnderManPlaceBlockGoal.EndermanEntity_Mixin", "rule.disabledEntityTick.ServerWorld_Mixin", "rule.disabledLayEggs.ChickenEntity_Mixin", "rule.disabledNetherPortalSpawn.NetherPortalBlock_Mixin", + "rule.disabledUpdateSuppressionErrorStackTrace.ThreadExecutor_Mixin", + "rule.disallowRedstoneWireConnectsToOpenTrapdoor.RedstoneWireBlock_Mixin", + "rule.dropperCrashFix.DispenserBlock_Mixin", + "rule.dropperCrashFix.DropperBlock_Mixin", "rule.optimizeFakePlayerSpawn.EntityPlayerMPFake_Mixin", "rule.optimizeFakePlayerSpawn.PlayerCommand_Mixin", "rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall.ServerPlayerEntity_Mixin", - //#if MC >= 12000 - //$$ "rule.disallowRedstoneWireConnectsToOpenTrapdoor.RedstoneWireBlock_Mixin", - //#endif - //#if MC >= 11900 - //$$ "logger.blockUpdate.SimpleNeighborUpdater_Mixin", - //$$ "logger.blockUpdate.ChainRestrictedNeighborUpdater_Mixin", - //#endif - //#if MC <= 11900 - "logger.blockUpdate.World_Mixin", - //#endif - "rule.customItemDiscardTime.ItemEntity_Mixin", - "logger.blockUpdate.LoggerRegistry_Mixin", "rule.removeBats.BatEntity_Mixin" ], "client": [ - "rule.unescapeChatMessage.ChatMessageC2SPacket_Mixin", - //#if MC < 11900 - "rule.unescapeChatMessage.Screen_Mixin" - //#endif + "rule.unescapeChatMessage.ChatMessageC2SPacket_Mixin" ], "injectors": { "defaultRequire": 1 diff --git a/stonecutter.gradle.kts b/stonecutter.gradle.kts new file mode 100644 index 0000000..ddecbea --- /dev/null +++ b/stonecutter.gradle.kts @@ -0,0 +1,6 @@ +#!/usr/bin/env kotlin +plugins { + id("dev.kikugie.stonecutter") + id("net.fabricmc.fabric-loom") version "1.16-SNAPSHOT" apply false +} +stonecutter active "1.21.5" diff --git a/versions/1.17.1/gradle.properties b/versions/1.17.1/gradle.properties deleted file mode 100644 index 57b79de..0000000 --- a/versions/1.17.1/gradle.properties +++ /dev/null @@ -1,17 +0,0 @@ -# Fabric Properties - # check these on https://fabricmc.net/versions.html?&version=1.17.1 - minecraft_version=1.17.1 - yarn_mappings=1.17.1+build.65 - -# Fabric Mod Metadata - minecraft_requirement_version=1.17.x - carpet_requirement_version=>=1.4.57 - -# Build Information - # The target mc versions for the mod during mod publishing, separated with \n - game_versions=1.17.1 - -# Dependencies - fabric_version=0.46.1+1.17 - carpet_core_version=3613865 - diff --git a/versions/1.17.1/opt-carpet-addition.accesswidener b/versions/1.17.1/opt-carpet-addition.accesswidener deleted file mode 100644 index 19648c2..0000000 --- a/versions/1.17.1/opt-carpet-addition.accesswidener +++ /dev/null @@ -1,8 +0,0 @@ -accessWidener v1 named -accessible class net/minecraft/entity/mob/EndermanEntity$PickUpBlockGoal -accessible class net/minecraft/entity/mob/EndermanEntity$PlaceBlockGoal -mutable field net/minecraft/network/packet/c2s/play/ChatMessageC2SPacket chatMessage Ljava/lang/String; -accessible field net/minecraft/network/packet/c2s/play/ChatMessageC2SPacket chatMessage Ljava/lang/String; -accessible field net/minecraft/server/network/ServerLoginNetworkHandler server Lnet/minecraft/server/MinecraftServer; -accessible method net/minecraft/entity/Entity unsetRemoved ()V -accessible method net/minecraft/server/network/ServerPlayerEntity worldChanged (Lnet/minecraft/server/world/ServerWorld;)V \ No newline at end of file diff --git a/versions/1.20.4/gradle.properties b/versions/1.20.4/gradle.properties deleted file mode 100644 index 290b624..0000000 --- a/versions/1.20.4/gradle.properties +++ /dev/null @@ -1,16 +0,0 @@ -# Fabric Properties - # check these on https://fabricmc.net/versions.html?&version=1.20.1 - minecraft_version=1.20.4 - yarn_mappings=1.20.4+build.3 - -# Fabric Mod Metadata - minecraft_requirement_version=1.20.x - carpet_requirement_version=>=1.4.128 - -# Build Information - # The target mc versions for the mod during mod publishing, separated with \n - game_versions=1.20.4 - -# Dependencies - fabric_version=0.96.4+1.20.4 - carpet_core_version=4930701 diff --git a/versions/1.20.4/opt-carpet-addition.accesswidener b/versions/1.20.4/opt-carpet-addition.accesswidener deleted file mode 100644 index a4fdbb9..0000000 --- a/versions/1.20.4/opt-carpet-addition.accesswidener +++ /dev/null @@ -1,15 +0,0 @@ -accessWidener v1 named -accessible class net/minecraft/entity/mob/EndermanEntity$PickUpBlockGoal -accessible class net/minecraft/entity/mob/EndermanEntity$PlaceBlockGoal -mutable field net/minecraft/network/packet/c2s/play/ChatMessageC2SPacket chatMessage Ljava/lang/String; -accessible field net/minecraft/network/packet/c2s/play/ChatMessageC2SPacket chatMessage Ljava/lang/String; -accessible field net/minecraft/server/network/ServerLoginNetworkHandler server Lnet/minecraft/server/MinecraftServer; -accessible method net/minecraft/entity/Entity unsetRemoved ()V -accessible method net/minecraft/server/network/ServerPlayerEntity worldChanged (Lnet/minecraft/server/world/ServerWorld;)V -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$Entry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$SimpleEntry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$StateReplacementEntry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$StatefulEntry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry -accessible field net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry sourceBlock Lnet/minecraft/block/Block; -accessible field net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry pos Lnet/minecraft/util/math/BlockPos; \ No newline at end of file diff --git a/versions/1.21.10/opt-carpet-addition.accesswidener b/versions/1.21.10/opt-carpet-addition.accesswidener index a73320e..19697e3 100644 --- a/versions/1.21.10/opt-carpet-addition.accesswidener +++ b/versions/1.21.10/opt-carpet-addition.accesswidener @@ -1,8 +1,7 @@ -accessWidener v1 named -accessible class net/minecraft/entity/mob/EndermanEntity$PickUpBlockGoal -accessible class net/minecraft/entity/mob/EndermanEntity$PlaceBlockGoal -mutable field net/minecraft/network/packet/c2s/play/ChatMessageC2SPacket chatMessage Ljava/lang/String; -accessible field net/minecraft/network/packet/c2s/play/ChatMessageC2SPacket chatMessage Ljava/lang/String; +accessWidener v1 official +accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal +accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal +accessible field net/minecraft/network/protocol/game/ServerboundChatPacket message Ljava/lang/String; accessible field net/minecraft/server/network/ServerLoginNetworkHandler server Lnet/minecraft/server/MinecraftServer; accessible method net/minecraft/entity/Entity unsetRemoved ()V accessible method net/minecraft/server/network/ServerPlayerEntity worldChanged (Lnet/minecraft/server/world/ServerWorld;)V @@ -12,5 +11,4 @@ accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$StateR accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$StatefulEntry accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry accessible field net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry sourceBlock Lnet/minecraft/block/Block; -accessible field net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry pos Lnet/minecraft/util/math/BlockPos; -accessible field net/minecraft/server/network/ServerPlayerEntity server Lnet/minecraft/server/MinecraftServer; \ No newline at end of file +accessible field net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry pos Lnet/minecraft/util/math/BlockPos; \ No newline at end of file diff --git a/versions/1.21.5/opt-carpet-addition.accesswidener b/versions/1.21.5/opt-carpet-addition.accesswidener index a4fdbb9..19697e3 100644 --- a/versions/1.21.5/opt-carpet-addition.accesswidener +++ b/versions/1.21.5/opt-carpet-addition.accesswidener @@ -1,8 +1,7 @@ -accessWidener v1 named -accessible class net/minecraft/entity/mob/EndermanEntity$PickUpBlockGoal -accessible class net/minecraft/entity/mob/EndermanEntity$PlaceBlockGoal -mutable field net/minecraft/network/packet/c2s/play/ChatMessageC2SPacket chatMessage Ljava/lang/String; -accessible field net/minecraft/network/packet/c2s/play/ChatMessageC2SPacket chatMessage Ljava/lang/String; +accessWidener v1 official +accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal +accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal +accessible field net/minecraft/network/protocol/game/ServerboundChatPacket message Ljava/lang/String; accessible field net/minecraft/server/network/ServerLoginNetworkHandler server Lnet/minecraft/server/MinecraftServer; accessible method net/minecraft/entity/Entity unsetRemoved ()V accessible method net/minecraft/server/network/ServerPlayerEntity worldChanged (Lnet/minecraft/server/world/ServerWorld;)V diff --git a/versions/1.21/opt-carpet-addition.accesswidener b/versions/1.21/opt-carpet-addition.accesswidener index a4fdbb9..19697e3 100644 --- a/versions/1.21/opt-carpet-addition.accesswidener +++ b/versions/1.21/opt-carpet-addition.accesswidener @@ -1,8 +1,7 @@ -accessWidener v1 named -accessible class net/minecraft/entity/mob/EndermanEntity$PickUpBlockGoal -accessible class net/minecraft/entity/mob/EndermanEntity$PlaceBlockGoal -mutable field net/minecraft/network/packet/c2s/play/ChatMessageC2SPacket chatMessage Ljava/lang/String; -accessible field net/minecraft/network/packet/c2s/play/ChatMessageC2SPacket chatMessage Ljava/lang/String; +accessWidener v1 official +accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal +accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal +accessible field net/minecraft/network/protocol/game/ServerboundChatPacket message Ljava/lang/String; accessible field net/minecraft/server/network/ServerLoginNetworkHandler server Lnet/minecraft/server/MinecraftServer; accessible method net/minecraft/entity/Entity unsetRemoved ()V accessible method net/minecraft/server/network/ServerPlayerEntity worldChanged (Lnet/minecraft/server/world/ServerWorld;)V diff --git a/versions/mainProject b/versions/mainProject deleted file mode 100644 index 511a76e..0000000 --- a/versions/mainProject +++ /dev/null @@ -1 +0,0 @@ -1.17.1 From 6394fc552bf3fe3ece5d5054ec0b208fe4c4575b Mon Sep 17 00:00:00 2001 From: antideath Date: Fri, 1 May 2026 12:07:35 +0800 Subject: [PATCH 04/10] stonecutter --- build.gradle.kts | 4 -- .../OptCarpetAddition.java | 44 ++++++------- .../commands/CommandLoggerCommand.java | 13 ++-- .../commands/CrashCommand.java | 22 +++---- .../commands/ListAdvanceCommand.java | 24 ++++--- .../commands/PlayerTpCommand.java | 65 ++++++++++--------- .../commands/TpLimitCommand.java | 57 ++++++++-------- .../fixExperienceBug/FixExperienceBug.java | 8 +-- .../logger/LoggerRegister.java | 2 +- .../logger/blockUpdate/BlockUpdateLogger.java | 61 ----------------- .../CCESuppressionCrashLogger.java | 33 ---------- .../logger/disk/DiskHUDLogger.java | 11 ++-- .../mixins/logger/HUDController_Mixin.java | 4 +- .../blockUpdate/LoggerRegistry_Mixin.java | 4 +- .../commandLogger/CommandManager_Mixin.java | 22 +++---- .../ItemEntity_Mixin.java | 2 +- .../EndermanEntity_Mixin.java | 3 +- .../disabledLayEggs/ChickenEntity_Mixin.java | 2 +- .../EntityPlayerMPFake_Mixin.java | 6 +- .../PlayerCommand_Mixin.java | 6 +- .../ServerPlayerEntity_Mixin.java | 35 ---------- .../ServerPlayer_Mixin.java | 33 ++++++++++ .../rule/removeBats/BatEntity_Mixin.java | 1 - .../opt_carpet_addition/utils/McUtils.java | 12 ++-- .../opt_carpet_addition/utils/TpLimit.java | 4 +- .../CustomItemDiscardTimeValidator.java | 5 +- .../PlayerTpRateLimitTimeValidator.java | 5 +- src/main/resources/fabric.mod.json | 4 +- .../resources/opt-carpet-addition.mixins.json | 10 +-- .../1.21.10/opt-carpet-addition.accesswidener | 13 +--- .../1.21.5/opt-carpet-addition.accesswidener | 13 +--- .../logger/blockUpdate/BlockUpdateLogger.java | 59 ----------------- .../ServerPlayerEntity_Mixin.java | 46 ------------- .../1.21/opt-carpet-addition.accesswidener | 13 +--- 34 files changed, 204 insertions(+), 442 deletions(-) delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/logger/blockUpdate/BlockUpdateLogger.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/logger/cceSuppressionCrashLogger/CCESuppressionCrashLogger.java delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayerEntity_Mixin.java create mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayer_Mixin.java delete mode 100644 versions/1.21.5/src/main/java/io/github/optijava/opt_carpet_addition/logger/blockUpdate/BlockUpdateLogger.java delete mode 100644 versions/1.21.5/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayerEntity_Mixin.java diff --git a/build.gradle.kts b/build.gradle.kts index 199542b..a51b7e7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -59,15 +59,11 @@ tasks.processResources { inputs.property("version", modver) inputs.property("minecraft_requirement_version", minecraftVer) - inputs.property("carpet_requirement_version", property("carpet_requirement_version")) - inputs.property("loader_requirement_version", property("loader_requirement_version")) filesMatching("fabric.mod.json") { val valueMap = mapOf( "version" to modver, - "carpet_requirement_version" to property("carpet_requirement_version"), "minecraft_requirement_version" to minecraftVer, - "loader_requirement_version" to property("loader_requirement_version"), ) expand(valueMap) } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java index 83f36c3..8e61d6b 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java @@ -14,10 +14,10 @@ import io.github.optijava.opt_carpet_addition.utils.TpLimit; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents; -import net.minecraft.command.CommandRegistryAccess; -import net.minecraft.server.command.ServerCommandSource; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.world.GameMode; +import net.minecraft.commands.CommandBuildContext; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.level.GameType; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -43,40 +43,40 @@ public void onGameStarted() { CarpetServer.settingsManager.parseSettingsClass(OptCarpetSettings.class); // add rule observer - CarpetServer.settingsManager.registerRuleObserver(((serverCommandSource, rule, s) -> { + CarpetServer.settingsManager.registerRuleObserver(((CommandSourceStack, rule, s) -> { if (Objects.equals(rule.name(), "forceFakePlayerGameMode") && !Objects.equals(OptCarpetSettings.forceFakePlayerGameMode, "false")) { - GameMode gameMode; + GameType gameMode; if (OptCarpetSettings.forceFakePlayerGameMode.equals("creative")) { - gameMode = GameMode.CREATIVE; + gameMode = GameType.CREATIVE; } else if (OptCarpetSettings.forceFakePlayerGameMode.equals("adventure")) { - gameMode = GameMode.ADVENTURE; + gameMode = GameType.ADVENTURE; } else { - gameMode = GameMode.SURVIVAL; + gameMode = GameType.SURVIVAL; } - serverCommandSource.getServer().getPlayerManager().getPlayerList().forEach(player -> { + CommandSourceStack.getServer().getPlayerList().getPlayers().forEach(player -> { if (player instanceof EntityPlayerMPFake) { - player.changeGameMode(gameMode); + player.setGameMode(gameMode); } }); } if (rule.name().equals("enableTpPrefixBlacklist") && OptCarpetSettings.enableTpPrefixBlacklist && OptCarpetSettings.enableTpPrefixWhitelist) { OptCarpetSettings.enableTpPrefixBlacklist = false; - Messenger.m(serverCommandSource, "r You can't enable TpPrefixBlacklist because you have enabled TpPrefixWhitelist"); + Messenger.m(CommandSourceStack, "r You can't enable TpPrefixBlacklist because you have enabled TpPrefixWhitelist"); } if (rule.name().equals("enableTpPrefixWhitelist") && OptCarpetSettings.enableTpPrefixWhitelist && OptCarpetSettings.enableTpPrefixBlacklist) { OptCarpetSettings.enableTpPrefixWhitelist = false; - Messenger.m(serverCommandSource, "r You can't enable TpPrefixWhitelist because you have enabled TpPrefixBlacklist"); + Messenger.m(CommandSourceStack, "r You can't enable TpPrefixWhitelist because you have enabled TpPrefixBlacklist"); } if (rule.name().equals("enableTpherePrefixWhitelist") && OptCarpetSettings.enableTpHerePrefixWhitelist && OptCarpetSettings.enableTpHerePrefixBlacklist) { OptCarpetSettings.enableTpHerePrefixWhitelist = false; - Messenger.m(serverCommandSource, "r You can't enable TpherePrefixWhitelist because you have enabled TpherePrefixBlacklist"); + Messenger.m(CommandSourceStack, "r You can't enable TpherePrefixWhitelist because you have enabled TpherePrefixBlacklist"); } if (rule.name().equals("enableTpherePrefixBlacklist") && OptCarpetSettings.enableTpHerePrefixBlacklist && OptCarpetSettings.enableTpHerePrefixWhitelist) { OptCarpetSettings.enableTpHerePrefixBlacklist = false; - Messenger.m(serverCommandSource, "r You can't enable TpherePrefixBlacklist because you have enabled TpherePrefixWhitelist"); + Messenger.m(CommandSourceStack, "r You can't enable TpherePrefixBlacklist because you have enabled TpherePrefixWhitelist"); } @@ -104,7 +104,7 @@ public void onGameStarted() { } @Override - public void registerCommands(CommandDispatcher dispatcher, CommandRegistryAccess commandBuildContext) { + public void registerCommands(CommandDispatcher dispatcher, CommandBuildContext commandBuildContext) { PlayerTpCommand.registerCommands(dispatcher); ListAdvanceCommand.registerCommand(dispatcher); TpLimitCommand.registerCommand(dispatcher); @@ -113,17 +113,17 @@ public void registerCommands(CommandDispatcher dispatcher, } @Override - public void onPlayerLoggedIn(ServerPlayerEntity player) { + public void onPlayerLoggedIn(ServerPlayer player) { if (!(Objects.equals(OptCarpetSettings.forceFakePlayerGameMode, "false")) && player instanceof EntityPlayerMPFake) { - GameMode gameMode = GameMode.SURVIVAL; + GameType gameMode = GameType.SURVIVAL; if (OptCarpetSettings.forceFakePlayerGameMode.equals("creative")) { - gameMode = GameMode.CREATIVE; + gameMode = GameType.CREATIVE; } else if (OptCarpetSettings.forceFakePlayerGameMode.equals("adventure")) { - gameMode = GameMode.ADVENTURE; + gameMode = GameType.ADVENTURE; } - player.changeGameMode(gameMode); + player.setGameMode(gameMode); } double time; @@ -136,7 +136,7 @@ public void onPlayerLoggedIn(ServerPlayerEntity player) { } @Override - public void onPlayerLoggedOut(ServerPlayerEntity player) { + public void onPlayerLoggedOut(ServerPlayer player) { PlayerTpCommand.rateLimiterMap.remove(player); } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CommandLoggerCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CommandLoggerCommand.java index bacd222..1915555 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CommandLoggerCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CommandLoggerCommand.java @@ -4,23 +4,24 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import io.github.optijava.opt_carpet_addition.utils.CommandLogger; -import net.minecraft.server.command.CommandManager; -import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; + import static io.github.optijava.opt_carpet_addition.OptCarpetSettings.enableLoggerCommand; public class CommandLoggerCommand { - public static void registerCommand(CommandDispatcher dispatcher) { - LiteralArgumentBuilder argumentBuilder = CommandManager.literal("commandlogger"). + public static void registerCommand(CommandDispatcher dispatcher) { + LiteralArgumentBuilder argumentBuilder = Commands.literal("commandlogger"). requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableLoggerCommand)) .then( - CommandManager.literal("reload") + Commands.literal("reload") .executes(CommandLoggerCommand::reload) ); dispatcher.register(argumentBuilder); } - public static int reload(CommandContext context) { + public static int reload(CommandContext context) { return CommandLogger.reload(); } } \ No newline at end of file diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java index b1f7f0d..1296bbd 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java @@ -5,10 +5,10 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -import net.minecraft.server.command.ServerCommandSource; -import static io.github.optijava.opt_carpet_addition.OptCarpetSettings.enableCrashCommand; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; -import static net.minecraft.server.command.CommandManager.literal; +import static io.github.optijava.opt_carpet_addition.OptCarpetSettings.enableCrashCommand; public class CrashCommand { private CrashCommand() { @@ -16,23 +16,23 @@ private CrashCommand() { private static boolean isPreparing = false; - public static void registerCommand(CommandDispatcher dispatcher) { - LiteralArgumentBuilder argumentBuilder = literal("crash") - .requires((serverCommandSource -> serverCommandSource.hasPermissionLevel(4))) + public static void registerCommand(CommandDispatcher dispatcher) { + LiteralArgumentBuilder argumentBuilder = Commands.literal("crash") + .requires((CommandSourceStack -> CommandSourceStack.hasPermission(4))) .requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableCrashCommand)) .executes(CrashCommand::prepare) .then( - literal("confirm") + Commands.literal("confirm") .executes(CrashCommand::confirm) ) .then( - literal("abort") + Commands.literal("abort") .executes(CrashCommand::abort) ); dispatcher.register(argumentBuilder); } - public static int prepare(CommandContext context) { + public static int prepare(CommandContext context) { Messenger.m(context.getSource(), "r Prepare to crash the server!"); Messenger.m(context.getSource(), "r Type '/crash confirm' to confirm"); Messenger.m(context.getSource(), "r Type '/crash abort' to abort"); @@ -40,7 +40,7 @@ public static int prepare(CommandContext context) { return 1; } - public static int confirm(CommandContext context) { + public static int confirm(CommandContext context) { if (!isPreparing) { Messenger.m(context.getSource(), "r Nothing to confirm."); return 0; @@ -50,7 +50,7 @@ public static int confirm(CommandContext context) { throw new Error("[OCA Crash Command] Confirm Crash!"); } - public static int abort(CommandContext context) { + public static int abort(CommandContext context) { if (!isPreparing) { Messenger.m(context.getSource(), "r Nothing to abort."); return 0; diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java index 2f20a7c..c0e5ffe 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java @@ -5,37 +5,35 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import io.github.optijava.opt_carpet_addition.OptCarpetAddition; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.command.ServerCommandSource; -import net.minecraft.server.network.ServerPlayerEntity; import static io.github.optijava.opt_carpet_addition.OptCarpetSettings.enableListAdvanceCommand; -import static net.minecraft.server.command.CommandManager.literal; - public class ListAdvanceCommand { - public static void registerCommand(CommandDispatcher dispatcher) { - LiteralArgumentBuilder argumentBuilder = literal("list") + public static void registerCommand(CommandDispatcher dispatcher) { + LiteralArgumentBuilder argumentBuilder = Commands.literal("list") .requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableListAdvanceCommand)) - .then(literal("-advance").executes(ListAdvanceCommand::listAdvance)); + .then(Commands.literal("-advance").executes(ListAdvanceCommand::listAdvance)); dispatcher.register(argumentBuilder); } - private static int listAdvance(CommandContext context) { + private static int listAdvance(CommandContext context) { try { MinecraftServer minecraftServer = context.getSource().getServer(); StringBuilder sb = new StringBuilder(); sb.append("\n"); - minecraftServer.getPlayerManager().getPlayerList().forEach(s -> { + minecraftServer.getPlayerList().getPlayers().forEach(s -> { //? if >= 1.21.10 { - //sb.append(s.getName().getString()).append(" ").append(s.getGameMode().getId()).append(" ").append(s.networkHandler.getLatency()).append("ms ").append(s.getIp()).append(" ").append(s.getGameProfile().id().toString()).append("\n"); - //?} else { - //sb.append(s.getName().getString()).append(" ").append(s.interactionManager.getGameMode().getName()).append(" ").append(s.networkHandler.getLatency()).append("ms ").append(s.getIp()).append(" ").append(s.getGameProfile().getId().toString()).append("\n"); + /*sb.append(s.getName().getString()).append(" ").append(s.gameMode().getName()).append(" ").append(s.connection.latency()).append("ms ").append(s.getIpAddress()).append(" ").append(s.getGameProfile().id().toString()).append("\n"); + *///?} else { + sb.append(s.getName().getString()).append(" ").append(s.gameMode().getName()).append(" ").append(s.connection.latency()).append("ms ").append(s.getIpAddress()).append(" ").append(s.getGameProfile().getId().toString()).append("\n"); //?} }); Messenger.m(context.getSource(), sb.toString()); } catch (Exception e) { - context.getSource().sendError(Messenger.c("Unexpected exception occurred when command list advance executed.")); + context.getSource().sendFailure(Messenger.c("Unexpected exception occurred when command list advance executed.")); OptCarpetAddition.LOGGER.error("Unexpected exception occurred when command list advance executed.", e); return 0; } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java index 0eae7c3..67d5d6b 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java @@ -12,40 +12,36 @@ import io.github.optijava.opt_carpet_addition.OptCarpetAddition; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; import io.github.optijava.opt_carpet_addition.utils.McUtils; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.command.ServerCommandSource; -import net.minecraft.server.network.ServerPlayerEntity; -//? >= 1.21.10 -//import net.minecraft.server.PlayerConfigEntry; -import net.minecraft.world.GameMode; - +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.level.GameType; import java.util.HashMap; import java.util.Map; import java.util.Objects; -import static net.minecraft.server.command.CommandManager.argument; -import static net.minecraft.server.command.CommandManager.literal; public class PlayerTpCommand { /* permit 1 request per 2 seconds < == > permit 0.5 request per 1 second */ - public static Map rateLimiterMap = new HashMap<>(); + public static Map rateLimiterMap = new HashMap<>(); private PlayerTpCommand() {} private static final String COMMAND_PREFIX = "player"; private static final MinecraftServer server = CarpetServer.minecraft_server; - public static void registerCommands(CommandDispatcher dispatcher) { - LiteralArgumentBuilder argumentBuilder = literal(COMMAND_PREFIX) - .then(argument(COMMAND_PREFIX, StringArgumentType.word()) - .then(literal("tp").executes(PlayerTpCommand::teleport)) - .then(literal("tphere").executes(PlayerTpCommand::teleportHere)) + public static void registerCommands(CommandDispatcher dispatcher) { + LiteralArgumentBuilder argumentBuilder = Commands.literal(COMMAND_PREFIX) + .then(Commands.argument(COMMAND_PREFIX, StringArgumentType.word()) + .then(Commands.literal("tp").executes(PlayerTpCommand::teleport)) + .then(Commands.literal("tphere").executes(PlayerTpCommand::teleportHere)) ); dispatcher.register(argumentBuilder); } - private static boolean ratelimit(CommandContext context) { + private static boolean ratelimit(CommandContext context) { if (OptCarpetSettings.playerTpRateLimitTime == 0) { return true; } @@ -60,7 +56,7 @@ private static boolean ratelimit(CommandContext context) { return canTeleport; } - private static int teleport(CommandContext context) { + private static int teleport(CommandContext context) { if (!ratelimit(context)) { Messenger.m(context.getSource(), "r Too fast!"); return 0; @@ -68,12 +64,12 @@ private static int teleport(CommandContext context) { String target = StringArgumentType.getString(context, COMMAND_PREFIX); - if (CarpetServer.minecraft_server.getPlayerManager().getPlayer(target) == null) { + if (CarpetServer.minecraft_server.getPlayerList().getPlayerByName(target) == null) { Messenger.m(context.getSource(), "r No such player"); return 0; } - if (context.getSource().equals(server.getCommandSource())) { + if (context.getSource().equals(server.createCommandSourceStack())) { Messenger.m(context.getSource(), "r Console can't tp to player."); OptCarpetAddition.LOGGER.warn("Console can't tp to player"); return 0; @@ -84,9 +80,13 @@ private static int teleport(CommandContext context) { } try { + //? if >= 1.21.10 { + //final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().name(); + //?} else { final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().getName(); + //?} - if (server.getPlayerManager().getPlayer(target) instanceof EntityPlayerMPFake) { + if (server.getPlayerList().getPlayerByName(target) instanceof EntityPlayerMPFake) { switch (OptCarpetSettings.commandTpToFakePlayer) { case "true" -> executeTp(commandSourcePlayerName, context); @@ -94,7 +94,7 @@ private static int teleport(CommandContext context) { if (McUtils.isOp(context.getSource().getPlayer().getGameProfile())) { executeTp(commandSourcePlayerName, context); } else { - if (OptCarpetSettings.allowSpectatorTpToAnyPlayer && context.getSource().getPlayer().interactionManager.getGameMode().equals(GameMode.SPECTATOR)){ + if (OptCarpetSettings.allowSpectatorTpToAnyPlayer && context.getSource().getPlayer().gameMode.getGameModeForPlayer().equals(GameType.SPECTATOR)){ executeTp(commandSourcePlayerName, context); } else { Messenger.m(context.getSource(), "r You have no permission to teleport to fake player.You aren't op."); @@ -102,7 +102,7 @@ private static int teleport(CommandContext context) { } } case OptCarpetSettings.FALSE -> { - if (OptCarpetSettings.allowSpectatorTpToAnyPlayer && context.getSource().getPlayer().interactionManager.getGameMode().equals(GameMode.SPECTATOR)){ + if (OptCarpetSettings.allowSpectatorTpToAnyPlayer && context.getSource().getPlayer().gameMode.getGameModeForPlayer().equals(GameType.SPECTATOR)){ executeTp(commandSourcePlayerName, context); } else { Messenger.m(context.getSource(), "r Anybody can't teleport to fake player."); @@ -118,7 +118,7 @@ private static int teleport(CommandContext context) { if (McUtils.isOp(context.getSource().getPlayer().getGameProfile())) { tp(commandSourcePlayerName, target); } else { - if (OptCarpetSettings.allowSpectatorTpToAnyPlayer && context.getSource().getPlayer().interactionManager.getGameMode().equals(GameMode.SPECTATOR)) { + if (OptCarpetSettings.allowSpectatorTpToAnyPlayer && context.getSource().getPlayer().gameMode.getGameModeForPlayer().equals(GameType.SPECTATOR)) { executeTp(commandSourcePlayerName, context); } else { Messenger.m(context.getSource(), "r You have no permission to teleport to real player.You aren't op."); @@ -126,7 +126,7 @@ private static int teleport(CommandContext context) { } } case OptCarpetSettings.FALSE -> { - if (OptCarpetSettings.allowSpectatorTpToAnyPlayer && context.getSource().getPlayer().interactionManager.getGameMode().equals(GameMode.SPECTATOR)) { + if (OptCarpetSettings.allowSpectatorTpToAnyPlayer && context.getSource().getPlayer().gameMode.getGameModeForPlayer().equals(GameType.SPECTATOR)) { executeTp(commandSourcePlayerName, context); } else { Messenger.m(context.getSource(), "r Anybody can't teleport to real player."); @@ -142,7 +142,7 @@ private static int teleport(CommandContext context) { return 1; } - private static int teleportHere(CommandContext context) { + private static int teleportHere(CommandContext context) { if (!ratelimit(context)) { Messenger.m(context.getSource(), "r Too fast!"); return 0; @@ -150,12 +150,12 @@ private static int teleportHere(CommandContext context) { String target = StringArgumentType.getString(context, COMMAND_PREFIX); - if (server.getPlayerManager().getPlayer(target) == null) { + if (server.getPlayerList().getPlayerByName(target) == null) { Messenger.m(context.getSource(), "r No such player"); return 0; } - if (context.getSource().equals(server.getCommandSource())) { + if (context.getSource().equals(server.createCommandSourceStack())) { Messenger.m(context.getSource(), "r Console can't tp here player."); OptCarpetAddition.LOGGER.warn("Console can't tp here player"); return 0; @@ -167,9 +167,13 @@ private static int teleportHere(CommandContext context) { } try { + //? if >= 1.21.10 { + //final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().name(); + //?} else { final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().getName(); + //?} - if (server.getPlayerManager().getPlayer(target) instanceof EntityPlayerMPFake) { + if (server.getPlayerList().getPlayerByName(target) instanceof EntityPlayerMPFake) { switch (OptCarpetSettings.commandTpHereFakePlayer) { case "true" -> executeTpHere(commandSourcePlayerName, context); @@ -207,7 +211,7 @@ private static int teleportHere(CommandContext context) { return 1; } - private static void executeTp(String commandSourcePlayerName, CommandContext context) { + private static void executeTp(String commandSourcePlayerName, CommandContext context) { String target = StringArgumentType.getString(context, COMMAND_PREFIX); try { @@ -226,7 +230,7 @@ private static void executeTp(String commandSourcePlayerName, CommandContext context) { + private static void executeTpHere(String commandSourcePlayerName, CommandContext context) { String target = StringArgumentType.getString(context, COMMAND_PREFIX); try { @@ -262,6 +266,7 @@ private static boolean checkTpHereWhitelist(String name) { } private static void tp(String target, String commandSourcePlayerName) throws CommandSyntaxException { - server.getCommandManager().getDispatcher().execute(server.getCommandManager().getDispatcher().parse("tp " + target + " " + commandSourcePlayerName, server.getCommandSource())); + Commands commands = server.getCommands(); + commands.getDispatcher().execute(commands.getDispatcher().parse("tp " + target + " " + commandSourcePlayerName, server.createCommandSourceStack())); } } \ No newline at end of file diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/TpLimitCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/TpLimitCommand.java index 289fb04..af9234d 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/TpLimitCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/TpLimitCommand.java @@ -7,12 +7,11 @@ import com.mojang.brigadier.context.CommandContext; import io.github.optijava.opt_carpet_addition.OptCarpetAddition; import io.github.optijava.opt_carpet_addition.utils.TpLimit; -import net.minecraft.server.command.ServerCommandSource; - -import static net.minecraft.server.command.CommandManager.argument; -import static net.minecraft.server.command.CommandManager.literal; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; import static io.github.optijava.opt_carpet_addition.OptCarpetSettings.enableTpmanagerCommand; +import static net.minecraft.commands.Commands.argument; public class TpLimitCommand { @@ -20,62 +19,62 @@ private TpLimitCommand() { } - public static void registerCommand(CommandDispatcher dispatcher) { + public static void registerCommand(CommandDispatcher dispatcher) { - LiteralArgumentBuilder argument = literal("tpmanager") + LiteralArgumentBuilder argument = Commands.literal("tpmanager") .requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableTpmanagerCommand)) .then( - literal("reload") + Commands.literal("reload") .executes(TpLimit::reload) ) .then( - literal("tp") - .then(literal("whitelist") - .then(literal("add") + Commands.literal("tp") + .then(Commands.literal("whitelist") + .then(Commands.literal("add") .then(argument("prefix", StringArgumentType.word()) .executes(TpLimitCommand::addTpWhitelist) ) ) - .then(literal("remove") + .then(Commands.literal("remove") .then(argument("prefix", StringArgumentType.word()) .executes(TpLimitCommand::removeTpWhitelist) ) ) ) - .then(literal("blacklist") - .then(literal("add") + .then(Commands.literal("blacklist") + .then(Commands.literal("add") .then(argument("prefix", StringArgumentType.word()) .executes(TpLimitCommand::addTpBlacklist) ) ) - .then(literal("remove") + .then(Commands.literal("remove") .then(argument("prefix", StringArgumentType.word()) .executes(TpLimitCommand::removeTpBlacklist) ) ) ) ) - .then(literal("tphere") - .then(literal("whitelist") - .then(literal("add") + .then(Commands.literal("tphere") + .then(Commands.literal("whitelist") + .then(Commands.literal("add") .then(argument("prefix", StringArgumentType.word()) .executes(TpLimitCommand::addTphereWhitelist) ) ) - .then(literal("remove") + .then(Commands.literal("remove") .then(argument("prefix", StringArgumentType.word()) .executes(TpLimitCommand::removeTphereWhitelist) ) ) ) - .then(literal("blacklist") - .then(literal("add") + .then(Commands.literal("blacklist") + .then(Commands.literal("add") .then(argument("prefix", StringArgumentType.word()) .executes(TpLimitCommand::addTphereBlacklist) ) ) - .then(literal("remove") + .then(Commands.literal("remove") .then(argument("prefix", StringArgumentType.word()) .executes(TpLimitCommand::removeTphereBlacklist) ) @@ -85,7 +84,7 @@ public static void registerCommand(CommandDispatcher dispat dispatcher.register(argument); } - public static int addTpWhitelist(CommandContext context) { + public static int addTpWhitelist(CommandContext context) { TpLimit.add(StringArgumentType.getString(context, "prefix"), "TpWhitelist"); OptCarpetAddition.LOGGER.info("Add TpWhitelist prefix : {}", StringArgumentType.getString(context, "prefix")); Messenger.m(context.getSource(), "Add TpWhitelist prefix : " + StringArgumentType.getString(context, "prefix")); @@ -93,7 +92,7 @@ public static int addTpWhitelist(CommandContext context) { return 1; } - public static int addTpBlacklist(CommandContext context) { + public static int addTpBlacklist(CommandContext context) { TpLimit.add(StringArgumentType.getString(context, "prefix"), "TpBlacklist"); OptCarpetAddition.LOGGER.info("Add TpBlacklist prefix : {}", StringArgumentType.getString(context, "prefix")); Messenger.m(context.getSource(), "Add TpBlacklist prefix : " + StringArgumentType.getString(context, "prefix")); @@ -101,7 +100,7 @@ public static int addTpBlacklist(CommandContext context) { return 1; } - public static int addTphereWhitelist(CommandContext context) { + public static int addTphereWhitelist(CommandContext context) { TpLimit.add(StringArgumentType.getString(context, "prefix"), "TphereWhitelist"); OptCarpetAddition.LOGGER.info("Add TphereWhitelist prefix : {}", StringArgumentType.getString(context, "prefix")); Messenger.m(context.getSource(), "Add TphereWhitelist prefix : " + StringArgumentType.getString(context, "prefix")); @@ -109,7 +108,7 @@ public static int addTphereWhitelist(CommandContext context return 1; } - public static int addTphereBlacklist(CommandContext context) { + public static int addTphereBlacklist(CommandContext context) { TpLimit.add(StringArgumentType.getString(context, "prefix"), "TphereBlacklist"); OptCarpetAddition.LOGGER.info(" Add TphereBlacklist prefix : {}", StringArgumentType.getString(context, "prefix")); Messenger.m(context.getSource(), "Add TphereBlacklist prefix : " + StringArgumentType.getString(context, "prefix")); @@ -117,7 +116,7 @@ public static int addTphereBlacklist(CommandContext context return 1; } - public static int removeTpWhitelist(CommandContext context) { + public static int removeTpWhitelist(CommandContext context) { TpLimit.remove(StringArgumentType.getString(context, "prefix"), "TpWhitelist"); OptCarpetAddition.LOGGER.info("Remove TpWhitelist prefix : {}", StringArgumentType.getString(context, "prefix")); Messenger.m(context.getSource(), "Remove TpWhitelist prefix : " + StringArgumentType.getString(context, "prefix")); @@ -125,7 +124,7 @@ public static int removeTpWhitelist(CommandContext context) return 1; } - public static int removeTpBlacklist(CommandContext context) { + public static int removeTpBlacklist(CommandContext context) { TpLimit.remove(StringArgumentType.getString(context, "prefix"), "TpBlacklist"); OptCarpetAddition.LOGGER.info("Remove TpBlacklist prefix : {}", StringArgumentType.getString(context, "prefix")); Messenger.m(context.getSource(), "Remove TpBlacklist prefix : " + StringArgumentType.getString(context, "prefix")); @@ -133,7 +132,7 @@ public static int removeTpBlacklist(CommandContext context) return 1; } - public static int removeTphereWhitelist(CommandContext context) { + public static int removeTphereWhitelist(CommandContext context) { TpLimit.remove(StringArgumentType.getString(context, "prefix"), "TphereWhitelist"); OptCarpetAddition.LOGGER.info("Remove TphereWhitelist prefix : {}", StringArgumentType.getString(context, "prefix")); Messenger.m(context.getSource(), "Remove TphereWhitelist prefix : " + StringArgumentType.getString(context, "prefix")); @@ -141,7 +140,7 @@ public static int removeTphereWhitelist(CommandContext cont return 1; } - public static int removeTphereBlacklist(CommandContext context) { + public static int removeTphereBlacklist(CommandContext context) { TpLimit.remove(StringArgumentType.getString(context, "prefix"), "TphereBlacklist"); OptCarpetAddition.LOGGER.info("Remove TphereBlacklist prefix : {}", StringArgumentType.getString(context, "prefix")); Messenger.m(context.getSource(), "Remove TphereBlacklist prefix : " + StringArgumentType.getString(context, "prefix")); diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java b/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java index 74f3961..b8fd9fe 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java @@ -2,15 +2,15 @@ import io.github.optijava.opt_carpet_addition.OptCarpetSettings; import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.server.world.ServerWorld; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; public class FixExperienceBug implements ServerEntityWorldChangeEvents.AfterPlayerChange { @Override - public void afterChangeWorld(ServerPlayerEntity player, ServerWorld origin, ServerWorld destination) { + public void afterChangeWorld(ServerPlayer player, ServerLevel origin, ServerLevel destination) { if (OptCarpetSettings.fixXpLevelBug) { // refresh player's experience bar - player.addExperience(0); + player.giveExperiencePoints(0); } } } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java b/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java index 151e6af..b663725 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java @@ -15,7 +15,7 @@ private LoggerRegister() { public static void registry() { LoggerRegistry.registerLogger("disk", DiskHUDLogger.INSTANCE); - //incompatible with 26.1 + //TODO incompatible with 26.1 //LoggerRegistry.registerLogger("blockUpdate", BlockUpdateLogger.INSTANCE); } } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/logger/blockUpdate/BlockUpdateLogger.java b/src/main/java/io/github/optijava/opt_carpet_addition/logger/blockUpdate/BlockUpdateLogger.java deleted file mode 100644 index 521d16b..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/logger/blockUpdate/BlockUpdateLogger.java +++ /dev/null @@ -1,61 +0,0 @@ -package io.github.optijava.opt_carpet_addition.logger.blockUpdate; - - -//TODO make it compatible with 26.1 -//import carpet.utils.Messenger; -//import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -//import io.github.optijava.opt_carpet_addition.logger.AbstractLogger; -//import io.github.optijava.opt_carpet_addition.logger.LoggerRegister; -//import io.github.optijava.opt_carpet_addition.utils.exceptions.ThrowableCCESuppression; -//import net.minecraft.block.Block; -//import net.minecraft.text.Text; -//import net.minecraft.util.math.BlockPos; -// -//import java.lang.reflect.Field; -// -//public class BlockUpdateLogger extends AbstractLogger { -// public static final BlockUpdateLogger INSTANCE; -// -// static { -// try { -// INSTANCE = new BlockUpdateLogger(LoggerRegister.class.getField("__blockUpdate"), "blockUpdate", null, null, false); -// } catch (NoSuchFieldException e) { -// throw new Error("Failed to init BlockUpdateLogger.", e); -// } -// } -// -// protected BlockUpdateLogger(Field acceleratorField, String logName, String def, String[] options, boolean strictOptions) { -// super(acceleratorField, logName, def, options, strictOptions); -// } -// -// public void logBlockUpdate(Block updatingBlock, BlockPos updatingBlockPos, Block sourceBlock, BlockPos centreBlockPos) { -// // 在1.17.1中,ServerWorld.updateNeighbor方法如下: -// // public void updateNeighbor(BlockPos pos, Block sourceBlock, BlockPos neighborPos) -// // ^^^^ ^^^^^^^^^ ^^^^^^^ -// // 被更新方块 源方块(更新源) 由源方块指定的更新的中心方块 -// -// // 在1.19.3中,SimpleNeighborUpdater.updateNeighbor方法如下: -// // public void updateNeighbor(BlockState state, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) -// // ^^^^ ^^^ ^^^^^^^^ ^^^^^ ^^^^ -// // 这俩都是被更新的 源 中心 不知道干什么的 -// // 在1.19.3中,ChainRestrictedNeighborUpdater.enqueue方法如下: -// // private void enqueue(BlockPos pos, Entry entry) -// // ^^ ^^^ -// // 被更新的 一个封装 -// -// try { -// super.log(() -> new Text[]{ -// Messenger.c("m " + updatingBlock.getName().getString(), "w block ", -// "m [" + updatingBlockPos.getX() + " " + updatingBlockPos.getY() + " " + updatingBlockPos.getZ() + "]", "w is updated. " + -// "Source block: ", "m " + sourceBlock.getName().getString() + ". ", -// "w Centre block position: ", "m [" + centreBlockPos.getX() + " " + centreBlockPos.getY() + " " + centreBlockPos.getZ() + "]." -// ) -// }); -// } catch (Exception e) { -// if (e instanceof ThrowableCCESuppression t) { -// throw t; -// } -// OptCarpetAddition.LOGGER.error("Unexpected exception occurred when logging block update.", e); -// } -// } -//} diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/logger/cceSuppressionCrashLogger/CCESuppressionCrashLogger.java b/src/main/java/io/github/optijava/opt_carpet_addition/logger/cceSuppressionCrashLogger/CCESuppressionCrashLogger.java deleted file mode 100644 index 2d962d8..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/logger/cceSuppressionCrashLogger/CCESuppressionCrashLogger.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.github.optijava.opt_carpet_addition.logger.cceSuppressionCrashLogger; - -//TODO make it compatible with 26.1 -//import carpet.utils.Messenger; -//import io.github.optijava.opt_carpet_addition.logger.AbstractLogger; -//import io.github.optijava.opt_carpet_addition.logger.LoggerRegister; -//import net.minecraft.text.Text; -//import net.minecraft.util.math.BlockPos; -// -//import java.lang.reflect.Field; -// -//public class CCESuppressionCrashLogger extends AbstractLogger { -// -// public static final CCESuppressionCrashLogger INSTANCE; -// -// static { -// try { -// INSTANCE = new CCESuppressionCrashLogger(LoggerRegister.class.getField("__cceSuppressionCrash"), "cceSuppressionCrash", null, null, false); -// } catch (NoSuchFieldException e) { -// throw new Error("Failed to init UpdateSuppressionLogger", e); -// } -// } -// -// protected CCESuppressionCrashLogger(Field acceleratorField, String logName, String def, String[] options, boolean strictOptions) { -// super(acceleratorField, logName, def, options, strictOptions); -// } -// -// public void logUpdateSuppression(BlockPos pos) { -// if (LoggerRegister.__cceSuppressionCrash) { -// super.log(() -> new Text[]{Messenger.c("w CCE suppression crash prevented in: ", "m world tick ", "w - at: ", "g [ " + pos.toShortString() + " ]")}); -// } -// } -//} \ No newline at end of file diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/logger/disk/DiskHUDLogger.java b/src/main/java/io/github/optijava/opt_carpet_addition/logger/disk/DiskHUDLogger.java index 9adc784..d165a3c 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/logger/disk/DiskHUDLogger.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/logger/disk/DiskHUDLogger.java @@ -4,8 +4,8 @@ import carpet.utils.Messenger; import io.github.optijava.opt_carpet_addition.logger.AbstractHUDLogger; import io.github.optijava.opt_carpet_addition.logger.LoggerRegister; +import net.minecraft.network.chat.Component; import net.minecraft.server.MinecraftServer; -import net.minecraft.text.Text; import java.io.File; import java.lang.reflect.Field; @@ -32,16 +32,15 @@ protected DiskHUDLogger(Field acceleratorField, String logName, String def, Stri @Override public void updateHUD(MinecraftServer server) { if (LoggerRegister.__disk) { - List list = new ArrayList<>(); - + List list = new ArrayList<>(); for (File f : File.listRoots()) { if (f.getPath().equals("/")) { - list.add(Text.of(Messenger.c("g %s %sGB/%sGB".formatted("RootFileSystem", (f.getTotalSpace() - f.getFreeSpace()) / TO_GB, f.getTotalSpace() / TO_GB)))); + list.add(Messenger.c("g %s %sGB/%sGB".formatted("RootFileSystem", (f.getTotalSpace() - f.getFreeSpace()) / TO_GB, f.getTotalSpace() / TO_GB))); } else { - list.add(Text.of(Messenger.c("g %s %sGB/%sGB".formatted(f.getPath(), (f.getTotalSpace() - f.getFreeSpace()) / TO_GB, f.getTotalSpace() / TO_GB)))); + list.add(Messenger.c("g %s %sGB/%sGB".formatted(f.getPath(), (f.getTotalSpace() - f.getFreeSpace()) / TO_GB, f.getTotalSpace() / TO_GB))); } } - LoggerRegistry.getLogger("disk").log(() -> list.toArray(new Text[0])); + LoggerRegistry.getLogger("disk").log(() -> list.toArray(new Component[0])); } } } \ No newline at end of file diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/HUDController_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/HUDController_Mixin.java index 617901d..987a27a 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/HUDController_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/HUDController_Mixin.java @@ -3,7 +3,7 @@ import carpet.logging.HUDController; import io.github.optijava.opt_carpet_addition.logger.disk.DiskHUDLogger; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.level.ServerPlayer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -20,7 +20,7 @@ public abstract class HUDController_Mixin { ), remap = false ) - private static void injectUpdateHUD(MinecraftServer server, List force, CallbackInfo ci) { + private static void injectUpdateHUD(MinecraftServer server, List force, CallbackInfo ci) { DiskHUDLogger.INSTANCE.updateHUD(server); } } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/LoggerRegistry_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/LoggerRegistry_Mixin.java index 3c3ec62..59926bc 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/LoggerRegistry_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/logger/blockUpdate/LoggerRegistry_Mixin.java @@ -4,7 +4,7 @@ //import carpet.logging.LoggerRegistry; //import carpet.utils.Messenger; //import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -//import net.minecraft.server.command.ServerCommandSource; +//import net.minecraft.server.command.CommandSourceStack; //import org.spongepowered.asm.mixin.Mixin; //import org.spongepowered.asm.mixin.injection.At; //import org.spongepowered.asm.mixin.injection.Inject; @@ -23,7 +23,7 @@ // private static void injectSubscribePlayer(String playerName, String logName, String option, CallbackInfo ci) { // if (Objects.equals(logName, "blockUpdate") && !OptCarpetSettings.allowBlockUpdateLogger) { // try { -// ServerCommandSource commandSource = Objects.requireNonNull(CarpetServer.minecraft_server.getPlayerManager().getPlayer(playerName)).getCommandSource(); +// CommandSourceStack commandSource = Objects.requireNonNull(CarpetServer.minecraft_server.getPlayerManager().getPlayer(playerName)).getCommandSource(); // Messenger.m(commandSource, "g Rule allowBlockUpdateLogger was disabled. You can't receive any block update message. Please contact operators."); // } catch (Exception ignored) { // } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/commandLogger/CommandManager_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/commandLogger/CommandManager_Mixin.java index 926492a..fc46777 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/commandLogger/CommandManager_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/commandLogger/CommandManager_Mixin.java @@ -1,13 +1,13 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.commandLogger; import com.mojang.brigadier.ParseResults; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import carpet.CarpetServer; import carpet.utils.Messenger; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; import io.github.optijava.opt_carpet_addition.utils.McUtils; -import net.minecraft.server.command.CommandManager; -import net.minecraft.server.command.ServerCommandSource; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.spongepowered.asm.mixin.Mixin; @@ -16,18 +16,18 @@ import org.spongepowered.asm.mixin.injection.Inject; -@Mixin(CommandManager.class) +@Mixin(Commands.class) public class CommandManager_Mixin { @Unique private static final Logger LOGGER = LogManager.getLogger("OCA Command Logger"); @Inject( - method = "execute", + method = "performCommand", at = @At("HEAD") ) - public void injectExecute(ParseResults parseResults, String command, CallbackInfo ci) { - ServerCommandSource commandSource = parseResults.getContext().getSource(); + public void injectExecute(ParseResults parseResults, String command, CallbackInfo ci) { + CommandSourceStack commandSource = parseResults.getContext().getSource(); if (!OptCarpetSettings.commandLoggerConfigBean.logAllCommand && OptCarpetSettings.commandLogger) { if (OptCarpetSettings.commandLoggerConfigBean.LogCommandWhitelist.contains(command)) { @@ -56,21 +56,21 @@ public void injectExecute(ParseResults parseResults, String } @Unique - private void logCommand(String command, ServerCommandSource commandSource){ - CommandManager_Mixin.LOGGER.info("[OCA Command Logger] {} submit command: {}", commandSource.getName(), command); + private void logCommand(String command, CommandSourceStack commandSource){ + CommandManager_Mixin.LOGGER.info("[OCA Command Logger] {} submit command: {}", commandSource.getTextName(), command); if (OptCarpetSettings.commandLoggerBroadcastToPlayer.equals("true")) { Messenger.print_server_message(CarpetServer.minecraft_server, Messenger.c( "gi [", - "li " + commandSource.getName(), + "li " + commandSource.getTextName(), "gi : " + command + "]" )); } else if (OptCarpetSettings.commandLoggerBroadcastToPlayer.equals("ops")) { - CarpetServer.minecraft_server.getPlayerManager().getPlayerList().forEach(serverPlayerEntity -> { + CarpetServer.minecraft_server.getPlayerList().getPlayers().forEach(serverPlayerEntity -> { if (McUtils.isOp(serverPlayerEntity.getGameProfile())) { Messenger.m(serverPlayerEntity, Messenger.c( "gi [", - "li " + commandSource.getName(), + "li " + commandSource.getTextName(), "gi : " + command + "]" )); } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/customItemDiscardTime/ItemEntity_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/customItemDiscardTime/ItemEntity_Mixin.java index b7ce4e3..9e0b16e 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/customItemDiscardTime/ItemEntity_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/customItemDiscardTime/ItemEntity_Mixin.java @@ -1,7 +1,7 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.customItemDiscardTime; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.entity.ItemEntity; +import net.minecraft.world.entity.item.ItemEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.Constant; import org.spongepowered.asm.mixin.injection.ModifyConstant; diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEnderManPlaceBlockGoal/EndermanEntity_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEnderManPlaceBlockGoal/EndermanEntity_Mixin.java index c01ca07..3894841 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEnderManPlaceBlockGoal/EndermanEntity_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledEnderManPlaceBlockGoal/EndermanEntity_Mixin.java @@ -9,8 +9,7 @@ @Mixin(EnderMan.EndermanLeaveBlockGoal.class) public class EndermanEntity_Mixin { - // TODO(Ravel): target method tick with the signature not found -/** + /** * Mixin EndermanEntity.PlaceBlockGoal.tick()V * * @author OptiJava diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledLayEggs/ChickenEntity_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledLayEggs/ChickenEntity_Mixin.java index b096038..8578bf2 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledLayEggs/ChickenEntity_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledLayEggs/ChickenEntity_Mixin.java @@ -10,7 +10,7 @@ @Mixin(Chicken.class) public class ChickenEntity_Mixin { -/** + /** * Mixin ChickenEntity.tickMovement()V * * @author OptiJava diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java index b0da97a..b510434 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java @@ -1,3 +1,4 @@ +//? if < 1.21.10 { package io.github.optijava.opt_carpet_addition.mixins.rule.optimizeFakePlayerSpawn; import carpet.patches.EntityPlayerMPFake; @@ -13,7 +14,7 @@ @Mixin(EntityPlayerMPFake.class) public abstract class EntityPlayerMPFake_Mixin { - //? if < 1.21.10 { + @Redirect( method = "createFake", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/players/GameProfileCache;get(Ljava/lang/String;)Ljava/util/Optional;") @@ -25,5 +26,6 @@ private static Optional redirectCreateFake(GameProfileCache instanc return instance.get(playerName); } } - //?} + } +//?} \ No newline at end of file diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java index b2f8e52..c9c1e54 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java @@ -1,3 +1,4 @@ +//? if < 1.21.10 { package io.github.optijava.opt_carpet_addition.mixins.rule.optimizeFakePlayerSpawn; import carpet.commands.PlayerCommand; @@ -8,12 +9,11 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; - import java.util.Optional; @Mixin(PlayerCommand.class) public abstract class PlayerCommand_Mixin { - //? if < 1.21.10 { + @Redirect( method = "cantSpawn", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/players/GameProfileCache;get(Ljava/lang/String;)Ljava/util/Optional;") @@ -25,5 +25,5 @@ private static Optional redirectFindByName(GameProfileCache instanc return instance.get(playerName); } } - //?} } +//?} diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayerEntity_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayerEntity_Mixin.java deleted file mode 100644 index abfb9f4..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayerEntity_Mixin.java +++ /dev/null @@ -1,35 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall; - -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.core.component.DataComponentType; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.EnchantmentHelper; -import net.minecraft.world.item.enchantment.Enchantments; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(ServerPlayer.class) -public class ServerPlayerEntity_Mixin { - //TODO support 26.1 -// @Inject( -// method = "die", -// at = @At("HEAD") -// ) -// public void injectOnDeath(DamageSource source, CallbackInfo ci) { -// if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && ((ServerPlayerEntity) (Object)this).getWorld().().getBoolean(GameRules.KEEP_INVENTORY) && Objects.equals(source.getName(), "inWall")) { -// for (ItemStack armor : ((ServerPlayer) (Object)this).getArmorItems()) { -// if (EnchantmentHelper.has(armor, DataComponentType)) { -// armor.setCount(0); -// } -// -// if (EnchantmentHelper.getItemEnchantmentLevel(, armor) > 0) { -// armor.setCount(0); -// } -// } -// } -// } -} diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayer_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayer_Mixin.java new file mode 100644 index 0000000..7e88343 --- /dev/null +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayer_Mixin.java @@ -0,0 +1,33 @@ +package io.github.optijava.opt_carpet_addition.mixins.rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall; + +import io.github.optijava.opt_carpet_addition.OptCarpetSettings; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.EnchantmentEffectComponents; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.level.GameRules; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Objects; + +@Mixin(ServerPlayer.class) +public class ServerPlayer_Mixin { + @Inject( + method = "die", + at = @At("HEAD") + ) + public void injectOnDeath(DamageSource source, CallbackInfo ci) { + ServerPlayer player = (ServerPlayer) (Object) this; + if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && player.serverLevel().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && Objects.equals(source.getMsgId(), "inWall")) { + for (ItemStack armor : player.getInventory().equipment) { + if (EnchantmentHelper.has(armor, EnchantmentEffectComponents.PREVENT_EQUIPMENT_DROP)) { + armor.setCount(0); + } + } + } + } +} diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeBats/BatEntity_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeBats/BatEntity_Mixin.java index 82c6854..18db3c4 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeBats/BatEntity_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeBats/BatEntity_Mixin.java @@ -1,6 +1,5 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.removeBats; -import carpet.script.api.WorldAccess; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; import net.minecraft.core.BlockPos; import net.minecraft.util.RandomSource; diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java b/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java index 42ce9d4..886448a 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java @@ -3,19 +3,15 @@ import carpet.CarpetServer; import com.mojang.authlib.GameProfile; import net.minecraft.server.MinecraftServer; -//? > 1.21.10 -//import net.minecraft.server.PlayerConfigEntry; - - public class McUtils { private static final MinecraftServer server = CarpetServer.minecraft_server; - public static boolean isOp(GameProfile gameProfile) { + public static boolean isOp(GameProfile profile) { //? if < 1.21.10 { - return server.getPlayerList().isOp(gameProfile); + return server.getPlayerList().isOp(profile); //?} else { - //return server.getPlayerManager().isOperator(server.getPlayerManager().getPlayer(gameProfile.id()).getPlayerConfigEntry()); - //?} + /*return server.getPlayerList().isOp(server.getPlayerList().getPlayer(profile.id()).nameAndId()); + *///?} } } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/utils/TpLimit.java b/src/main/java/io/github/optijava/opt_carpet_addition/utils/TpLimit.java index 265e646..7adac68 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/utils/TpLimit.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/utils/TpLimit.java @@ -6,7 +6,7 @@ import io.github.optijava.opt_carpet_addition.OptCarpetAddition; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; import io.github.optijava.opt_carpet_addition.utils.config_bean.TpLimitConfigBean; -import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.commands.CommandSourceStack; import java.util.Objects; @@ -82,7 +82,7 @@ public static void flush() { ConfigUtil.write("TpLimit.json", gson.toJson(OptCarpetSettings.tpLimitConfigBean)); } - public static int reload(CommandContext context) { + public static int reload(CommandContext context) { loadConfigFile(); return 1; } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/CustomItemDiscardTimeValidator.java b/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/CustomItemDiscardTimeValidator.java index 1249596..6d1a55f 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/CustomItemDiscardTimeValidator.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/CustomItemDiscardTimeValidator.java @@ -3,10 +3,11 @@ import carpet.api.settings.CarpetRule; import carpet.api.settings.Validator; -import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.commands.CommandSourceStack; + public class CustomItemDiscardTimeValidator extends Validator { - public Integer validate(ServerCommandSource source, CarpetRule currentRule, Integer newValue, String string) { + public Integer validate(CommandSourceStack source, CarpetRule currentRule, Integer newValue, String string) { return newValue >= -1 ? newValue : null; } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/PlayerTpRateLimitTimeValidator.java b/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/PlayerTpRateLimitTimeValidator.java index 43f0439..91babdb 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/PlayerTpRateLimitTimeValidator.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/utils/validator/PlayerTpRateLimitTimeValidator.java @@ -2,11 +2,12 @@ import carpet.api.settings.Validator; import carpet.api.settings.CarpetRule; -import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.commands.CommandSourceStack; + public class PlayerTpRateLimitTimeValidator extends Validator { @Override - public Integer validate(ServerCommandSource source, CarpetRule currentRule, Integer newValue, String string) { + public Integer validate(CommandSourceStack source, CarpetRule currentRule, Integer newValue, String string) { return newValue >= 0 ? newValue : null; } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 79b2eb7..5a3deb3 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -24,10 +24,10 @@ ], "accessWidener": "opt-carpet-addition.accesswidener", "depends": { - "fabricloader": "${loader_requirement_version}", + "fabricloader": ">=0.19.2", "minecraft": "${minecraft_requirement_version}", "fabric": "*", - "carpet": "${carpet_requirement_version}" + "carpet": "*" }, "suggests": { "another-mod": "Carpet-TIS-Addition" diff --git a/src/main/resources/opt-carpet-addition.mixins.json b/src/main/resources/opt-carpet-addition.mixins.json index 0eaa924..b366b58 100644 --- a/src/main/resources/opt-carpet-addition.mixins.json +++ b/src/main/resources/opt-carpet-addition.mixins.json @@ -1,13 +1,10 @@ { - "required": false, + "required": true, "minVersion": "0.8", "package": "io.github.optijava.opt_carpet_addition.mixins", "compatibilityLevel": "JAVA_21", "mixins": [ "logger.HUDController_Mixin", - "logger.blockUpdate.LoggerRegistry_Mixin", - "rule.cceSuppressionCrashFix.MinecraftServer_Mixin", - "rule.cceSuppressionCrashFix.ShulkerBoxBlock_Mixin", "rule.commandLogger.CommandManager_Mixin", "rule.customItemDiscardTime.ItemEntity_Mixin", "rule.disabledEnderManPickupGoal.EnderManEntity_Mixin", @@ -15,13 +12,10 @@ "rule.disabledEntityTick.ServerWorld_Mixin", "rule.disabledLayEggs.ChickenEntity_Mixin", "rule.disabledNetherPortalSpawn.NetherPortalBlock_Mixin", - "rule.disabledUpdateSuppressionErrorStackTrace.ThreadExecutor_Mixin", "rule.disallowRedstoneWireConnectsToOpenTrapdoor.RedstoneWireBlock_Mixin", - "rule.dropperCrashFix.DispenserBlock_Mixin", - "rule.dropperCrashFix.DropperBlock_Mixin", "rule.optimizeFakePlayerSpawn.EntityPlayerMPFake_Mixin", "rule.optimizeFakePlayerSpawn.PlayerCommand_Mixin", - "rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall.ServerPlayerEntity_Mixin", + "rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall.ServerPlayer_Mixin", "rule.removeBats.BatEntity_Mixin" ], "client": [ diff --git a/versions/1.21.10/opt-carpet-addition.accesswidener b/versions/1.21.10/opt-carpet-addition.accesswidener index 19697e3..4f786c5 100644 --- a/versions/1.21.10/opt-carpet-addition.accesswidener +++ b/versions/1.21.10/opt-carpet-addition.accesswidener @@ -1,14 +1,5 @@ -accessWidener v1 official +accessWidener v2 named accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal accessible field net/minecraft/network/protocol/game/ServerboundChatPacket message Ljava/lang/String; -accessible field net/minecraft/server/network/ServerLoginNetworkHandler server Lnet/minecraft/server/MinecraftServer; -accessible method net/minecraft/entity/Entity unsetRemoved ()V -accessible method net/minecraft/server/network/ServerPlayerEntity worldChanged (Lnet/minecraft/server/world/ServerWorld;)V -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$Entry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$SimpleEntry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$StateReplacementEntry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$StatefulEntry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry -accessible field net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry sourceBlock Lnet/minecraft/block/Block; -accessible field net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry pos Lnet/minecraft/util/math/BlockPos; \ No newline at end of file +accessible field net/minecraft/world/entity/player/Inventory equipment Lnet/minecraft/world/entity/EntityEquipment; diff --git a/versions/1.21.5/opt-carpet-addition.accesswidener b/versions/1.21.5/opt-carpet-addition.accesswidener index 19697e3..4f786c5 100644 --- a/versions/1.21.5/opt-carpet-addition.accesswidener +++ b/versions/1.21.5/opt-carpet-addition.accesswidener @@ -1,14 +1,5 @@ -accessWidener v1 official +accessWidener v2 named accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal accessible field net/minecraft/network/protocol/game/ServerboundChatPacket message Ljava/lang/String; -accessible field net/minecraft/server/network/ServerLoginNetworkHandler server Lnet/minecraft/server/MinecraftServer; -accessible method net/minecraft/entity/Entity unsetRemoved ()V -accessible method net/minecraft/server/network/ServerPlayerEntity worldChanged (Lnet/minecraft/server/world/ServerWorld;)V -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$Entry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$SimpleEntry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$StateReplacementEntry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$StatefulEntry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry -accessible field net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry sourceBlock Lnet/minecraft/block/Block; -accessible field net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry pos Lnet/minecraft/util/math/BlockPos; \ No newline at end of file +accessible field net/minecraft/world/entity/player/Inventory equipment Lnet/minecraft/world/entity/EntityEquipment; diff --git a/versions/1.21.5/src/main/java/io/github/optijava/opt_carpet_addition/logger/blockUpdate/BlockUpdateLogger.java b/versions/1.21.5/src/main/java/io/github/optijava/opt_carpet_addition/logger/blockUpdate/BlockUpdateLogger.java deleted file mode 100644 index 3742bf3..0000000 --- a/versions/1.21.5/src/main/java/io/github/optijava/opt_carpet_addition/logger/blockUpdate/BlockUpdateLogger.java +++ /dev/null @@ -1,59 +0,0 @@ -package io.github.optijava.opt_carpet_addition.logger.blockUpdate; - -import carpet.utils.Messenger; -import io.github.optijava.opt_carpet_addition.OptCarpetAddition; -import io.github.optijava.opt_carpet_addition.logger.AbstractLogger; -import io.github.optijava.opt_carpet_addition.logger.LoggerRegister; -import io.github.optijava.opt_carpet_addition.utils.exceptions.ThrowableCCESuppression; -import net.minecraft.block.Block; -import net.minecraft.text.Text; -import net.minecraft.util.math.BlockPos; - -import java.lang.reflect.Field; - -public class BlockUpdateLogger extends AbstractLogger { - public static final BlockUpdateLogger INSTANCE; - - static { - try { - INSTANCE = new BlockUpdateLogger(LoggerRegister.class.getField("__blockUpdate"), "blockUpdate", null, null, false); - } catch (NoSuchFieldException e) { - throw new Error("Failed to init BlockUpdateLogger.", e); - } - } - - protected BlockUpdateLogger(Field acceleratorField, String logName, String def, String[] options, boolean strictOptions) { - super(acceleratorField, logName, def, options, strictOptions); - } - - public void logBlockUpdate(Block updatingBlock, BlockPos updatingBlockPos, Block sourceBlock) { - // 在1.17.1中,ServerWorld.updateNeighbor方法如下: - // public void updateNeighbor(BlockPos pos, Block sourceBlock, BlockPos neighborPos) - // ^^^^ ^^^^^^^^^ ^^^^^^^ - // 被更新方块 源方块(更新源) 由源方块指定的更新的中心方块 - - // 在1.19.3中,SimpleNeighborUpdater.updateNeighbor方法如下: - // public void updateNeighbor(BlockState state, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) - // ^^^^ ^^^ ^^^^^^^^ ^^^^^ ^^^^ - // 这俩都是被更新的 源 中心 不知道干什么的 - // 在1.19.3中,ChainRestrictedNeighborUpdater.enqueue方法如下: - // private void enqueue(BlockPos pos, Entry entry) - // ^^ ^^^ - // 被更新的 一个封装 - - try { - super.log(() -> new Text[]{ - Messenger.c("m " + updatingBlock.getName().getString(), "w block ", - "m [" + updatingBlockPos.getX() + " " + updatingBlockPos.getY() + " " + updatingBlockPos.getZ() + "]", "w is updated. " + - "Source block: ", "m " + sourceBlock.getName().getString() + ". " - ) - }); - } catch (Exception e) { - if (e instanceof ThrowableCCESuppression t) { - throw t; - } - OptCarpetAddition.LOGGER.error("Unexpected exception occurred when logging block update.", e); - } - } -} - diff --git a/versions/1.21.5/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayerEntity_Mixin.java b/versions/1.21.5/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayerEntity_Mixin.java deleted file mode 100644 index 5d1fba5..0000000 --- a/versions/1.21.5/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayerEntity_Mixin.java +++ /dev/null @@ -1,46 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall; - -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.enchantment.Enchantments; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.damage.DamageSource; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.world.GameRules; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.Objects; - -@Mixin(ServerPlayerEntity.class) -public class ServerPlayerEntity_Mixin { - - @Inject( - method = "onDeath", - at = @At("HEAD") - ) - public void injectOnDeath(DamageSource source, CallbackInfo ci) { - if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && ((ServerPlayerEntity) (Object) this).getServerWorld().getGameRules().getBoolean(GameRules.KEEP_INVENTORY) && Objects.equals(source.getName(), "inWall")) { - RegistryEntry enc = ((ServerPlayerEntity)(Object)this).server.getRegistryManager().getEntryOrThrow(Enchantments.BINDING_CURSE); - - if (EnchantmentHelper.getLevel(enc, ((ServerPlayerEntity) (Object)this).getEquippedStack(EquipmentSlot.HEAD)) > 0) { - ((ServerPlayerEntity) (Object)this).getEquippedStack(EquipmentSlot.HEAD).setCount(0); - } - if (EnchantmentHelper.getLevel(enc, ((ServerPlayerEntity) (Object)this).getEquippedStack(EquipmentSlot.CHEST)) > 0) { - ((ServerPlayerEntity) (Object)this).getEquippedStack(EquipmentSlot.CHEST).setCount(0); - } - if (EnchantmentHelper.getLevel(enc, ((ServerPlayerEntity) (Object)this).getEquippedStack(EquipmentSlot.LEGS)) > 0) { - ((ServerPlayerEntity) (Object)this).getEquippedStack(EquipmentSlot.LEGS).setCount(0); - } - if (EnchantmentHelper.getLevel(enc, ((ServerPlayerEntity) (Object)this).getEquippedStack(EquipmentSlot.FEET)) > 0) { - ((ServerPlayerEntity) (Object)this).getEquippedStack(EquipmentSlot.FEET).setCount(0); - } - } - } -} - diff --git a/versions/1.21/opt-carpet-addition.accesswidener b/versions/1.21/opt-carpet-addition.accesswidener index 19697e3..4f786c5 100644 --- a/versions/1.21/opt-carpet-addition.accesswidener +++ b/versions/1.21/opt-carpet-addition.accesswidener @@ -1,14 +1,5 @@ -accessWidener v1 official +accessWidener v2 named accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal accessible field net/minecraft/network/protocol/game/ServerboundChatPacket message Ljava/lang/String; -accessible field net/minecraft/server/network/ServerLoginNetworkHandler server Lnet/minecraft/server/MinecraftServer; -accessible method net/minecraft/entity/Entity unsetRemoved ()V -accessible method net/minecraft/server/network/ServerPlayerEntity worldChanged (Lnet/minecraft/server/world/ServerWorld;)V -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$Entry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$SimpleEntry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$StateReplacementEntry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$StatefulEntry -accessible class net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry -accessible field net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry sourceBlock Lnet/minecraft/block/Block; -accessible field net/minecraft/world/block/ChainRestrictedNeighborUpdater$SixWayEntry pos Lnet/minecraft/util/math/BlockPos; \ No newline at end of file +accessible field net/minecraft/world/entity/player/Inventory equipment Lnet/minecraft/world/entity/EntityEquipment; From 184484bd4a4173a75762b4a80a62508efc5adf91 Mon Sep 17 00:00:00 2001 From: antideath Date: Fri, 1 May 2026 12:21:34 +0800 Subject: [PATCH 05/10] before 26.1 --- build.gradle.kts | 3 + .../commands/ListAdvanceCommand.java | 4 +- .../ServerPlayer_Mixin.java | 66 +++++++++---------- .../rule/removeBats/BatEntity_Mixin.java | 8 +++ .../ChatMessageC2SPacket_Mixin.java | 9 ++- .../1.21.10/opt-carpet-addition.accesswidener | 2 - .../1.21.5/opt-carpet-addition.accesswidener | 2 - .../1.21/opt-carpet-addition.accesswidener | 4 +- 8 files changed, 55 insertions(+), 43 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index a51b7e7..e3a00c9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -37,6 +37,9 @@ repositories { } } +tasks.withType { + enabled = false +} //https://github.com/FabricMC/fabric-loader/issues/783 //configurations { diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java index c0e5ffe..11b14f4 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java @@ -27,8 +27,8 @@ private static int listAdvance(CommandContext context) { minecraftServer.getPlayerList().getPlayers().forEach(s -> { //? if >= 1.21.10 { /*sb.append(s.getName().getString()).append(" ").append(s.gameMode().getName()).append(" ").append(s.connection.latency()).append("ms ").append(s.getIpAddress()).append(" ").append(s.getGameProfile().id().toString()).append("\n"); - *///?} else { - sb.append(s.getName().getString()).append(" ").append(s.gameMode().getName()).append(" ").append(s.connection.latency()).append("ms ").append(s.getIpAddress()).append(" ").append(s.getGameProfile().getId().toString()).append("\n"); + *///?} else if >= 1.21.5 { + sb.append(s.getName().getString()).append(" ").append(s.gameMode).append(" ").append(s.connection.latency()).append("ms ").append(s.getIpAddress()).append(" ").append(s.getGameProfile().getId().toString()).append("\n"); //?} }); Messenger.m(context.getSource(), sb.toString()); diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayer_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayer_Mixin.java index 7e88343..3c10640 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayer_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayer_Mixin.java @@ -1,33 +1,33 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall; - -import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.EnchantmentEffectComponents; -import net.minecraft.world.item.enchantment.EnchantmentHelper; -import net.minecraft.world.level.GameRules; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.Objects; - -@Mixin(ServerPlayer.class) -public class ServerPlayer_Mixin { - @Inject( - method = "die", - at = @At("HEAD") - ) - public void injectOnDeath(DamageSource source, CallbackInfo ci) { - ServerPlayer player = (ServerPlayer) (Object) this; - if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && player.serverLevel().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && Objects.equals(source.getMsgId(), "inWall")) { - for (ItemStack armor : player.getInventory().equipment) { - if (EnchantmentHelper.has(armor, EnchantmentEffectComponents.PREVENT_EQUIPMENT_DROP)) { - armor.setCount(0); - } - } - } - } -} +//package io.github.optijava.opt_carpet_addition.mixins.rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall; +// +//import io.github.optijava.opt_carpet_addition.OptCarpetSettings; +//import net.minecraft.server.level.ServerPlayer; +//import net.minecraft.world.damagesource.DamageSource; +//import net.minecraft.world.item.ItemStack; +//import net.minecraft.world.item.enchantment.EnchantmentEffectComponents; +//import net.minecraft.world.item.enchantment.EnchantmentHelper; +//import net.minecraft.world.level.GameRules; +//import org.spongepowered.asm.mixin.Mixin; +//import org.spongepowered.asm.mixin.injection.At; +//import org.spongepowered.asm.mixin.injection.Inject; +//import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +// +//import java.util.Objects; +// +//@Mixin(ServerPlayer.class) +//public class ServerPlayer_Mixin { +// @Inject( +// method = "die", +// at = @At("HEAD") +// ) +// public void injectOnDeath(DamageSource source, CallbackInfo ci) { +// ServerPlayer player = (ServerPlayer) (Object) this; +// if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && player.serverLevel().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && Objects.equals(source.getMsgId(), "inWall")) { +// for (ItemStack armor : player.getInventory().equipment) { +// if (EnchantmentHelper.has(armor, EnchantmentEffectComponents.PREVENT_EQUIPMENT_DROP)) { +// armor.setCount(0); +// } +// } +// } +// } +//} diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeBats/BatEntity_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeBats/BatEntity_Mixin.java index 18db3c4..7a8d2cb 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeBats/BatEntity_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeBats/BatEntity_Mixin.java @@ -3,7 +3,11 @@ import io.github.optijava.opt_carpet_addition.OptCarpetSettings; import net.minecraft.core.BlockPos; import net.minecraft.util.RandomSource; +//? if > 1.21 { import net.minecraft.world.entity.EntitySpawnReason; +//?} else { +/*import net.minecraft.world.entity.MobSpawnType; +*///?} import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ambient.Bat; import net.minecraft.world.level.LevelAccessor; @@ -19,7 +23,11 @@ public class BatEntity_Mixin { at = @At("HEAD"), cancellable = true ) + //? if > 1.21 { private static void injectCanSpawn(EntityType entityType, LevelAccessor levelAccessor, EntitySpawnReason entitySpawnReason, BlockPos blockPos, RandomSource randomSource, CallbackInfoReturnable cir) { + //?} else { + /*private static void injectCanSpawn(EntityType entityType, LevelAccessor levelAccessor, MobSpawnType mobSpawnType, BlockPos blockPos, RandomSource randomSource, CallbackInfoReturnable cir) { + *///?} if (OptCarpetSettings.removeBats) { cir.setReturnValue(false); } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/unescapeChatMessage/ChatMessageC2SPacket_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/unescapeChatMessage/ChatMessageC2SPacket_Mixin.java index 67fc004..e161710 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/unescapeChatMessage/ChatMessageC2SPacket_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/unescapeChatMessage/ChatMessageC2SPacket_Mixin.java @@ -3,7 +3,9 @@ import io.github.optijava.opt_carpet_addition.OptCarpetSettings; import net.minecraft.network.protocol.game.ServerboundChatPacket; import org.apache.commons.lang3.StringEscapeUtils; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -11,6 +13,10 @@ @Mixin(ServerboundChatPacket.class) public class ChatMessageC2SPacket_Mixin { + @Shadow + @Final + public String message; + /** * Mixin ChatMessageC2SPacket. * @@ -22,7 +28,8 @@ public class ChatMessageC2SPacket_Mixin { public void injectInit(CallbackInfo ci) { if (OptCarpetSettings.unescapeChatMessage) { try { - ((ServerboundChatPacket) (Object) this).message = StringEscapeUtils.unescapeJava(((ServerboundChatPacket) (Object) this).message); + ServerboundChatPacket packet = (ServerboundChatPacket) (Object) this; + message = StringEscapeUtils.unescapeJava(message); } catch (Exception ignore) { } } diff --git a/versions/1.21.10/opt-carpet-addition.accesswidener b/versions/1.21.10/opt-carpet-addition.accesswidener index 4f786c5..ee524a7 100644 --- a/versions/1.21.10/opt-carpet-addition.accesswidener +++ b/versions/1.21.10/opt-carpet-addition.accesswidener @@ -1,5 +1,3 @@ accessWidener v2 named accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal -accessible field net/minecraft/network/protocol/game/ServerboundChatPacket message Ljava/lang/String; -accessible field net/minecraft/world/entity/player/Inventory equipment Lnet/minecraft/world/entity/EntityEquipment; diff --git a/versions/1.21.5/opt-carpet-addition.accesswidener b/versions/1.21.5/opt-carpet-addition.accesswidener index 4f786c5..ee524a7 100644 --- a/versions/1.21.5/opt-carpet-addition.accesswidener +++ b/versions/1.21.5/opt-carpet-addition.accesswidener @@ -1,5 +1,3 @@ accessWidener v2 named accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal -accessible field net/minecraft/network/protocol/game/ServerboundChatPacket message Ljava/lang/String; -accessible field net/minecraft/world/entity/player/Inventory equipment Lnet/minecraft/world/entity/EntityEquipment; diff --git a/versions/1.21/opt-carpet-addition.accesswidener b/versions/1.21/opt-carpet-addition.accesswidener index 4f786c5..2ea6e4d 100644 --- a/versions/1.21/opt-carpet-addition.accesswidener +++ b/versions/1.21/opt-carpet-addition.accesswidener @@ -1,5 +1,3 @@ accessWidener v2 named accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal -accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal -accessible field net/minecraft/network/protocol/game/ServerboundChatPacket message Ljava/lang/String; -accessible field net/minecraft/world/entity/player/Inventory equipment Lnet/minecraft/world/entity/EntityEquipment; +accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal \ No newline at end of file From c0f633bcfddf328452836cc00c763565f66c2134 Mon Sep 17 00:00:00 2001 From: antideath Date: Fri, 1 May 2026 13:00:26 +0800 Subject: [PATCH 06/10] bump to 26.1 --- README-en.md | 5 +- README.md | 5 +- settings.gradle.kts | 6 +- .../OptCarpetAddition.java | 13 ++- .../OptCarpetSettings.java | 5 +- .../commands/CrashCommand.java | 1 - .../commands/ListAdvanceCommand.java | 8 +- .../commands/PlayerTpCommand.java | 12 +-- .../fixExperienceBug/FixExperienceBug.java | 22 ++++- .../disabledLayEggs/ChickenEntity_Mixin.java | 6 +- .../EntityPlayerMPFake_Mixin.java | 4 +- .../PlayerCommand_Mixin.java | 4 +- .../opt_carpet_addition/utils/McUtils.java | 8 +- stonecutter.gradle.kts | 2 +- unobfuscated.gradle.kts | 90 +++++++++++++++++++ .../{1.21.10 => 1.21.11}/gradle.properties | 8 +- .../opt-carpet-addition.accesswidener | 0 versions/26.1/gradle.properties | 16 ++++ .../26.1/opt-carpet-addition.accesswidener | 3 + 19 files changed, 178 insertions(+), 40 deletions(-) create mode 100644 unobfuscated.gradle.kts rename versions/{1.21.10 => 1.21.11}/gradle.properties (75%) rename versions/{1.21.10 => 1.21.11}/opt-carpet-addition.accesswidener (100%) create mode 100644 versions/26.1/gradle.properties create mode 100644 versions/26.1/opt-carpet-addition.accesswidener diff --git a/README-en.md b/README-en.md index 944f246..e2090bd 100755 --- a/README-en.md +++ b/README-en.md @@ -17,14 +17,15 @@ Most other MC versions that are the same as the supported major versions but hav | Minecraft Version | Support Status | |-------------------|--------------------------------------------------------------------------| -| 1.21.10 | Supporting, developing actively | +| 26.1 | Supporting, developing actively | +| 1.21.11 | Supporting, developing actively | | 1.21.5 | Supporting, developing actively | | 1.21 | Supporting, developing actively | | 1.20.4 | Supporting, developing actively | | 1.20.1 | Not supporting, development stopped (supporting stopped on Jun 18, 2025) | | 1.19.3 | Not supporting, development stopped (supporting stopped on Jun 18, 2025) | | 1.18.2 | Not supporting, development stopped (supporting stopped on Jun 18, 2025) | -| 1.17.1 | Supporting, developing actively | +| 1.17.1 | Not supporting, development stopped (supporting stopped on May 1, 2026) | | 1.16.5 | Not supporting, development stopped (supporting stopped on Jan 8, 2023) | ## Rules diff --git a/README.md b/README.md index 56c9e35..728070b 100755 --- a/README.md +++ b/README.md @@ -16,14 +16,15 @@ Language: [English](https://github.com/OptiJava/OptCarpetAddition/blob/master/RE | Minecraft 版本 | 支持状态 | |--------------|----------------------------| -| 1.21.10 | 支持,积极开发 | +| 26.1 | 支持,积极开发 | +| 1.21.11 | 支持,积极开发 | | 1.21.5 | 支持,积极开发 | | 1.21 | 支持,积极开发 | | 1.20.4 | 支持,积极开发 | | 1.20.1 | 不支持,停止维护(在`2025/6/18`停止维护) | | 1.19.3 | 不支持,停止维护(在`2025/6/18`停止维护) | | 1.18.2 | 不支持,停止维护(在`2025/6/18`停止维护) | -| 1.17.1 | 支持,积极开发 | +| 1.17.1 | 不支持,停止维护(在`2026/5/1`停止维护) | | 1.16.5 | 不支持,停止维护(在`2023/1/8`停止维护) | ## 规则 diff --git a/settings.gradle.kts b/settings.gradle.kts index 02c89f0..07b4180 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -16,8 +16,8 @@ plugins { stonecutter { create(rootProject) { - versions("1.21", "1.21.5", "1.21.10").buildscript("build.gradle.kts") -// version("26.1").buildscript("unobfuscated.gradle.kts") - vcsVersion = "1.21.5" + versions("1.21", "1.21.5", "1.21.11").buildscript("build.gradle.kts") + version("26.1").buildscript("unobfuscated.gradle.kts") + vcsVersion = "26.1" } } \ No newline at end of file diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java index 8e61d6b..67750b1 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java @@ -13,7 +13,11 @@ import io.github.optijava.opt_carpet_addition.utils.ConfigUtil; import io.github.optijava.opt_carpet_addition.utils.TpLimit; import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents; +//? if > 1.21.11 { +import net.fabricmc.fabric.api.entity.event.v1.ServerEntityLevelChangeEvents; +//?} else { +/*import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents; +*///?} import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; import net.minecraft.server.level.ServerPlayer; @@ -33,8 +37,11 @@ public class OptCarpetAddition implements CarpetExtension, ModInitializer { public void onInitialize() { LOGGER.info("OptCarpetAddition is loading..."); CarpetServer.manageExtension(this); - - ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.register(new FixExperienceBug()); + //? if > 1.21.11 { + ServerEntityLevelChangeEvents.AFTER_PLAYER_CHANGE_LEVEL.register(new FixExperienceBug()); + //?} else { + /*ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.register(new FixExperienceBug()); + *///?} } @Override diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java index d884f35..c84f336 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java @@ -178,9 +178,10 @@ public class OptCarpetSettings { public static boolean enableLoggerCommand = true; @Rule( - categories = {RuleCategory.COMMAND , OCA} + categories = {RuleCategory.COMMAND , OCA}, + options = {"true", "false", "1", "2", "3", "4"} ) - public static boolean enableCrashCommand = true; + public static String enableCrashCommand = FALSE; @Rule( categories = {RuleCategory.COMMAND , OCA} diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java index 1296bbd..5c06a6d 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java @@ -18,7 +18,6 @@ private CrashCommand() { public static void registerCommand(CommandDispatcher dispatcher) { LiteralArgumentBuilder argumentBuilder = Commands.literal("crash") - .requires((CommandSourceStack -> CommandSourceStack.hasPermission(4))) .requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableCrashCommand)) .executes(CrashCommand::prepare) .then( diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java index 11b14f4..bca0154 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java @@ -26,10 +26,10 @@ private static int listAdvance(CommandContext context) { sb.append("\n"); minecraftServer.getPlayerList().getPlayers().forEach(s -> { //? if >= 1.21.10 { - /*sb.append(s.getName().getString()).append(" ").append(s.gameMode().getName()).append(" ").append(s.connection.latency()).append("ms ").append(s.getIpAddress()).append(" ").append(s.getGameProfile().id().toString()).append("\n"); - *///?} else if >= 1.21.5 { - sb.append(s.getName().getString()).append(" ").append(s.gameMode).append(" ").append(s.connection.latency()).append("ms ").append(s.getIpAddress()).append(" ").append(s.getGameProfile().getId().toString()).append("\n"); - //?} + sb.append(s.getName().getString()).append(" ").append(s.gameMode().getName()).append(" ").append(s.connection.latency()).append("ms ").append(s.getIpAddress()).append(" ").append(s.getGameProfile().id().toString()).append("\n"); + //?} else if >= 1.21.5 { + /*sb.append(s.getName().getString()).append(" ").append(s.gameMode).append(" ").append(s.connection.latency()).append("ms ").append(s.getIpAddress()).append(" ").append(s.getGameProfile().getId().toString()).append("\n"); + *///?} }); Messenger.m(context.getSource(), sb.toString()); } catch (Exception e) { diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java index 67d5d6b..2a03fc2 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java @@ -81,10 +81,10 @@ private static int teleport(CommandContext context) { try { //? if >= 1.21.10 { - //final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().name(); + final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().name(); //?} else { - final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().getName(); - //?} + /*final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().getName(); + *///?} if (server.getPlayerList().getPlayerByName(target) instanceof EntityPlayerMPFake) { @@ -168,10 +168,10 @@ private static int teleportHere(CommandContext context) { try { //? if >= 1.21.10 { - //final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().name(); + final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().name(); //?} else { - final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().getName(); - //?} + /*final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().getName(); + *///?} if (server.getPlayerList().getPlayerByName(target) instanceof EntityPlayerMPFake) { diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java b/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java index b8fd9fe..7232e4c 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java @@ -1,16 +1,32 @@ package io.github.optijava.opt_carpet_addition.events.fixExperienceBug; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents; +//? if > 1.21.11 { +import net.fabricmc.fabric.api.entity.event.v1.ServerEntityLevelChangeEvents; +//?} else { +/*import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents; +*///?} import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; -public class FixExperienceBug implements ServerEntityWorldChangeEvents.AfterPlayerChange { +//? if > 1.21.11 { +public class FixExperienceBug implements ServerEntityLevelChangeEvents.AfterPlayerChange { @Override - public void afterChangeWorld(ServerPlayer player, ServerLevel origin, ServerLevel destination) { + public void afterChangeLevel(ServerPlayer player, ServerLevel origin, ServerLevel destination) { if (OptCarpetSettings.fixXpLevelBug) { // refresh player's experience bar player.giveExperiencePoints(0); } } } +//?} else { +//public class FixExperienceBug implements ServerEntityWorldChangeEvents.AfterPlayerChange { +// @Override +// public void afterChangeWorld(ServerPlayer player, ServerLevel origin, ServerLevel destination) { +// if (OptCarpetSettings.fixXpLevelBug) { +// // refresh player's experience bar +// player.giveExperiencePoints(0); +// } +// } +//} +//?} diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledLayEggs/ChickenEntity_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledLayEggs/ChickenEntity_Mixin.java index 8578bf2..03cba77 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledLayEggs/ChickenEntity_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disabledLayEggs/ChickenEntity_Mixin.java @@ -1,7 +1,11 @@ package io.github.optijava.opt_carpet_addition.mixins.rule.disabledLayEggs; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -import net.minecraft.world.entity.animal.Chicken; +//? if >= 1.21.11 { +import net.minecraft.world.entity.animal.chicken.Chicken; +//?} else { +/*import net.minecraft.world.entity.animal.Chicken; +*///?} import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java index b510434..d0f12f6 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java @@ -1,5 +1,5 @@ //? if < 1.21.10 { -package io.github.optijava.opt_carpet_addition.mixins.rule.optimizeFakePlayerSpawn; +/*package io.github.optijava.opt_carpet_addition.mixins.rule.optimizeFakePlayerSpawn; import carpet.patches.EntityPlayerMPFake; import com.mojang.authlib.GameProfile; @@ -28,4 +28,4 @@ private static Optional redirectCreateFake(GameProfileCache instanc } } -//?} \ No newline at end of file +*///?} \ No newline at end of file diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java index c9c1e54..f9444e8 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java @@ -1,5 +1,5 @@ //? if < 1.21.10 { -package io.github.optijava.opt_carpet_addition.mixins.rule.optimizeFakePlayerSpawn; +/*package io.github.optijava.opt_carpet_addition.mixins.rule.optimizeFakePlayerSpawn; import carpet.commands.PlayerCommand; import com.mojang.authlib.GameProfile; @@ -26,4 +26,4 @@ private static Optional redirectFindByName(GameProfileCache instanc } } } -//?} +*///?} diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java b/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java index 886448a..131ca61 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java @@ -9,9 +9,9 @@ public class McUtils { public static boolean isOp(GameProfile profile) { //? if < 1.21.10 { - return server.getPlayerList().isOp(profile); - //?} else { - /*return server.getPlayerList().isOp(server.getPlayerList().getPlayer(profile.id()).nameAndId()); - *///?} + /*return server.getPlayerList().isOp(profile); + *///?} else { + return server.getPlayerList().isOp(server.getPlayerList().getPlayer(profile.id()).nameAndId()); + //?} } } diff --git a/stonecutter.gradle.kts b/stonecutter.gradle.kts index ddecbea..6edbb71 100644 --- a/stonecutter.gradle.kts +++ b/stonecutter.gradle.kts @@ -3,4 +3,4 @@ plugins { id("dev.kikugie.stonecutter") id("net.fabricmc.fabric-loom") version "1.16-SNAPSHOT" apply false } -stonecutter active "1.21.5" +stonecutter active "26.1" diff --git a/unobfuscated.gradle.kts b/unobfuscated.gradle.kts new file mode 100644 index 0000000..d67d142 --- /dev/null +++ b/unobfuscated.gradle.kts @@ -0,0 +1,90 @@ +import java.text.SimpleDateFormat +import java.util.Date + +plugins { + id("net.fabricmc.fabric-loom") + id("maven-publish") +} + + +val minecraftVer = stonecutter.current.version +val modver = "${property("mod_version")}" +val mod = "${modver}+${minecraftVer}+build.${SimpleDateFormat("yyMMddHHmm").format(Date())}" +val archivesBaseName = project.findProperty("archives_base_name") + +base { + archivesName.set("${archivesBaseName}+${mod}") +} + +repositories { + mavenCentral() + // 阿里云镜像 + maven { + url = uri("https://maven.aliyun.com/repository/public/") + } + // CurseMaven + maven { + url = uri("https://www.cursemaven.com") + } + // Modrinth + maven { + name = "Modrinth" + url = uri("https://api.modrinth.com/maven") + } + // JitPack + maven { + url = uri("https://jitpack.io") + } +} + +tasks.withType { + enabled = false +} + +//https://github.com/FabricMC/fabric-loader/issues/783 +//configurations { +// modRuntimeOnly.exclude group: 'net.fabricmc', module: 'fabric-loader' +//} + + +dependencies { + "minecraft"("com.mojang:minecraft:${minecraftVer}") + "implementation"("net.fabricmc:fabric-loader:${property("loader_version")}") + "implementation"("net.fabricmc.fabric-api:fabric-api:${property("fabric_version")}") + "implementation"("com.github.gnembon:fabric-carpet:${property("carpet_core_version")}") +} + + +tasks.processResources { + from("opt-carpet-addition.accesswidener") + + inputs.property("version", modver) + inputs.property("minecraft_requirement_version", minecraftVer) + + filesMatching("fabric.mod.json") { + val valueMap = mapOf( + "version" to modver, + "minecraft_requirement_version" to minecraftVer, + ) + expand(valueMap) + } +} + +loom { + accessWidenerPath.set(file("opt-carpet-addition.accesswidener")) + + runConfigs.all { + ideConfigGenerated(true) + vmArgs("-Dmixin.debug.export=true") + runDir("../../run") + } +} + +tasks.jar { + inputs.property("archivesName", base.archivesName) + from("LICENSE") { + rename { fileName -> + "${fileName}_${base.archivesName.get()}" + } + } +} diff --git a/versions/1.21.10/gradle.properties b/versions/1.21.11/gradle.properties similarity index 75% rename from versions/1.21.10/gradle.properties rename to versions/1.21.11/gradle.properties index 323de52..d9164df 100644 --- a/versions/1.21.10/gradle.properties +++ b/versions/1.21.11/gradle.properties @@ -1,6 +1,6 @@ # Fabric Properties # check these on https://fabricmc.net/versions.html?&version=1.20.1 - minecraft_version=1.21.10 + minecraft_version=1.21.11 yarn_mappings=1.21.10+build.2 # Fabric Mod Metadata @@ -9,9 +9,9 @@ # Build Information # The target mc versions for the mod during mod publishing, separated with \n - game_versions=1.21.10 + game_versions=1.21.11 # Dependencies - fabric_version=0.136.0+1.21.10 - carpet_core_version=7113642 + fabric_version=0.141.3+1.21.11 + carpet_core_version=7367605 diff --git a/versions/1.21.10/opt-carpet-addition.accesswidener b/versions/1.21.11/opt-carpet-addition.accesswidener similarity index 100% rename from versions/1.21.10/opt-carpet-addition.accesswidener rename to versions/1.21.11/opt-carpet-addition.accesswidener diff --git a/versions/26.1/gradle.properties b/versions/26.1/gradle.properties new file mode 100644 index 0000000..8bb45da --- /dev/null +++ b/versions/26.1/gradle.properties @@ -0,0 +1,16 @@ +# Fabric Properties + # check these on https://fabricmc.net/versions.html?&version=1.20.1 + minecraft_version=26.1 + +# Fabric Mod Metadata + minecraft_requirement_version=26.1 + carpet_requirement_version=>=1.4.147 + +# Build Information + # The target mc versions for the mod during mod publishing, separated with \n + game_versions=26.1 + +# Dependencies + fabric_version=0.145.1+26.1 + carpet_core_version=v26.1 + diff --git a/versions/26.1/opt-carpet-addition.accesswidener b/versions/26.1/opt-carpet-addition.accesswidener new file mode 100644 index 0000000..361b3fd --- /dev/null +++ b/versions/26.1/opt-carpet-addition.accesswidener @@ -0,0 +1,3 @@ +accessWidener v2 official +accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal +accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal From 54bc47de3133322a738e881d619b11be8e6f90fa Mon Sep 17 00:00:00 2001 From: antideath Date: Fri, 1 May 2026 13:11:33 +0800 Subject: [PATCH 07/10] fix build fail --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 18c1457..af8fe8b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,7 +10,7 @@ jobs: build: strategy: matrix: - java: [ 21 ] + java: [ 25 ] os: [ ubuntu-latest, windows-latest From 47bb286b5d5996efc13e40f7601cb6bc9ed5b244 Mon Sep 17 00:00:00 2001 From: OptiJava Date: Fri, 1 May 2026 19:31:18 +0800 Subject: [PATCH 08/10] fix: whole checks & fixes --- README-en.md | 2 + README.md | 2 + build.gradle.kts | 9 +- .../OptCarpetSettings.java | 17 +- .../commands/CommandLoggerCommand.java | 2 +- .../commands/CrashCommand.java | 1 - .../commands/ListAdvanceCommand.java | 1 + .../commands/PlayerTpCommand.java | 47 +++-- .../commands/TpLimitCommand.java | 5 - .../fixExperienceBug/FixExperienceBug.java | 20 +- .../logger/LoggerRegister.java | 2 +- .../RedstoneWireBlock_Mixin.java | 25 --- .../ServerPlayer_Mixin.java | 172 ++++++++++++++---- .../opt_carpet_addition/utils/McUtils.java | 6 +- .../opt-carpet-addition/lang/zh_cn.json | 6 - .../resources/opt-carpet-addition.mixins.json | 1 - .../1.21.11/opt-carpet-addition.accesswidener | 2 + .../1.21.5/opt-carpet-addition.accesswidener | 2 + .../1.21/opt-carpet-addition.accesswidener | 2 +- .../26.1/opt-carpet-addition.accesswidener | 2 + 20 files changed, 206 insertions(+), 120 deletions(-) delete mode 100644 src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disallowRedstoneWireConnectsToOpenTrapdoor/RedstoneWireBlock_Mixin.java diff --git a/README-en.md b/README-en.md index e2090bd..ec647a9 100755 --- a/README-en.md +++ b/README-en.md @@ -346,6 +346,8 @@ If `blockUpdate` is not needed, **disabling this is highly recommended**. **just in >=1.20** +**removed after v2.0.0** + If you want to use note block update suppression in 1.20, this may help you. - Default value: `false` diff --git a/README.md b/README.md index 728070b..4c529bd 100755 --- a/README.md +++ b/README.md @@ -347,6 +347,8 @@ DispenserBlockEntity dispenserBlockEntity = (DispenserBlockEntity)blockPointerIm **仅限`1.20`版本及以上** +**在v2.0.0以上版本已被移除** + 如果你想在`1.20`使用音符盒极简抑制器,这可能能帮助你 - Default value: `false` diff --git a/build.gradle.kts b/build.gradle.kts index e3a00c9..2f99a3b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,11 +9,12 @@ plugins { val minecraftVer = stonecutter.current.version val modver = "${property("mod_version")}" -val mod = "${modver}+${minecraftVer}+build.${SimpleDateFormat("yyMMddHHmm").format(Date())}" + +val modBuildNameSuffix = "v${modver}+build.${SimpleDateFormat("yyMMddHHmm").format(Date())}-${minecraftVer}" val archivesBaseName = project.findProperty("archives_base_name") base { - archivesName.set("${archivesBaseName}+${mod}") + archivesName.set("${archivesBaseName}+${modBuildNameSuffix}") } repositories { @@ -65,7 +66,7 @@ tasks.processResources { filesMatching("fabric.mod.json") { val valueMap = mapOf( - "version" to modver, + "version" to modver, "minecraft_requirement_version" to minecraftVer, ) expand(valueMap) @@ -90,3 +91,5 @@ tasks.jar { } } } + +println(stonecutter.tree.versions.toString()) diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java index c84f336..7955632 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java @@ -15,6 +15,7 @@ public class OptCarpetSettings { public static final String OCA = "OCA"; public static final String FALSE = "false"; + public static final String TRUE = "true"; public static Path configDirectory = FabricLoader.getInstance().getConfigDir().resolve("opt-carpet-addition"); // Tp command rules ======================================================================= @@ -116,12 +117,13 @@ public class OptCarpetSettings { ) public static boolean commandLogger = false; - //#if MC < 12110 - @Rule( + //? if < 1.21.10 { + /*@Rule( categories = {RuleCategory.OPTIMIZATION,OCA} ) public static boolean optimizeFakePlayerSpawn = false; - //#endif + *///?} + @Rule( categories = {RuleCategory.FEATURE,OCA} @@ -173,13 +175,16 @@ public class OptCarpetSettings { public static boolean allowSpectatorTpToAnyPlayer = false; @Rule( - categories = {RuleCategory.COMMAND , OCA} + categories = {RuleCategory.COMMAND , OCA}, + options = {"true", "false", "1", "2", "3", "4"}, + strict = true ) - public static boolean enableLoggerCommand = true; + public static String enableLoggerCommand = TRUE; @Rule( categories = {RuleCategory.COMMAND , OCA}, - options = {"true", "false", "1", "2", "3", "4"} + options = {"true", "false", "1", "2", "3", "4"}, + strict = true ) public static String enableCrashCommand = FALSE; diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CommandLoggerCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CommandLoggerCommand.java index 1915555..d424383 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CommandLoggerCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CommandLoggerCommand.java @@ -12,7 +12,7 @@ public class CommandLoggerCommand { public static void registerCommand(CommandDispatcher dispatcher) { LiteralArgumentBuilder argumentBuilder = Commands.literal("commandlogger"). - requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableLoggerCommand)) + requires((player) -> (carpet.utils.CommandHelper.canUseCommand(player, enableLoggerCommand))) .then( Commands.literal("reload") .executes(CommandLoggerCommand::reload) diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java index 5c06a6d..1de455f 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/CrashCommand.java @@ -45,7 +45,6 @@ public static int confirm(CommandContext context) { return 0; } OptCarpetAddition.LOGGER.fatal("[OCA Crash Command] Confirm Crash!"); -// Runtime.getRuntime().halt(1); throw new Error("[OCA Crash Command] Confirm Crash!"); } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java index bca0154..a77024e 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java @@ -30,6 +30,7 @@ private static int listAdvance(CommandContext context) { //?} else if >= 1.21.5 { /*sb.append(s.getName().getString()).append(" ").append(s.gameMode).append(" ").append(s.connection.latency()).append("ms ").append(s.getIpAddress()).append(" ").append(s.getGameProfile().getId().toString()).append("\n"); *///?} + // TODO: 加回来1.21版本 }); Messenger.m(context.getSource(), sb.toString()); } catch (Exception e) { diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java index 2a03fc2..daf027a 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java @@ -21,16 +21,15 @@ import java.util.Map; import java.util.Objects; +import static io.github.optijava.opt_carpet_addition.utils.McUtils.MINECRAFT_SERVER; + public class PlayerTpCommand { /* permit 1 request per 2 seconds < == > permit 0.5 request per 1 second */ public static Map rateLimiterMap = new HashMap<>(); - private PlayerTpCommand() {} - private static final String COMMAND_PREFIX = "player"; - private static final MinecraftServer server = CarpetServer.minecraft_server; public static void registerCommands(CommandDispatcher dispatcher) { LiteralArgumentBuilder argumentBuilder = Commands.literal(COMMAND_PREFIX) @@ -64,17 +63,17 @@ private static int teleport(CommandContext context) { String target = StringArgumentType.getString(context, COMMAND_PREFIX); - if (CarpetServer.minecraft_server.getPlayerList().getPlayerByName(target) == null) { + if (MINECRAFT_SERVER.getPlayerList().getPlayerByName(target) == null) { Messenger.m(context.getSource(), "r No such player"); return 0; } - if (context.getSource().equals(server.createCommandSourceStack())) { + if (context.getSource().equals(MINECRAFT_SERVER.createCommandSourceStack())) { Messenger.m(context.getSource(), "r Console can't tp to player."); OptCarpetAddition.LOGGER.warn("Console can't tp to player"); return 0; } - if (StringArgumentType.getString(context, COMMAND_PREFIX).isEmpty() || target == null) { + if (StringArgumentType.getString(context, COMMAND_PREFIX).isEmpty()) { Messenger.m(context.getSource(), "r Invalid player name."); return 0; } @@ -86,10 +85,10 @@ private static int teleport(CommandContext context) { /*final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().getName(); *///?} - if (server.getPlayerList().getPlayerByName(target) instanceof EntityPlayerMPFake) { + if (MINECRAFT_SERVER.getPlayerList().getPlayerByName(target) instanceof EntityPlayerMPFake) { switch (OptCarpetSettings.commandTpToFakePlayer) { - case "true" -> executeTp(commandSourcePlayerName, context); + case OptCarpetSettings.TRUE -> executeTp(commandSourcePlayerName, context); case "ops" -> { if (McUtils.isOp(context.getSource().getPlayer().getGameProfile())) { executeTp(commandSourcePlayerName, context); @@ -97,7 +96,7 @@ private static int teleport(CommandContext context) { if (OptCarpetSettings.allowSpectatorTpToAnyPlayer && context.getSource().getPlayer().gameMode.getGameModeForPlayer().equals(GameType.SPECTATOR)){ executeTp(commandSourcePlayerName, context); } else { - Messenger.m(context.getSource(), "r You have no permission to teleport to fake player.You aren't op."); + Messenger.m(context.getSource(), "r You have no permission to teleport to fake player. You aren't op."); } } } @@ -111,9 +110,9 @@ private static int teleport(CommandContext context) { } } else { - + // TODO: "true"改为OCS.TRUE switch (OptCarpetSettings.allowTpToRealPlayer) { - case "true" -> tp(commandSourcePlayerName, target); + case OptCarpetSettings.TRUE -> tp(commandSourcePlayerName, target); case "ops" -> { if (McUtils.isOp(context.getSource().getPlayer().getGameProfile())) { tp(commandSourcePlayerName, target); @@ -121,7 +120,7 @@ private static int teleport(CommandContext context) { if (OptCarpetSettings.allowSpectatorTpToAnyPlayer && context.getSource().getPlayer().gameMode.getGameModeForPlayer().equals(GameType.SPECTATOR)) { executeTp(commandSourcePlayerName, context); } else { - Messenger.m(context.getSource(), "r You have no permission to teleport to real player.You aren't op."); + Messenger.m(context.getSource(), "r You have no permission to teleport to real player. You aren't op."); } } } @@ -150,18 +149,18 @@ private static int teleportHere(CommandContext context) { String target = StringArgumentType.getString(context, COMMAND_PREFIX); - if (server.getPlayerList().getPlayerByName(target) == null) { + if (MINECRAFT_SERVER.getPlayerList().getPlayerByName(target) == null) { Messenger.m(context.getSource(), "r No such player"); return 0; } - if (context.getSource().equals(server.createCommandSourceStack())) { + if (context.getSource().equals(MINECRAFT_SERVER.createCommandSourceStack())) { Messenger.m(context.getSource(), "r Console can't tp here player."); OptCarpetAddition.LOGGER.warn("Console can't tp here player"); return 0; } - if (StringArgumentType.getString(context, COMMAND_PREFIX).isEmpty() || target == null) { + if (StringArgumentType.getString(context, COMMAND_PREFIX).isEmpty()) { Messenger.m(context.getSource(), "r Invalid player name."); return 0; } @@ -173,32 +172,32 @@ private static int teleportHere(CommandContext context) { /*final String commandSourcePlayerName = Objects.requireNonNull(context.getSource().getPlayer()).getGameProfile().getName(); *///?} - if (server.getPlayerList().getPlayerByName(target) instanceof EntityPlayerMPFake) { + if (MINECRAFT_SERVER.getPlayerList().getPlayerByName(target) instanceof EntityPlayerMPFake) { switch (OptCarpetSettings.commandTpHereFakePlayer) { - case "true" -> executeTpHere(commandSourcePlayerName, context); + case OptCarpetSettings.TRUE -> executeTpHere(commandSourcePlayerName, context); case "ops" -> { if (McUtils.isOp(context.getSource().getPlayer().getGameProfile())) { executeTpHere(commandSourcePlayerName, context); } else { - Messenger.m(context.getSource(), "r You have no permission to teleport here fake player.You aren't op."); + Messenger.m(context.getSource(), "r You have no permission to teleport here fake player. You aren't op."); } } - case "false" -> Messenger.m(context.getSource(), "r Anybody can't teleport here fake player."); + case OptCarpetSettings.FALSE -> Messenger.m(context.getSource(), "r Anybody can't teleport here fake player."); } } else { switch (OptCarpetSettings.allowTpHereRealPlayer) { - case "true" -> tp(target, commandSourcePlayerName); + case OptCarpetSettings.TRUE -> tp(target, commandSourcePlayerName); case "ops" -> { if (McUtils.isOp(context.getSource().getPlayer().getGameProfile())) { tp(target, commandSourcePlayerName); } else { - Messenger.m(context.getSource(), "r You have no permission to teleport here real player.You aren't op."); + Messenger.m(context.getSource(), "r You have no permission to teleport here real player. You aren't op."); } } - case "false" -> Messenger.m(context.getSource(), "r Anybody can't teleport here real player."); + case OptCarpetSettings.FALSE -> Messenger.m(context.getSource(), "r Anybody can't teleport here real player."); } } @@ -266,7 +265,7 @@ private static boolean checkTpHereWhitelist(String name) { } private static void tp(String target, String commandSourcePlayerName) throws CommandSyntaxException { - Commands commands = server.getCommands(); - commands.getDispatcher().execute(commands.getDispatcher().parse("tp " + target + " " + commandSourcePlayerName, server.createCommandSourceStack())); + Commands commands = MINECRAFT_SERVER.getCommands(); + commands.getDispatcher().execute(commands.getDispatcher().parse("tp " + target + " " + commandSourcePlayerName, MINECRAFT_SERVER.createCommandSourceStack())); } } \ No newline at end of file diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/TpLimitCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/TpLimitCommand.java index af9234d..29011ba 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/TpLimitCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/TpLimitCommand.java @@ -15,12 +15,7 @@ public class TpLimitCommand { - private TpLimitCommand() { - - } - public static void registerCommand(CommandDispatcher dispatcher) { - LiteralArgumentBuilder argument = Commands.literal("tpmanager") .requires((player) -> carpet.utils.CommandHelper.canUseCommand(player, enableTpmanagerCommand)) diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java b/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java index 7232e4c..f0a3d70 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/events/fixExperienceBug/FixExperienceBug.java @@ -20,13 +20,13 @@ public void afterChangeLevel(ServerPlayer player, ServerLevel origin, ServerLeve } } //?} else { -//public class FixExperienceBug implements ServerEntityWorldChangeEvents.AfterPlayerChange { -// @Override -// public void afterChangeWorld(ServerPlayer player, ServerLevel origin, ServerLevel destination) { -// if (OptCarpetSettings.fixXpLevelBug) { -// // refresh player's experience bar -// player.giveExperiencePoints(0); -// } -// } -//} -//?} +/*public class FixExperienceBug implements ServerEntityWorldChangeEvents.AfterPlayerChange { + @Override + public void afterChangeWorld(ServerPlayer player, ServerLevel origin, ServerLevel destination) { + if (OptCarpetSettings.fixXpLevelBug) { + // refresh player's experience bar + player.giveExperiencePoints(0); + } + } +} +*///?} diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java b/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java index b663725..29911ce 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java @@ -9,7 +9,7 @@ private LoggerRegister() { public static boolean __disk = false; - public static boolean __cceSuppressionCrash = false; + // TODO 26.1 Remove CCE Supression Crash public static boolean __blockUpdate = false; diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disallowRedstoneWireConnectsToOpenTrapdoor/RedstoneWireBlock_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disallowRedstoneWireConnectsToOpenTrapdoor/RedstoneWireBlock_Mixin.java deleted file mode 100644 index 740ba06..0000000 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/disallowRedstoneWireConnectsToOpenTrapdoor/RedstoneWireBlock_Mixin.java +++ /dev/null @@ -1,25 +0,0 @@ -package io.github.optijava.opt_carpet_addition.mixins.rule.disallowRedstoneWireConnectsToOpenTrapdoor; - - import net.minecraft.world.level.block.Block; - import net.minecraft.world.level.block.RedStoneWireBlock; - import net.minecraft.world.level.block.state.BlockState; - import org.spongepowered.asm.mixin.Mixin; - import org.spongepowered.asm.mixin.injection.At; - import org.spongepowered.asm.mixin.injection.Redirect; - - import io.github.optijava.opt_carpet_addition.OptCarpetSettings; - - @Mixin(value = RedStoneWireBlock.class,priority = 2000) - public class RedstoneWireBlock_Mixin { - @Redirect( - method = "getConnectingSide(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;Z)Lnet/minecraft/world/level/block/state/properties/RedstoneSide;", - at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;getBlock()Lnet/minecraft/world/level/block/Block;") - ) - private Block redirectGetBlock(BlockState instance) { - if (OptCarpetSettings.disallowRedstoneWireConnectsToOpenTrapdoor) { - return (RedStoneWireBlock) (Object) this; - } else { - return instance.getBlock(); - } - } - } diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayer_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayer_Mixin.java index 3c10640..e434db5 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayer_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/removeAllCurseOfBindingArmorWhenPlayerDeadInWall/ServerPlayer_Mixin.java @@ -1,33 +1,139 @@ -//package io.github.optijava.opt_carpet_addition.mixins.rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall; -// -//import io.github.optijava.opt_carpet_addition.OptCarpetSettings; -//import net.minecraft.server.level.ServerPlayer; -//import net.minecraft.world.damagesource.DamageSource; -//import net.minecraft.world.item.ItemStack; -//import net.minecraft.world.item.enchantment.EnchantmentEffectComponents; -//import net.minecraft.world.item.enchantment.EnchantmentHelper; -//import net.minecraft.world.level.GameRules; -//import org.spongepowered.asm.mixin.Mixin; -//import org.spongepowered.asm.mixin.injection.At; -//import org.spongepowered.asm.mixin.injection.Inject; -//import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -// -//import java.util.Objects; -// -//@Mixin(ServerPlayer.class) -//public class ServerPlayer_Mixin { -// @Inject( -// method = "die", -// at = @At("HEAD") -// ) -// public void injectOnDeath(DamageSource source, CallbackInfo ci) { -// ServerPlayer player = (ServerPlayer) (Object) this; -// if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && player.serverLevel().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && Objects.equals(source.getMsgId(), "inWall")) { -// for (ItemStack armor : player.getInventory().equipment) { -// if (EnchantmentHelper.has(armor, EnchantmentEffectComponents.PREVENT_EQUIPMENT_DROP)) { -// armor.setCount(0); -// } -// } -// } -// } -//} +package io.github.optijava.opt_carpet_addition.mixins.rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall; + +// TODO migrate to 26.1 !!!test in client!!! + +//? if >= 26.1 { +import io.github.optijava.opt_carpet_addition.OptCarpetSettings; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.EnchantmentEffectComponents; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.level.gamerules.GameRules; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; +import java.util.Objects; + +@Mixin(ServerPlayer.class) +public class ServerPlayer_Mixin { + @Inject( + method = "die", + at = @At("HEAD") + ) + public void injectOnDeath(DamageSource source, CallbackInfo ci) { + ServerPlayer player = (ServerPlayer) (Object) this; + if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && player.level().getGameRules().get(GameRules.KEEP_INVENTORY) && Objects.equals(source.getMsgId(), "inWall")) { + final List list = List.of(player.getInventory().equipment.get(EquipmentSlot.CHEST), player.getInventory().equipment.get(EquipmentSlot.FEET), player.getInventory().equipment.get(EquipmentSlot.LEGS), player.getInventory().equipment.get(EquipmentSlot.HEAD)); + for (ItemStack armor : list) { + if (EnchantmentHelper.has(armor, EnchantmentEffectComponents.PREVENT_EQUIPMENT_DROP)) { + armor.setCount(0); + } + } + } + } +} +//?} else if >= 1.21.11 { +/*import io.github.optijava.opt_carpet_addition.OptCarpetSettings; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.item.ItemStack; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.level.gamerules.GameRules; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; +import java.util.Objects; + +@Mixin(ServerPlayer.class) +public class ServerPlayer_Mixin { + + @Inject( + method = "die", + at = @At("HEAD") + ) + public void injectOnDeath(DamageSource source, CallbackInfo ci) { + if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && ((ServerPlayer) (Object)this).level().getGameRules().get(GameRules.KEEP_INVENTORY) && Objects.equals(source.getMsgId(), "inWall")) { + final List list = List.of(((ServerPlayer)(Object)this).getInventory().equipment.get(EquipmentSlot.CHEST), ((ServerPlayer) (Object)this).getInventory().equipment.get(EquipmentSlot.FEET), ((ServerPlayer) (Object)this).getInventory().equipment.get(EquipmentSlot.LEGS), ((ServerPlayer) (Object)this).getInventory().equipment.get(EquipmentSlot.HEAD)); + for (ItemStack armor : list) { + if (EnchantmentHelper.has(armor, net.minecraft.world.item.enchantment.EnchantmentEffectComponents.PREVENT_EQUIPMENT_DROP)) { + armor.setCount(0); + } + } + } + } +} +*///?} else if >= 1.21.5 { +/*import io.github.optijava.opt_carpet_addition.OptCarpetSettings; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.item.ItemStack; +import net.minecraft.server.level.ServerPlayer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; +import java.util.Objects; + +@Mixin(ServerPlayer.class) +public class ServerPlayer_Mixin { + + @Inject( + method = "die", + at = @At("HEAD") + ) + public void injectOnDeath(DamageSource source, CallbackInfo ci) { + if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && Objects.equals(source.getMsgId(), "inWall")) { + final List list = List.of(((ServerPlayer)(Object)this).getInventory().equipment.get(EquipmentSlot.CHEST), ((ServerPlayer) (Object)this).getInventory().equipment.get(EquipmentSlot.FEET), ((ServerPlayer) (Object)this).getInventory().equipment.get(EquipmentSlot.LEGS), ((ServerPlayer) (Object)this).getInventory().equipment.get(EquipmentSlot.HEAD)); + for (ItemStack armor : list) { + if (EnchantmentHelper.has(armor, net.minecraft.world.item.enchantment.EnchantmentEffectComponents.PREVENT_EQUIPMENT_DROP)) { + armor.setCount(0); + } + } + } + } +} +*///?} else { + +/*import io.github.optijava.opt_carpet_addition.OptCarpetSettings; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.item.ItemStack; +import net.minecraft.server.level.ServerPlayer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; +import java.util.Objects; + +@Mixin(ServerPlayer.class) +public class ServerPlayer_Mixin { + + @Inject( + method = "die", + at = @At("HEAD") + ) + public void injectOnDeath(DamageSource source, CallbackInfo ci) { + if (OptCarpetSettings.removeAllCurseOfBindingArmorWhenPlayerDeadInWall && Objects.equals(source.getMsgId(), "inWall")) { + for (ItemStack armor : ((ServerPlayer) (Object) this).getArmorSlots()) { + if (EnchantmentHelper.has(armor, net.minecraft.world.item.enchantment.EnchantmentEffectComponents.PREVENT_EQUIPMENT_DROP)) { + armor.setCount(0); + } + } + } + } +} +*///?} diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java b/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java index 131ca61..3added8 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/utils/McUtils.java @@ -5,13 +5,13 @@ import net.minecraft.server.MinecraftServer; public class McUtils { - private static final MinecraftServer server = CarpetServer.minecraft_server; + public static final MinecraftServer MINECRAFT_SERVER = CarpetServer.minecraft_server; public static boolean isOp(GameProfile profile) { //? if < 1.21.10 { - /*return server.getPlayerList().isOp(profile); + /*return MINECRAFT_SERVER.getPlayerList().isOp(profile); *///?} else { - return server.getPlayerList().isOp(server.getPlayerList().getPlayer(profile.id()).nameAndId()); + return MINECRAFT_SERVER.getPlayerList().isOp(MINECRAFT_SERVER.getPlayerList().getPlayer(profile.id()).nameAndId()); //?} } } diff --git a/src/main/resources/assets/opt-carpet-addition/lang/zh_cn.json b/src/main/resources/assets/opt-carpet-addition/lang/zh_cn.json index ee47e98..fc44d84 100644 --- a/src/main/resources/assets/opt-carpet-addition/lang/zh_cn.json +++ b/src/main/resources/assets/opt-carpet-addition/lang/zh_cn.json @@ -29,8 +29,6 @@ "carpet.rule.disabledNetherPortalSpawn.desc": "禁用通过下界传送门生成僵尸猪灵", "carpet.rule.disabledEntityTick.name": "禁用实体与方块实体刷新", "carpet.rule.disabledEntityTick.desc": "禁用所有实体和方块实体的 tick", - "carpet.rule.disabledUpdateSuppressionErrorStackTrace.name": "禁用更新抑制错误堆栈", - "carpet.rule.disabledUpdateSuppressionErrorStackTrace.desc": "禁用更新抑制时产生的错误堆栈", "carpet.rule.unescapeChatMessage.name": "解码聊天消息", "carpet.rule.unescapeChatMessage.desc": "解码聊天消息中的 Unicode 字符,例如 \\u4e2d -> 中", "carpet.rule.optimizePlayerConnect.name": "优化玩家连接", @@ -43,8 +41,6 @@ "carpet.rule.dropperCrashFix.desc": "修复投掷器崩溃问题", "carpet.rule.optimizeFakePlayerSpawn.name": "优化假人生成", "carpet.rule.optimizeFakePlayerSpawn.desc": "始终生成离线假人以减少延迟", - "carpet.rule.cceSuppressionCrashFix.name": "修复CCE抑制崩溃", - "carpet.rule.cceSuppressionCrashFix.desc": "修复因方块实体更新导致的 CCE 崩溃", "carpet.rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall.name": "死亡时移除所有绑定诅咒盔甲", "carpet.rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall.desc": "玩家死于墙内时移除所有带‘绑定诅咒’的盔甲(保留物品需开启 keepInventory)", "carpet.rule.customItemDiscardTime.name": "自定义物品消失时间", @@ -57,8 +53,6 @@ "carpet.rule.playerTpRateLimitTime.desc": "设置 `/player xxx tp` 命令的速率限制,默认每玩家每 2 秒允许 1 次请求", "carpet.rule.commandLoggerBroadcastToPlayer.name": "命令日志广播", "carpet.rule.commandLoggerBroadcastToPlayer.desc": "启用后命令日志将广播给指定玩家", - "carpet.rule.disallowRedstoneWireConnectsToOpenTrapdoor.name": "禁止红石线连接到打开的活板门", - "carpet.rule.disallowRedstoneWireConnectsToOpenTrapdoor.desc": "禁止红石线连接到打开的活板门(适用于 Minecraft 1.20 及以上版本)", "carpet.rule.allowSpectatorTpToAnyPlayer.name": "允许旁观者传送到任意玩家", "carpet.rule.allowSpectatorTpToAnyPlayer.desc": "允许旁观者使用传送命令传送到任意玩家", "carpet.rule.enableLoggerCommand.name": "启用命令日志记录", diff --git a/src/main/resources/opt-carpet-addition.mixins.json b/src/main/resources/opt-carpet-addition.mixins.json index b366b58..0ee05c3 100644 --- a/src/main/resources/opt-carpet-addition.mixins.json +++ b/src/main/resources/opt-carpet-addition.mixins.json @@ -12,7 +12,6 @@ "rule.disabledEntityTick.ServerWorld_Mixin", "rule.disabledLayEggs.ChickenEntity_Mixin", "rule.disabledNetherPortalSpawn.NetherPortalBlock_Mixin", - "rule.disallowRedstoneWireConnectsToOpenTrapdoor.RedstoneWireBlock_Mixin", "rule.optimizeFakePlayerSpawn.EntityPlayerMPFake_Mixin", "rule.optimizeFakePlayerSpawn.PlayerCommand_Mixin", "rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall.ServerPlayer_Mixin", diff --git a/versions/1.21.11/opt-carpet-addition.accesswidener b/versions/1.21.11/opt-carpet-addition.accesswidener index ee524a7..62962b4 100644 --- a/versions/1.21.11/opt-carpet-addition.accesswidener +++ b/versions/1.21.11/opt-carpet-addition.accesswidener @@ -1,3 +1,5 @@ accessWidener v2 named accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal + +accessible field net/minecraft/world/entity/player/Inventory equipment Lnet/minecraft/world/entity/EntityEquipment; diff --git a/versions/1.21.5/opt-carpet-addition.accesswidener b/versions/1.21.5/opt-carpet-addition.accesswidener index ee524a7..62962b4 100644 --- a/versions/1.21.5/opt-carpet-addition.accesswidener +++ b/versions/1.21.5/opt-carpet-addition.accesswidener @@ -1,3 +1,5 @@ accessWidener v2 named accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal + +accessible field net/minecraft/world/entity/player/Inventory equipment Lnet/minecraft/world/entity/EntityEquipment; diff --git a/versions/1.21/opt-carpet-addition.accesswidener b/versions/1.21/opt-carpet-addition.accesswidener index 2ea6e4d..ee524a7 100644 --- a/versions/1.21/opt-carpet-addition.accesswidener +++ b/versions/1.21/opt-carpet-addition.accesswidener @@ -1,3 +1,3 @@ accessWidener v2 named accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal -accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal \ No newline at end of file +accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal diff --git a/versions/26.1/opt-carpet-addition.accesswidener b/versions/26.1/opt-carpet-addition.accesswidener index 361b3fd..4926459 100644 --- a/versions/26.1/opt-carpet-addition.accesswidener +++ b/versions/26.1/opt-carpet-addition.accesswidener @@ -1,3 +1,5 @@ accessWidener v2 official accessible class net/minecraft/world/entity/monster/EnderMan$EndermanTakeBlockGoal accessible class net/minecraft/world/entity/monster/EnderMan$EndermanLeaveBlockGoal + +accessible field net/minecraft/world/entity/player/Inventory equipment Lnet/minecraft/world/entity/EntityEquipment; From 41b12d0cf9234a4c46c716fcddee1ccd430a990c Mon Sep 17 00:00:00 2001 From: antideath Date: Fri, 1 May 2026 19:51:19 +0800 Subject: [PATCH 09/10] fix --- gradle.properties | 2 +- .../opt_carpet_addition/commands/ListAdvanceCommand.java | 5 ++--- .../opt_carpet_addition/commands/PlayerTpCommand.java | 1 - .../optijava/opt_carpet_addition/logger/LoggerRegister.java | 6 ------ .../optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java | 4 ++-- .../rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java | 4 ++-- src/main/resources/fabric.mod.json | 1 - 7 files changed, 7 insertions(+), 16 deletions(-) diff --git a/gradle.properties b/gradle.properties index fed7c59..b34ae02 100755 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ systemProp.http.socketTimeout=60000 systemProp.https.socketTimeout=60000 # Fabric Configurations -loader_version=0.17.3 +loader_version=0.19.2 loader_requirement_version=>=0.15 # Mod Metadata diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java index a77024e..5f3ba32 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/ListAdvanceCommand.java @@ -25,12 +25,11 @@ private static int listAdvance(CommandContext context) { StringBuilder sb = new StringBuilder(); sb.append("\n"); minecraftServer.getPlayerList().getPlayers().forEach(s -> { - //? if >= 1.21.10 { + //? if >= 1.21.11 { sb.append(s.getName().getString()).append(" ").append(s.gameMode().getName()).append(" ").append(s.connection.latency()).append("ms ").append(s.getIpAddress()).append(" ").append(s.getGameProfile().id().toString()).append("\n"); - //?} else if >= 1.21.5 { + //?} else { /*sb.append(s.getName().getString()).append(" ").append(s.gameMode).append(" ").append(s.connection.latency()).append("ms ").append(s.getIpAddress()).append(" ").append(s.getGameProfile().getId().toString()).append("\n"); *///?} - // TODO: 加回来1.21版本 }); Messenger.m(context.getSource(), sb.toString()); } catch (Exception e) { diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java b/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java index daf027a..1fdd1d8 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/commands/PlayerTpCommand.java @@ -110,7 +110,6 @@ private static int teleport(CommandContext context) { } } else { - // TODO: "true"改为OCS.TRUE switch (OptCarpetSettings.allowTpToRealPlayer) { case OptCarpetSettings.TRUE -> tp(commandSourcePlayerName, target); case "ops" -> { diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java b/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java index 29911ce..931af90 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/logger/LoggerRegister.java @@ -4,13 +4,7 @@ import io.github.optijava.opt_carpet_addition.logger.disk.DiskHUDLogger; public class LoggerRegister { - private LoggerRegister() { - } - public static boolean __disk = false; - - // TODO 26.1 Remove CCE Supression Crash - public static boolean __blockUpdate = false; public static void registry() { diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java index d0f12f6..96ca673 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/EntityPlayerMPFake_Mixin.java @@ -1,6 +1,6 @@ +package io.github.optijava.opt_carpet_addition.mixins.rule.optimizeFakePlayerSpawn; //? if < 1.21.10 { -/*package io.github.optijava.opt_carpet_addition.mixins.rule.optimizeFakePlayerSpawn; - +/* import carpet.patches.EntityPlayerMPFake; import com.mojang.authlib.GameProfile; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java index f9444e8..7505d69 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/mixins/rule/optimizeFakePlayerSpawn/PlayerCommand_Mixin.java @@ -1,6 +1,6 @@ +package io.github.optijava.opt_carpet_addition.mixins.rule.optimizeFakePlayerSpawn; //? if < 1.21.10 { -/*package io.github.optijava.opt_carpet_addition.mixins.rule.optimizeFakePlayerSpawn; - +/* import carpet.commands.PlayerCommand; import com.mojang.authlib.GameProfile; import io.github.optijava.opt_carpet_addition.OptCarpetSettings; diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 5a3deb3..df941da 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -26,7 +26,6 @@ "depends": { "fabricloader": ">=0.19.2", "minecraft": "${minecraft_requirement_version}", - "fabric": "*", "carpet": "*" }, "suggests": { From 5a894fb978172bf5932dd9033a80e9575d985672 Mon Sep 17 00:00:00 2001 From: antideath Date: Sat, 2 May 2026 15:54:34 +0800 Subject: [PATCH 10/10] fix --- .../OptCarpetAddition.java | 1 + .../OptCarpetSettings.java | 6 -- .../opt-carpet-addition/lang/en_us.json | 67 +++++++++++++++++++ .../resources/opt-carpet-addition.mixins.json | 3 +- 4 files changed, 69 insertions(+), 8 deletions(-) create mode 100644 src/main/resources/assets/opt-carpet-addition/lang/en_us.json diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java index 67750b1..237a632 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java @@ -153,6 +153,7 @@ public void registerLoggers() { } @Override + //TODO english translation(res/asssets/opt/lang/en_us.json) public Map canHasTranslations(String lang) { //add rule translator return RuleTranslator.getTranslationFromResourcePath(lang); diff --git a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java index 7955632..31d69e1 100644 --- a/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java +++ b/src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java @@ -138,12 +138,6 @@ public class OptCarpetSettings { ) public static int customItemDiscardTime = -1; - @Rule( - categories = {RuleCategory.FEATURE,OCA} - ) - public static boolean disallowRedstoneWireConnectsToOpenTrapdoor = false; - - @Rule( categories = {RuleCategory.FEATURE, RuleCategory.OPTIMIZATION,OCA} ) diff --git a/src/main/resources/assets/opt-carpet-addition/lang/en_us.json b/src/main/resources/assets/opt-carpet-addition/lang/en_us.json new file mode 100644 index 0000000..fc44d84 --- /dev/null +++ b/src/main/resources/assets/opt-carpet-addition/lang/en_us.json @@ -0,0 +1,67 @@ +{ + "carpet.rule.commandTpToFakePlayer.name": "传送到假人命令", + "carpet.rule.commandTpToFakePlayer.desc": "启用命令 [/player xxx tp] 将玩家传送到假人", + "carpet.rule.allowTpToRealPlayer.name": "传送到真实玩家命令", + "carpet.rule.allowTpToRealPlayer.desc": "启用命令 [/player xxx tp] 将玩家传送到真实玩家", + "carpet.rule.commandTpHereFakePlayer.name": "传送假人到自己命令", + "carpet.rule.commandTpHereFakePlayer.desc": "启用命令 [/player xxx tp] 将假人传送到自己", + "carpet.rule.allowTpHereRealPlayer.name": "传送真实玩家到自己命令", + "carpet.rule.allowTpHereRealPlayer.desc": "启用命令 [/player xxx tp] 将真实玩家传送到自己", + "carpet.rule.forceFakePlayerGameMode.name": "强制假人游戏模式", + "carpet.rule.forceFakePlayerGameMode.desc": "强制设置假人的游戏模式(生存/创造/冒险/关闭)", + "carpet.rule.fixXpLevelBug.name": "刷新经验等级漏洞修复", + "carpet.rule.fixXpLevelBug.desc": "当玩家切换世界时刷新经验等级", + "carpet.rule.enableTpPrefixBlacklist.name": "启用传送前缀黑名单", + "carpet.rule.enableTpPrefixBlacklist.desc": "启用传送命令前缀黑名单", + "carpet.rule.enableTpPrefixWhitelist.name": "启用传送前缀白名单", + "carpet.rule.enableTpPrefixWhitelist.desc": "启用传送命令前缀白名单", + "carpet.rule.enableTpHerePrefixBlacklist.name": "启用传送到自己前缀黑名单", + "carpet.rule.enableTpHerePrefixBlacklist.desc": "启用传送到自己命令前缀黑名单", + "carpet.rule.enableTpHerePrefixWhitelist.name": "启用传送到自己前缀白名单", + "carpet.rule.enableTpHerePrefixWhitelist.desc": "启用传送到自己命令前缀白名单", + "carpet.rule.disabledLayEggs.name": "禁用鸡产蛋", + "carpet.rule.disabledLayEggs.desc": "禁用鸡下蛋", + "carpet.rule.disabledEnderManPickupGoal.name": "禁用末影人拾取方块目标", + "carpet.rule.disabledEnderManPickupGoal.desc": "禁用末影人拾取方块的目标行为", + "carpet.rule.disabledEnderManPlaceBlockGoal.name": "禁用末影人放置方块目标", + "carpet.rule.disabledEnderManPlaceBlockGoal.desc": "禁用末影人放置方块的目标行为", + "carpet.rule.disabledNetherPortalSpawn.name": "禁用下界传送门生成僵尸猪灵", + "carpet.rule.disabledNetherPortalSpawn.desc": "禁用通过下界传送门生成僵尸猪灵", + "carpet.rule.disabledEntityTick.name": "禁用实体与方块实体刷新", + "carpet.rule.disabledEntityTick.desc": "禁用所有实体和方块实体的 tick", + "carpet.rule.unescapeChatMessage.name": "解码聊天消息", + "carpet.rule.unescapeChatMessage.desc": "解码聊天消息中的 Unicode 字符,例如 \\u4e2d -> 中", + "carpet.rule.optimizePlayerConnect.name": "优化玩家连接", + "carpet.rule.optimizePlayerConnect.desc": "在新线程处理玩家连接以减少延迟", + "carpet.rule.optimizeTeleport.name": "优化玩家传送", + "carpet.rule.optimizeTeleport.desc": "在新线程处理玩家传送以减少延迟", + "carpet.rule.commandLogger.name": "命令日志记录器", + "carpet.rule.commandLogger.desc": "打印玩家提交的命令信息日志", + "carpet.rule.dropperCrashFix.name": "投掷器崩溃修复", + "carpet.rule.dropperCrashFix.desc": "修复投掷器崩溃问题", + "carpet.rule.optimizeFakePlayerSpawn.name": "优化假人生成", + "carpet.rule.optimizeFakePlayerSpawn.desc": "始终生成离线假人以减少延迟", + "carpet.rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall.name": "死亡时移除所有绑定诅咒盔甲", + "carpet.rule.removeAllCurseOfBindingArmorWhenPlayerDeadInWall.desc": "玩家死于墙内时移除所有带‘绑定诅咒’的盔甲(保留物品需开启 keepInventory)", + "carpet.rule.customItemDiscardTime.name": "自定义物品消失时间", + "carpet.rule.customItemDiscardTime.desc": "修改物品消失时间,默认值 -1(单位:tick)", + "carpet.rule.allowBlockUpdateLogger.name": "允许方块更新记录器", + "carpet.rule.allowBlockUpdateLogger.desc": "不推荐启用此规则,否则可能影响性能。启用后所有人都无法使用方块更新记录器", + "carpet.rule.removeBats.name": "移除蝙蝠", + "carpet.rule.removeBats.desc": "禁用蝙蝠生成", + "carpet.rule.playerTpRateLimitTime.name": "传送命令速率限制", + "carpet.rule.playerTpRateLimitTime.desc": "设置 `/player xxx tp` 命令的速率限制,默认每玩家每 2 秒允许 1 次请求", + "carpet.rule.commandLoggerBroadcastToPlayer.name": "命令日志广播", + "carpet.rule.commandLoggerBroadcastToPlayer.desc": "启用后命令日志将广播给指定玩家", + "carpet.rule.allowSpectatorTpToAnyPlayer.name": "允许旁观者传送到任意玩家", + "carpet.rule.allowSpectatorTpToAnyPlayer.desc": "允许旁观者使用传送命令传送到任意玩家", + "carpet.rule.enableLoggerCommand.name": "启用命令日志记录", + "carpet.rule.enableLoggerCommand.desc": "启用命令日志记录功能", + "carpet.rule.enableCrashCommand.name": "启用崩溃命令", + "carpet.rule.enableCrashCommand.desc": "启用可以触发崩溃的命令", + "carpet.rule.enableListAdvanceCommand.name": "启用高级列表命令", + "carpet.rule.enableListAdvanceCommand.desc": "启用高级列表功能命令", + "carpet.rule.enableTpmanagerCommand.name": "启用传送管理命令", + "carpet.rule.enableTpmanagerCommand.desc": "启用传送管理相关命令" +} + diff --git a/src/main/resources/opt-carpet-addition.mixins.json b/src/main/resources/opt-carpet-addition.mixins.json index 0ee05c3..5b37dce 100644 --- a/src/main/resources/opt-carpet-addition.mixins.json +++ b/src/main/resources/opt-carpet-addition.mixins.json @@ -1,6 +1,5 @@ { - "required": true, - "minVersion": "0.8", + "required": false, "package": "io.github.optijava.opt_carpet_addition.mixins", "compatibilityLevel": "JAVA_21", "mixins": [