diff --git a/build.gradle b/build.gradle index 375390ffd..d710051f1 100755 --- a/build.gradle +++ b/build.gradle @@ -135,7 +135,6 @@ modrinth { syncBodyFrom = rootProject.file("README.md").text } tasks.modrinth.dependsOn(tasks.modrinthSyncBody) -tasks.modrinthSyncBody.dependsOn(tasks.replaceReadme) // test framework test { diff --git a/fuji-fabric.wiki b/fuji-fabric.wiki index 2a71d1b5a..55fdb3253 160000 --- a/fuji-fabric.wiki +++ b/fuji-fabric.wiki @@ -1 +1 @@ -Subproject commit 2a71d1b5a328554425bf54170b54d7e0b5124dce +Subproject commit 55fdb32535b953894522450d77dbfd6991c24d2f diff --git a/src/main/java/io/github/sakurawald/Fuji.java b/src/main/java/io/github/sakurawald/Fuji.java index 17b7a8584..af70f5b94 100644 --- a/src/main/java/io/github/sakurawald/Fuji.java +++ b/src/main/java/io/github/sakurawald/Fuji.java @@ -36,6 +36,10 @@ // TODO: remove fabric-api dep +// TODO: a program to generate module reference DAG + +// TODO: add loom module + public class Fuji implements ModInitializer { public static final String MOD_ID = "fuji"; public static final Logger LOGGER = LogUtil.createLogger(StringUtils.capitalize(MOD_ID)); diff --git a/src/main/java/io/github/sakurawald/common/event/PrePlayerDeathEvent.java b/src/main/java/io/github/sakurawald/common/event/PrePlayerDeathEvent.java deleted file mode 100644 index 00402ab2d..000000000 --- a/src/main/java/io/github/sakurawald/common/event/PrePlayerDeathEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package io.github.sakurawald.common.event; - -import net.fabricmc.fabric.api.event.Event; -import net.fabricmc.fabric.api.event.EventFactory; -import net.minecraft.entity.damage.DamageSource; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.ActionResult; - -public interface PrePlayerDeathEvent { - Event EVENT = EventFactory.createArrayBacked(PrePlayerDeathEvent.class, - (listeners) -> (player, damageSource) -> { - for (PrePlayerDeathEvent listener : listeners) { - ActionResult result = listener.interact(player, damageSource); - if (result != ActionResult.PASS) { - return result; - } - } - - return ActionResult.PASS; - }); - - ActionResult interact(ServerPlayerEntity player, DamageSource damageSource); -} diff --git a/src/main/java/io/github/sakurawald/common/GameProfileCacheEx.java b/src/main/java/io/github/sakurawald/common/structure/GameProfileCacheEx.java similarity index 100% rename from src/main/java/io/github/sakurawald/common/GameProfileCacheEx.java rename to src/main/java/io/github/sakurawald/common/structure/GameProfileCacheEx.java diff --git a/src/main/java/io/github/sakurawald/common/Position.java b/src/main/java/io/github/sakurawald/common/structure/Position.java similarity index 97% rename from src/main/java/io/github/sakurawald/common/Position.java rename to src/main/java/io/github/sakurawald/common/structure/Position.java index 81025b15b..469001e40 100644 --- a/src/main/java/io/github/sakurawald/common/Position.java +++ b/src/main/java/io/github/sakurawald/common/structure/Position.java @@ -1,4 +1,4 @@ -package io.github.sakurawald.common; +package io.github.sakurawald.common.structure; import io.github.sakurawald.Fuji; import io.github.sakurawald.util.MessageUtil; diff --git a/src/main/java/io/github/sakurawald/config/model/HomeModel.java b/src/main/java/io/github/sakurawald/config/model/HomeModel.java index 289988acf..a981791a9 100644 --- a/src/main/java/io/github/sakurawald/config/model/HomeModel.java +++ b/src/main/java/io/github/sakurawald/config/model/HomeModel.java @@ -1,6 +1,6 @@ package io.github.sakurawald.config.model; -import io.github.sakurawald.common.Position; +import io.github.sakurawald.common.structure.Position; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/io/github/sakurawald/module/initializer/back/BackModule.java b/src/main/java/io/github/sakurawald/module/initializer/back/BackModule.java index 550534dd0..3c1cb7979 100644 --- a/src/main/java/io/github/sakurawald/module/initializer/back/BackModule.java +++ b/src/main/java/io/github/sakurawald/module/initializer/back/BackModule.java @@ -3,10 +3,9 @@ import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.context.CommandContext; -import io.github.sakurawald.common.event.PrePlayerDeathEvent; import io.github.sakurawald.config.Configs; import io.github.sakurawald.module.initializer.ModuleInitializer; -import io.github.sakurawald.common.Position; +import io.github.sakurawald.common.structure.Position; import io.github.sakurawald.util.CommandUtil; import io.github.sakurawald.util.MessageUtil; import lombok.Getter; @@ -14,8 +13,6 @@ import net.minecraft.server.command.CommandManager; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.ActionResult; - import java.util.HashMap; @SuppressWarnings("LombokGetterMayBeUsed") @@ -24,14 +21,6 @@ public class BackModule extends ModuleInitializer { @Getter private final HashMap player2lastPos = new HashMap<>(); - @Override - public void onInitialize() { - PrePlayerDeathEvent.EVENT.register((player, damageSource) -> { - this.updatePlayer(player); - return ActionResult.PASS; - }); - } - @Override public void registerCommand(CommandDispatcher dispatcher, CommandRegistryAccess registryAccess, CommandManager.RegistrationEnvironment environment) { dispatcher.register(CommandManager.literal("back").executes(this::$back)); diff --git a/src/main/java/io/github/sakurawald/module/initializer/deathlog/DeathLogModule.java b/src/main/java/io/github/sakurawald/module/initializer/deathlog/DeathLogModule.java index 3525c8188..db51ba72f 100644 --- a/src/main/java/io/github/sakurawald/module/initializer/deathlog/DeathLogModule.java +++ b/src/main/java/io/github/sakurawald/module/initializer/deathlog/DeathLogModule.java @@ -6,7 +6,6 @@ import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.context.CommandContext; import io.github.sakurawald.Fuji; -import io.github.sakurawald.common.event.PrePlayerDeathEvent; import io.github.sakurawald.module.initializer.ModuleInitializer; import io.github.sakurawald.util.CommandUtil; import io.github.sakurawald.util.RegistryUtil; @@ -26,7 +25,6 @@ import net.minecraft.server.command.CommandManager; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.ActionResult; import net.minecraft.util.Uuids; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.Vec3d; @@ -65,13 +63,6 @@ public class DeathLogModule extends ModuleInitializer { @Override public void onInitialize() { STORAGE_PATH.toFile().mkdirs(); - - PrePlayerDeathEvent.EVENT.register((player, damageSource) -> { - // don't store empty inventory - if (player.getInventory().isEmpty()) return ActionResult.PASS; - this.store(player); - return ActionResult.PASS; - }); } @SuppressWarnings({"UnusedReturnValue", "unused"}) diff --git a/src/main/java/io/github/sakurawald/module/initializer/home/HomeModule.java b/src/main/java/io/github/sakurawald/module/initializer/home/HomeModule.java index 9509bc341..cedf64a5e 100644 --- a/src/main/java/io/github/sakurawald/module/initializer/home/HomeModule.java +++ b/src/main/java/io/github/sakurawald/module/initializer/home/HomeModule.java @@ -10,7 +10,7 @@ import io.github.sakurawald.config.handler.ObjectConfigHandler; import io.github.sakurawald.config.model.HomeModel; import io.github.sakurawald.module.initializer.ModuleInitializer; -import io.github.sakurawald.common.Position; +import io.github.sakurawald.common.structure.Position; import io.github.sakurawald.util.CommandUtil; import io.github.sakurawald.util.MessageUtil; import io.github.sakurawald.util.ScheduleUtil; diff --git a/src/main/java/io/github/sakurawald/module/initializer/resource_world/ResourceWorldManager.java b/src/main/java/io/github/sakurawald/module/initializer/resource_world/ResourceWorldManager.java index 14403605f..1c29ae1ae 100644 --- a/src/main/java/io/github/sakurawald/module/initializer/resource_world/ResourceWorldManager.java +++ b/src/main/java/io/github/sakurawald/module/initializer/resource_world/ResourceWorldManager.java @@ -2,7 +2,7 @@ import io.github.sakurawald.module.ModuleManager; import io.github.sakurawald.module.initializer.resource_world.interfaces.SimpleRegistryMixinInterface; -import io.github.sakurawald.common.Position; +import io.github.sakurawald.common.structure.Position; import io.github.sakurawald.module.initializer.teleport_warmup.TeleportTicket; import io.github.sakurawald.module.initializer.teleport_warmup.TeleportWarmupModule; import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet; diff --git a/src/main/java/io/github/sakurawald/module/initializer/teleport_warmup/TeleportTicket.java b/src/main/java/io/github/sakurawald/module/initializer/teleport_warmup/TeleportTicket.java index 5331fa508..fc09c43fd 100644 --- a/src/main/java/io/github/sakurawald/module/initializer/teleport_warmup/TeleportTicket.java +++ b/src/main/java/io/github/sakurawald/module/initializer/teleport_warmup/TeleportTicket.java @@ -1,6 +1,6 @@ package io.github.sakurawald.module.initializer.teleport_warmup; -import io.github.sakurawald.common.Position; +import io.github.sakurawald.common.structure.Position; import io.github.sakurawald.util.MessageUtil; import net.kyori.adventure.bossbar.BossBar; import net.minecraft.server.network.ServerPlayerEntity; diff --git a/src/main/java/io/github/sakurawald/module/mixin/afk/PlayerListMixin.java b/src/main/java/io/github/sakurawald/module/mixin/afk/PlayerListMixin.java index 6da23e9c3..06013ef3d 100644 --- a/src/main/java/io/github/sakurawald/module/mixin/afk/PlayerListMixin.java +++ b/src/main/java/io/github/sakurawald/module/mixin/afk/PlayerListMixin.java @@ -11,7 +11,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(PlayerManager.class) - public abstract class PlayerListMixin { @Inject(at = @At(value = "TAIL"), method = "onPlayerConnect") private void $onPlayerConnect(ClientConnection connection, ServerPlayerEntity serverPlayer, ConnectedClientData commonListenerCookie, CallbackInfo ci) { diff --git a/src/main/java/io/github/sakurawald/module/mixin/back/ServerPlayerMixin.java b/src/main/java/io/github/sakurawald/module/mixin/back/ServerPlayerMixin.java index b9f69f425..b8a0bd4ca 100644 --- a/src/main/java/io/github/sakurawald/module/mixin/back/ServerPlayerMixin.java +++ b/src/main/java/io/github/sakurawald/module/mixin/back/ServerPlayerMixin.java @@ -15,11 +15,18 @@ @Mixin(ServerPlayerEntity.class) public abstract class ServerPlayerMixin { + @Unique private static final BackModule module = ModuleManager.getInitializer(BackModule.class); @Unique private static final TeleportWarmupModule teleportWarmupModule = ModuleManager.getInitializer(TeleportWarmupModule.class); + @Inject(method = "onDeath", at = @At("HEAD")) + public void $onDeath(DamageSource damageSource, CallbackInfo ci) { + ServerPlayerEntity player = (ServerPlayerEntity) (Object) this; + module.updatePlayer(player); + } + @Inject(method = "teleport(Lnet/minecraft/server/world/ServerWorld;DDDFF)V", at = @At("HEAD")) public void $teleport(ServerWorld targetWorld, double x, double y, double z, float yaw, float pitch, CallbackInfo ci) { ServerPlayerEntity player = (ServerPlayerEntity) (Object) this; diff --git a/src/main/java/io/github/sakurawald/module/mixin/command_spy/CommandsMixin.java b/src/main/java/io/github/sakurawald/module/mixin/command_spy/CommandsMixin.java index 81536628e..ebf26634e 100644 --- a/src/main/java/io/github/sakurawald/module/mixin/command_spy/CommandsMixin.java +++ b/src/main/java/io/github/sakurawald/module/mixin/command_spy/CommandsMixin.java @@ -12,6 +12,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(CommandManager.class) + public class CommandsMixin { // If you issue "///abcdefg", then commandLine = "//abcdefg" diff --git a/src/main/java/io/github/sakurawald/module/mixin/deathlog/ServerPlayerMixin.java b/src/main/java/io/github/sakurawald/module/mixin/deathlog/ServerPlayerMixin.java new file mode 100644 index 000000000..c43ba26d3 --- /dev/null +++ b/src/main/java/io/github/sakurawald/module/mixin/deathlog/ServerPlayerMixin.java @@ -0,0 +1,26 @@ +package io.github.sakurawald.module.mixin.deathlog; + +import io.github.sakurawald.module.ModuleManager; +import io.github.sakurawald.module.initializer.deathlog.DeathLogModule; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.server.network.ServerPlayerEntity; +import org.spongepowered.asm.mixin.Mixin; +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.CallbackInfo; + +@Mixin(ServerPlayerEntity.class) +public abstract class ServerPlayerMixin { + @Unique + private static final DeathLogModule module = ModuleManager.getInitializer(DeathLogModule.class); + + @Inject(method = "onDeath", at = @At("HEAD")) + public void $onDeath(DamageSource damageSource, CallbackInfo ci) { + ServerPlayerEntity player = (ServerPlayerEntity) (Object) this; + // don't store empty inventory + if (player.getInventory().isEmpty()) return; + module.store(player); + } + +} diff --git a/src/main/java/io/github/sakurawald/module/mixin/teleport_warmup/ServerPlayerMixin.java b/src/main/java/io/github/sakurawald/module/mixin/teleport_warmup/ServerPlayerMixin.java index ef29b9cda..3d58e7183 100644 --- a/src/main/java/io/github/sakurawald/module/mixin/teleport_warmup/ServerPlayerMixin.java +++ b/src/main/java/io/github/sakurawald/module/mixin/teleport_warmup/ServerPlayerMixin.java @@ -2,7 +2,7 @@ import io.github.sakurawald.module.ModuleManager; import io.github.sakurawald.module.initializer.back.BackModule; -import io.github.sakurawald.common.Position; +import io.github.sakurawald.common.structure.Position; import io.github.sakurawald.module.initializer.teleport_warmup.ServerPlayerCombatStateAccessor; import io.github.sakurawald.module.initializer.teleport_warmup.TeleportTicket; import io.github.sakurawald.module.initializer.teleport_warmup.TeleportWarmupModule; diff --git a/src/main/resources/fuji.mixins.json b/src/main/resources/fuji.mixins.json index 22a6dfe30..b1f987e40 100755 --- a/src/main/resources/fuji.mixins.json +++ b/src/main/resources/fuji.mixins.json @@ -4,18 +4,12 @@ "compatibilityLevel": "JAVA_17", "plugin": "io.github.sakurawald.module.mixin.ModuleMixinConfigPlugin", "mixins": [ - "_internal.event.PlayerManagerMixin", - "_internal.event.ServerPlayerEntityMixin", - "_internal.event.ServerPlayNetworkHandlerMixin", - "_internal.server_instance.MinecraftServerMixin", + "_internal.low_level.GameProfileCacheMixin", + "_internal.low_level.MinecraftServerMixin", "afk.PlayerListMixin", "afk.ServerPlayerMixin", "back.ServerPlayerMixin", - "fake_player_manager.PlayerCommandMixin", - "fake_player_manager.PlayerListMixin", - "fake_player_manager.PlayerMixin", "better_info.InfoCommandMixin", - "biome_lookup_cache.NaturalSpawnerMixin", "bypass_chat_speed.ServerGamePacketListenerImplMixin", "bypass_max_player_limit.DedicatedPlayerManagerMixin", "bypass_move_speed.ServerGamePacketListenerImplMixin", @@ -24,8 +18,9 @@ "command_cooldown.CommandsMixin", "command_interactive.SignBlockMixin", "command_permission.CommandNodeAccessor", - "command_spy.CommandsMixin", "command_rewrite.ServerPlayNetworkHandlerMixin", + "command_spy.CommandsMixin", + "deathlog.ServerPlayerMixin", "enchantment.EnchantmentScreenHandlerMixin", "fake_player_manager.PlayerCommandMixin", "fake_player_manager.PlayerListMixin", @@ -47,21 +42,15 @@ "resource_world.MinecraftServerMixin", "resource_world.ServerWorldMixin", "resource_world.registry.DimensionOptionsMixin", - "resource_world.registry.DimensionOptionsRegistryHolderMixin", "resource_world.registry.SimpleRegistryMixin", - "seen.GameProfileCacheMixin", "seen.PlayerListMixin", "sit.InteractModifierMixin", "skin.PlayerListMixin", "skin.ServerLoginNetworkHandlerMixin", - "fix_player_list_cme.PlayerListMixin", - "fix_player_list_cme.ServerLevelMixin", "system_message.ComponentMixin", "teleport_warmup.ServerPlayerMixin", "top_chunks.ThreadedAnvilChunkStorageMixin", - "fix_whitelist.UserWhiteListMixin", - "works.HopperBlockEntityMixin", - "command_permission.CommandNodeAccessor" + "works.HopperBlockEntityMixin" ], "injectors": { "defaultRequire": 1