diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1987dd4..f3dae9b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,11 +16,11 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Setup JDK 21 + - name: Setup JDK 25 uses: actions/setup-java@v4 with: distribution: temurin - java-version: 21 + java-version: 25 - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 - name: Build artifacts diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ffda253..026713c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,11 +11,11 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Setup JDK 21 + - name: Setup JDK 25 uses: actions/setup-java@v4 with: distribution: temurin - java-version: 21 + java-version: 25 - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 - name: Build artifacts diff --git a/build.gradle b/build.gradle index 66cdd45..5da15eb 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id "fabric-loom" version "1.14-SNAPSHOT" + id "net.fabricmc.fabric-loom" version "1.15-SNAPSHOT" } version = project.mod_version @@ -12,22 +12,28 @@ base { repositories { mavenCentral() - maven{ + maven { url = "https://maven.nucleoid.xyz/" } + + maven { + name = "eclipseisoffline" + url = "https://maven.eclipseisoffline.xyz/releases" + } } dependencies { //to change the versions see the gradle.properties file minecraft("com.mojang:minecraft:${project.minecraft_version}") - mappings(loom.officialMojangMappings()) - modImplementation("net.fabricmc:fabric-loader:${project.loader_version}") + implementation("net.fabricmc:fabric-loader:${project.loader_version}") + + implementation("net.fabricmc.fabric-api:fabric-api:${project.fabric_version}") - modImplementation("net.fabricmc.fabric-api:fabric-api:${project.fabric_version}") + implementation(include("xyz.nucleoid:server-translations-api:${project.translation_version}")) + implementation(include("me.lucko:fabric-permissions-api:${project.permissions_api_version}")) + implementation(include("eu.pb4:common-protection-api:${project.protection_api_version}")) - modImplementation(include("xyz.nucleoid:server-translations-api:${project.translation_version}")) - modImplementation(include("me.lucko:fabric-permissions-api:${project.permissions_api_version}")) - modImplementation(include("eu.pb4:common-protection-api:${project.protection_api_version}")) + implementation(include("xyz.eclipseisoffline:filefixutils-fabric:${project.file_fix_utils_version}")) } processResources { @@ -38,7 +44,7 @@ processResources { } } -def targetJavaVersion = 21 +def targetJavaVersion = 25 tasks.withType(JavaCompile).configureEach { // ensure that the encoding is set to UTF-8, no matter what the system default is // this fixes some edge cases with special characters not displaying correctly diff --git a/gradle.properties b/gradle.properties index 950e2c1..bed89c5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,17 +3,18 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://modmuss50.me/fabric.html -minecraft_version=1.21.11 -loader_version=0.18.2 +minecraft_version=26.1 +loader_version=0.18.4 # Mod Properties -mod_version=1.2.2 +mod_version=1.2.3 maven_group=us.potatoboy archives_base_name=htm # Dependencies # check this on https://modmuss50.me/fabric.html -fabric_version=0.139.4+1.21.11 -translation_version=2.5.2+1.21.9-pre3 -permissions_api_version=0.6.1 -protection_api_version=1.0.0 +fabric_version=0.144.0+26.1 +translation_version=3.0.1+26.1 +permissions_api_version=0.7.0 +protection_api_version=2.0.0 +file_fix_utils_version=0.1.3-26.1 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 8bdaf60..d997cfc 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 23449a2..c61a118 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index adff685..0262dcb 100755 --- a/gradlew +++ b/gradlew @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/b631911858264c0b6e4d6603d677ff5218766cee/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. diff --git a/src/main/java/com/github/fabricservertools/htm/HTM.java b/src/main/java/com/github/fabricservertools/htm/HTM.java index 1192068..2cd5aa1 100644 --- a/src/main/java/com/github/fabricservertools/htm/HTM.java +++ b/src/main/java/com/github/fabricservertools/htm/HTM.java @@ -14,6 +14,7 @@ import org.apache.logging.log4j.Logger; public class HTM implements ModInitializer { + public static final String MOD_ID = "htm"; public static final Logger LOGGER = LogManager.getLogger("HTM"); @Override @@ -25,9 +26,13 @@ public void onInitialize() { HTMCommand.bootstrap(); CommandRegistrationCallback.EVENT.register(((dispatcher, buildContext, selection) -> HTMCommand.register(dispatcher))); - CommonProtection.register(Identifier.fromNamespaceAndPath("htm", "containers"), new InteractionManager()); + CommonProtection.register(getModdedIdentifier("containers"), new InteractionManager()); PlayerEventListener.init(); LevelEventListener.init(); } + + public static Identifier getModdedIdentifier(String path) { + return Identifier.fromNamespaceAndPath(MOD_ID, path); + } } diff --git a/src/main/java/com/github/fabricservertools/htm/HTMFileFixes.java b/src/main/java/com/github/fabricservertools/htm/HTMFileFixes.java new file mode 100644 index 0000000..eaac7f8 --- /dev/null +++ b/src/main/java/com/github/fabricservertools/htm/HTMFileFixes.java @@ -0,0 +1,15 @@ +package com.github.fabricservertools.htm; + +import net.minecraft.resources.Identifier; +import xyz.eclipseisoffline.filefixutils.api.FileFixHelpers; +import xyz.eclipseisoffline.filefixutils.api.FileFixInitializer; + +public class HTMFileFixes implements FileFixInitializer { + + @Override + public void onFileFixPopulate() { + // This needs to be in its own class, using as little other classes as possible, to prevent accidentally running static initialisers + // this early in the game loading process + FileFixHelpers.registerGlobalDataMoveFileFix("globalTrust", Identifier.fromNamespaceAndPath("htm", "global_trust_data")); + } +} diff --git a/src/main/java/com/github/fabricservertools/htm/Utility.java b/src/main/java/com/github/fabricservertools/htm/Utility.java index 09b1ea4..e38701e 100644 --- a/src/main/java/com/github/fabricservertools/htm/Utility.java +++ b/src/main/java/com/github/fabricservertools/htm/Utility.java @@ -1,12 +1,10 @@ package com.github.fabricservertools.htm; -import com.github.fabricservertools.htm.interactions.InteractionManager; import com.github.fabricservertools.htm.world.data.GlobalTrustData; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.server.MinecraftServer; import net.minecraft.server.players.NameAndId; -import net.minecraft.world.entity.player.Player; import java.util.UUID; public class Utility { @@ -22,16 +20,6 @@ public static Component getFormattedNameFromUUID(UUID uuid, MinecraftServer serv } public static GlobalTrustData getGlobalTrustData(MinecraftServer server) { - return server.overworld().getDataStorage().computeIfAbsent(GlobalTrustData.TYPE); - } - - public static void sendMessage(Player player, Component message) { - sendMessage(player, message, false); - } - - public static void sendMessage(Player player, Component message, boolean actionBar) { - if (!InteractionManager.noMessage.contains(player.getUUID())) { - player.displayClientMessage(message, actionBar); - } + return server.getDataStorage().computeIfAbsent(GlobalTrustData.TYPE); } } diff --git a/src/main/java/com/github/fabricservertools/htm/command/subcommands/TrustCommand.java b/src/main/java/com/github/fabricservertools/htm/command/subcommands/TrustCommand.java index 9ec4373..67035f2 100644 --- a/src/main/java/com/github/fabricservertools/htm/command/subcommands/TrustCommand.java +++ b/src/main/java/com/github/fabricservertools/htm/command/subcommands/TrustCommand.java @@ -49,7 +49,7 @@ private int trustList(CommandContext context) throws Command .map(uuid -> Utility.getNameFromUUID(uuid, context.getSource().getServer())) .collect(Collectors.joining(", ")); - player.displayClientMessage(HTMComponents.TRUSTED_GLOBALLY.apply(Component.literal(trustedList).withStyle(ChatFormatting.WHITE)), false); + player.sendSystemMessage(HTMComponents.TRUSTED_GLOBALLY.apply(Component.literal(trustedList).withStyle(ChatFormatting.WHITE))); return 0; } diff --git a/src/main/java/com/github/fabricservertools/htm/interactions/FlagAction.java b/src/main/java/com/github/fabricservertools/htm/interactions/FlagAction.java index b2282e2..ddf8984 100644 --- a/src/main/java/com/github/fabricservertools/htm/interactions/FlagAction.java +++ b/src/main/java/com/github/fabricservertools/htm/interactions/FlagAction.java @@ -39,21 +39,20 @@ public FlagAction(Optional> flagSet) { @Override public void execute(MinecraftServer server, ServerPlayer player, BlockPos pos, LockableObject object, HTMContainerLock lock) { if (!lock.isOwner(player)) { - player.displayClientMessage(HTMComponents.NOT_OWNER, false); + player.sendSystemMessage(HTMComponents.NOT_OWNER); return; } BlockState state = player.level().getBlockState(pos); if (flagSet.isEmpty()) { //flag info - player.displayClientMessage(HTMComponents.DIVIDER, false); + player.sendSystemMessage(HTMComponents.DIVIDER); lock.flags().forEach(state, (flag, value) -> { - player.displayClientMessage(HTMComponents.CONTAINER_FLAG.apply( + player.sendSystemMessage(HTMComponents.CONTAINER_FLAG.apply( flag.displayName(), - Component.literal(value.toString().toUpperCase()).withStyle(value ? ChatFormatting.GREEN : ChatFormatting.RED, ChatFormatting.BOLD)), - false); + Component.literal(value.toString().toUpperCase()).withStyle(value ? ChatFormatting.GREEN : ChatFormatting.RED, ChatFormatting.BOLD))); }); - player.displayClientMessage(HTMComponents.DIVIDER, false); + player.sendSystemMessage(HTMComponents.DIVIDER); } else { //flag set FlagType flagType = flagSet.get().getFirst(); @@ -70,7 +69,7 @@ public void execute(MinecraftServer server, ServerPlayer player, BlockPos pos, L feedback = HTMComponents.CONTAINER_FLAG_SET; feedbackValue = value; } - player.displayClientMessage(feedback.apply( + player.sendSystemMessage(feedback.apply( flagType.displayName(), Component.literal(String.valueOf(feedbackValue).toUpperCase()).withStyle(feedbackValue ? ChatFormatting.GREEN : ChatFormatting.RED, ChatFormatting.BOLD)), false); diff --git a/src/main/java/com/github/fabricservertools/htm/interactions/InfoAction.java b/src/main/java/com/github/fabricservertools/htm/interactions/InfoAction.java index e1d0ac9..8114aef 100644 --- a/src/main/java/com/github/fabricservertools/htm/interactions/InfoAction.java +++ b/src/main/java/com/github/fabricservertools/htm/interactions/InfoAction.java @@ -27,18 +27,18 @@ public void execute(MinecraftServer server, ServerPlayer player, BlockPos pos, L return; } - player.displayClientMessage(HTMComponents.DIVIDER, false); - player.displayClientMessage(HTMComponents.CONTAINER_LOCK_TYPE.apply(lock.lockData().displayName()), false); - player.displayClientMessage(HTMComponents.CONTAINER_OWNER.apply(Component.literal(owner.get().name()).withStyle(ChatFormatting.WHITE)), false); + player.sendSystemMessage(HTMComponents.DIVIDER); + player.sendSystemMessage(HTMComponents.CONTAINER_LOCK_TYPE.apply(lock.lockData().displayName())); + player.sendSystemMessage(HTMComponents.CONTAINER_OWNER.apply(Component.literal(owner.get().name()).withStyle(ChatFormatting.WHITE))); if (lock.isOwner(player)) { String trustedList = lock.trusted() .stream() .map(uuid -> Utility.getNameFromUUID(uuid, server)) .collect(Collectors.joining(", ")); - player.displayClientMessage(HTMComponents.CONTAINER_TRUSTED.apply(Component.literal(trustedList).withStyle(ChatFormatting.WHITE)), false); + player.sendSystemMessage(HTMComponents.CONTAINER_TRUSTED.apply(Component.literal(trustedList).withStyle(ChatFormatting.WHITE))); lock.lockData().onInfo(player, lock); } - player.displayClientMessage(HTMComponents.DIVIDER, false); + player.sendSystemMessage(HTMComponents.DIVIDER); } } diff --git a/src/main/java/com/github/fabricservertools/htm/interactions/InteractionManager.java b/src/main/java/com/github/fabricservertools/htm/interactions/InteractionManager.java index b0ee1c0..b001897 100644 --- a/src/main/java/com/github/fabricservertools/htm/interactions/InteractionManager.java +++ b/src/main/java/com/github/fabricservertools/htm/interactions/InteractionManager.java @@ -4,7 +4,6 @@ import com.github.fabricservertools.htm.HTMComponents; import com.github.fabricservertools.htm.api.LockInteraction; import com.github.fabricservertools.htm.api.LockableObject; -import com.mojang.authlib.GameProfile; import eu.pb4.common.protection.api.ProtectionProvider; import it.unimi.dsi.fastutil.objects.Object2ObjectMap; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; @@ -14,6 +13,7 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.players.NameAndId; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.ChestBlock; @@ -96,12 +96,12 @@ public static void execute(MinecraftServer server, ServerPlayer player, BlockPos if (action.requiresLock()) { containerLock.ifPresentOrElse( lock -> action.execute(server, player, pos, object, lock), - () -> player.displayClientMessage(HTMComponents.NOT_LOCKED, false)); + () -> player.sendSystemMessage(HTMComponents.NOT_LOCKED)); } else { //noinspection DataFlowIssue - if requiresLock is false then action should be able to accept null lock action.execute(server, player, pos, object, containerLock.orElse(null)); } - }, () -> player.displayClientMessage(HTMComponents.NOT_LOCKABLE, false)); + }, () -> player.sendSystemMessage(HTMComponents.NOT_LOCKABLE)); if (!persisting.contains(player.getUUID())) { pendingActions.remove(player); @@ -184,7 +184,7 @@ public boolean isProtected(Level world, BlockPos pos) { } @Override - public boolean canBreakBlock(Level world, BlockPos pos, GameProfile profile, @Nullable Player player) { + public boolean canBreakBlock(Level world, BlockPos pos, NameAndId profile, @Nullable Player player) { var lockable = InteractionManager.getLockable((ServerLevel) world, pos); return lockable.flatMap(LockableObject::getLock).map(lock -> lock.owner().equals(profile.id())).orElse(true); } diff --git a/src/main/java/com/github/fabricservertools/htm/interactions/RemoveAction.java b/src/main/java/com/github/fabricservertools/htm/interactions/RemoveAction.java index e776fc6..b0a1e0c 100644 --- a/src/main/java/com/github/fabricservertools/htm/interactions/RemoveAction.java +++ b/src/main/java/com/github/fabricservertools/htm/interactions/RemoveAction.java @@ -13,11 +13,11 @@ public class RemoveAction implements LockInteraction { @Override public void execute(MinecraftServer server, ServerPlayer player, BlockPos pos, LockableObject object, HTMContainerLock lock) { if (!lock.isOwner(player)) { - player.displayClientMessage(HTMComponents.NOT_OWNER, false); + player.sendSystemMessage(HTMComponents.NOT_OWNER); return; } object.setLock(null); - player.displayClientMessage(HTMComponents.CONTAINER_UNLOCKED, false); + player.sendSystemMessage(HTMComponents.CONTAINER_UNLOCKED); } } diff --git a/src/main/java/com/github/fabricservertools/htm/interactions/SetAction.java b/src/main/java/com/github/fabricservertools/htm/interactions/SetAction.java index 4bf7920..5f2772d 100644 --- a/src/main/java/com/github/fabricservertools/htm/interactions/SetAction.java +++ b/src/main/java/com/github/fabricservertools/htm/interactions/SetAction.java @@ -20,13 +20,13 @@ public SetAction(Lock setType) { @Override public void execute(MinecraftServer server, ServerPlayer player, BlockPos pos, LockableObject object, @Nullable HTMContainerLock lock) { if (lock != null && !lock.isOwner(player)) { - player.displayClientMessage(HTMComponents.NOT_OWNER, false); + player.sendSystemMessage(HTMComponents.NOT_OWNER); return; } HTMContainerLock newLock = lock != null ? lock.withData(setType) : new HTMContainerLock(setType, player); object.setLock(newLock); - player.displayClientMessage(HTMComponents.CONTAINER_SET.apply(setType.displayName()), false); + player.sendSystemMessage(HTMComponents.CONTAINER_SET.apply(setType.displayName())); } @Override diff --git a/src/main/java/com/github/fabricservertools/htm/interactions/TransferAction.java b/src/main/java/com/github/fabricservertools/htm/interactions/TransferAction.java index f83e498..805b42b 100644 --- a/src/main/java/com/github/fabricservertools/htm/interactions/TransferAction.java +++ b/src/main/java/com/github/fabricservertools/htm/interactions/TransferAction.java @@ -21,16 +21,16 @@ public TransferAction(NameAndId transferPlayer) { @Override public void execute(MinecraftServer server, ServerPlayer player, BlockPos pos, LockableObject object, HTMContainerLock lock) { if (!lock.isOwner(player)) { - player.displayClientMessage(HTMComponents.NOT_OWNER, false); + player.sendSystemMessage(HTMComponents.NOT_OWNER); return; } if (lock.owner().equals(transferPlayer.id())) { - player.displayClientMessage(HTMComponents.CANNOT_TRUST_SELF, false); + player.sendSystemMessage(HTMComponents.CANNOT_TRUST_SELF); return; } object.setLock(lock.transfer(transferPlayer.id())); - player.displayClientMessage(HTMComponents.CONTAINER_TRANSFER.apply(Component.literal(transferPlayer.name()).withStyle(ChatFormatting.WHITE)), false); + player.sendSystemMessage(HTMComponents.CONTAINER_TRANSFER.apply(Component.literal(transferPlayer.name()).withStyle(ChatFormatting.WHITE))); } } diff --git a/src/main/java/com/github/fabricservertools/htm/interactions/TrustAction.java b/src/main/java/com/github/fabricservertools/htm/interactions/TrustAction.java index c8a7032..2857cbf 100644 --- a/src/main/java/com/github/fabricservertools/htm/interactions/TrustAction.java +++ b/src/main/java/com/github/fabricservertools/htm/interactions/TrustAction.java @@ -25,27 +25,27 @@ public TrustAction(Collection trustPlayers, boolean untrust) { @Override public void execute(MinecraftServer server, ServerPlayer player, BlockPos pos, LockableObject object, HTMContainerLock lock) { if (!lock.isOwner(player)) { - player.displayClientMessage(HTMComponents.NOT_OWNER, false); + player.sendSystemMessage(HTMComponents.NOT_OWNER); return; } for (NameAndId trustPlayer : trustPlayers) { if (lock.owner().equals(trustPlayer.id())) { - player.displayClientMessage(HTMComponents.CANNOT_TRUST_SELF, false); + player.sendSystemMessage(HTMComponents.CANNOT_TRUST_SELF); continue; } Component playerName = Component.literal(trustPlayer.name()).withStyle(ChatFormatting.WHITE); if (untrust) { lock.withoutTrusted(trustPlayer.id()).ifPresentOrElse(newLock -> { - player.displayClientMessage(HTMComponents.UNTRUST.apply(playerName), false); + player.sendSystemMessage(HTMComponents.UNTRUST.apply(playerName)); object.setLock(newLock); - }, () -> player.displayClientMessage(HTMComponents.PLAYER_NOT_TRUSTED.apply(playerName), false)); + }, () -> player.sendSystemMessage(HTMComponents.PLAYER_NOT_TRUSTED.apply(playerName))); } else { lock.withTrusted(trustPlayer.id()).ifPresentOrElse(newLock -> { - player.displayClientMessage(HTMComponents.TRUST.apply(playerName), false); + player.sendSystemMessage(HTMComponents.TRUST.apply(playerName)); object.setLock(newLock); - }, () -> player.displayClientMessage(HTMComponents.ALREADY_TRUSTED.apply(playerName), false)); + }, () -> player.sendSystemMessage(HTMComponents.ALREADY_TRUSTED.apply(playerName))); } } } diff --git a/src/main/java/com/github/fabricservertools/htm/listeners/PlayerEventListener.java b/src/main/java/com/github/fabricservertools/htm/listeners/PlayerEventListener.java index fdec746..8129475 100644 --- a/src/main/java/com/github/fabricservertools/htm/listeners/PlayerEventListener.java +++ b/src/main/java/com/github/fabricservertools/htm/listeners/PlayerEventListener.java @@ -5,7 +5,6 @@ import com.github.fabricservertools.htm.config.HTMConfig; import com.github.fabricservertools.htm.lock.HTMContainerLock; import com.github.fabricservertools.htm.HTMComponents; -import com.github.fabricservertools.htm.Utility; import com.github.fabricservertools.htm.api.LockableObject; import com.github.fabricservertools.htm.events.PlayerPlaceBlockCallback; import com.github.fabricservertools.htm.interactions.InteractionManager; @@ -59,7 +58,7 @@ private static boolean onBeforeBreak(Level level, Player player, BlockPos pos, B return true; } - if (lock.get().isOwner(playerEntity) || (HTMConfig.get().canTrustedPlayersBreakChests() && lock.get().canOpen(playerEntity))) { + if ((HTMConfig.get().canTrustedPlayersBreakChests() && lock.get().canOpen(playerEntity)) || lock.get().isOwner(playerEntity)) { if (state.getBlock() instanceof ChestBlock) { Optional unlocked = InteractionManager.getUnlockedLockable((ServerLevel) level, pos, blockEntity); if (unlocked.isPresent()) { @@ -68,11 +67,11 @@ private static boolean onBeforeBreak(Level level, Player player, BlockPos pos, B } } - Utility.sendMessage(playerEntity, HTMComponents.CONTAINER_UNLOCKED); + playerEntity.sendSystemMessage(HTMComponents.CONTAINER_UNLOCKED); return true; } - Utility.sendMessage(playerEntity, HTMComponents.NOT_OWNER); + playerEntity.sendSystemMessage(HTMComponents.NOT_OWNER); return false; } @@ -99,7 +98,7 @@ private static InteractionResult onPlace(Player player, BlockPlaceContext contex } ((LockableObject) blockEntity).setLock(new HTMContainerLock(autoLockingType.get().create(serverPlayer), serverPlayer)); - Utility.sendMessage(player, HTMComponents.CONTAINER_SET.apply(autoLockingType.get().displayName())); + serverPlayer.sendSystemMessage(HTMComponents.CONTAINER_SET.apply(autoLockingType.get().displayName())); } } } catch (Exception e) { diff --git a/src/main/java/com/github/fabricservertools/htm/lock/HTMContainerLock.java b/src/main/java/com/github/fabricservertools/htm/lock/HTMContainerLock.java index 3f3230b..5c321df 100644 --- a/src/main/java/com/github/fabricservertools/htm/lock/HTMContainerLock.java +++ b/src/main/java/com/github/fabricservertools/htm/lock/HTMContainerLock.java @@ -10,6 +10,7 @@ import me.lucko.fabric.api.permissions.v0.Permissions; import net.minecraft.core.UUIDUtil; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.permissions.PermissionLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.level.block.state.BlockState; @@ -39,11 +40,11 @@ private static Codec> setOf(Codec> listCodec) { } public boolean canOpen(ServerPlayer player) { - if (isOwner(player) || lockData.canOpen(player, this)) { + if (lockData.canOpen(player, this) || isOwner(player)) { return true; } - player.displayClientMessage(HTMComponents.CONTAINER_LOCKED, true); + player.sendOverlayMessage(HTMComponents.CONTAINER_LOCKED); player.level().playSound(null, player.position().x(), player.position().y(), player.position().z(), SoundEvents.CHEST_LOCKED, SoundSource.BLOCKS, 1.0F, 1.0F); return false; } @@ -84,8 +85,8 @@ public HTMContainerLock withoutFlag(FlagType flag) { public boolean isOwner(ServerPlayer player) { if (!owner.equals(player.getUUID())) { - if (Permissions.check(player, "htm.admin", 2)) { - Utility.sendMessage(player, HTMComponents.CONTAINER_OVERRIDE.apply(Utility.getFormattedNameFromUUID(owner, player.level().getServer()))); + if (Permissions.check(player, "htm.admin", PermissionLevel.GAMEMASTERS)) { + player.sendSystemMessage(HTMComponents.CONTAINER_OVERRIDE.apply(Utility.getFormattedNameFromUUID(owner, player.level().getServer()))); return true; } return false; diff --git a/src/main/java/com/github/fabricservertools/htm/lock/type/KeyLock.java b/src/main/java/com/github/fabricservertools/htm/lock/type/KeyLock.java index a088e35..a638c98 100644 --- a/src/main/java/com/github/fabricservertools/htm/lock/type/KeyLock.java +++ b/src/main/java/com/github/fabricservertools/htm/lock/type/KeyLock.java @@ -48,7 +48,7 @@ public boolean canOpen(ServerPlayer player, HTMContainerLock lock) { @Override public void onInfo(ServerPlayer player, HTMContainerLock lock) { - player.displayClientMessage(HTMComponents.CONTAINER_KEY.apply(key.getDisplayName()), false); + player.sendSystemMessage(HTMComponents.CONTAINER_KEY.apply(key.getDisplayName())); } @Override @@ -58,7 +58,7 @@ public Type type() { public static KeyLock fromMainHandItem(ServerPlayer player) { ItemStack key = player.getMainHandItem().copy(); - player.displayClientMessage(HTMComponents.CONTAINER_KEY_SET.apply(key.getDisplayName()), false); + player.sendSystemMessage(HTMComponents.CONTAINER_KEY_SET.apply(key.getDisplayName())); return new KeyLock(key); } } diff --git a/src/main/java/com/github/fabricservertools/htm/world/data/GlobalTrustData.java b/src/main/java/com/github/fabricservertools/htm/world/data/GlobalTrustData.java index e99159d..282944a 100644 --- a/src/main/java/com/github/fabricservertools/htm/world/data/GlobalTrustData.java +++ b/src/main/java/com/github/fabricservertools/htm/world/data/GlobalTrustData.java @@ -1,5 +1,6 @@ package com.github.fabricservertools.htm.world.data; +import com.github.fabricservertools.htm.HTM; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.mojang.datafixers.util.Pair; @@ -8,6 +9,7 @@ import java.util.List; import java.util.UUID; import net.minecraft.core.UUIDUtil; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.saveddata.SavedData; import net.minecraft.world.level.saveddata.SavedDataType; @@ -25,7 +27,8 @@ public class GlobalTrustData extends SavedData { ).apply(instance, GlobalTrustData::new) ); - public static final SavedDataType TYPE = new SavedDataType<>("globalTrust", GlobalTrustData::new, CODEC, null); + public static final Identifier ID = HTM.getModdedIdentifier("global_trust_data"); + public static final SavedDataType TYPE = new SavedDataType<>(ID, GlobalTrustData::new, CODEC, null); private final Multimap globalTrust = HashMultimap.create(); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 078a581..5bceec4 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -15,6 +15,9 @@ "icon": "assets/htm/icon.png", "environment": "*", "entrypoints": { + "filefix": [ + "com.github.fabricservertools.htm.HTMFileFixes" + ], "main": [ "com.github.fabricservertools.htm.HTM" ] @@ -23,8 +26,9 @@ "htm.mixins.json" ], "depends": { - "fabricloader": ">=0.18.2", + "fabricloader": ">=0.18.4", "fabric-api": "*", - "minecraft": ">=1.21.11" + "minecraft": ">=26.1", + "filefixutils": "*" } } diff --git a/src/main/resources/htm.mixins.json b/src/main/resources/htm.mixins.json index 036672e..4649e72 100644 --- a/src/main/resources/htm.mixins.json +++ b/src/main/resources/htm.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "com.github.fabricservertools.htm.mixin", - "compatibilityLevel": "JAVA_21", + "compatibilityLevel": "JAVA_25", "mixins": [ "HopperBlockEntityMixin", "TransportItemsBetweenContainersMixin",