Как обнаружить смерть игрока и что ее убило - Fabric MC 1.20.4 ⇐ JAVA
-
Anonymous
Как обнаружить смерть игрока и что ее убило - Fabric MC 1.20.4
Я пробовал использовать примесь, но она вообще не запускается. Ниже приведен мой код.
import net.minecraft.entity.damage.DamageSource; импортировать net.minecraft.entity.player.PlayerEntity; импортировать net.spamta.pvpoverhaul.PvPOverhaul; импортировать org.spongepowered.asm.mixin.Mixin; импортировать org.spongepowered.asm.mixin.injection.At; импортировать org.spongepowered.asm.mixin.injection.Inject; импортировать org.spongepowered.asm.mixin.injection.callback.CallbackInfo; импортировать net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; импортировать net.minecraft.server.MinecraftServer; импортировать net.minecraft.server.network.ServerPlayerEntity; импортировать net.minecraft.text.Text; @Mixin(PlayerEntity.class) публичный класс GearKeeper { @Inject(method="onDeath", at=@At("TAIL")) частный недействительный умер (DamageSource dumpSource, информация CallbackInfo) { PvPOverhaul.LOGGER.info(damageSource.getName().toString()); PlayerEntity player = (PlayerEntity) (Объект) это; sendDeathMessageToAllPlayers (игрок); } Private void sendDeathMessageToAllPlayers (PlayerEntity player) { Сервер MinecraftServer = player.getServer(); если (сервер! = ноль) { server.getPlayerManager().getPlayerList().forEach(serverPlayer -> { serverPlayer.sendMessage(Text.literal(player.getName().toString() + "погиб!"), false); }); } } } Пытался определить, был ли игрок убит, и ожидал, что он скажет «Свинья-зверь» или что-то еще, убивающее меня в тот момент, но в итоге ничего не записалось.
Я пробовал использовать примесь, но она вообще не запускается. Ниже приведен мой код.
import net.minecraft.entity.damage.DamageSource; импортировать net.minecraft.entity.player.PlayerEntity; импортировать net.spamta.pvpoverhaul.PvPOverhaul; импортировать org.spongepowered.asm.mixin.Mixin; импортировать org.spongepowered.asm.mixin.injection.At; импортировать org.spongepowered.asm.mixin.injection.Inject; импортировать org.spongepowered.asm.mixin.injection.callback.CallbackInfo; импортировать net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; импортировать net.minecraft.server.MinecraftServer; импортировать net.minecraft.server.network.ServerPlayerEntity; импортировать net.minecraft.text.Text; @Mixin(PlayerEntity.class) публичный класс GearKeeper { @Inject(method="onDeath", at=@At("TAIL")) частный недействительный умер (DamageSource dumpSource, информация CallbackInfo) { PvPOverhaul.LOGGER.info(damageSource.getName().toString()); PlayerEntity player = (PlayerEntity) (Объект) это; sendDeathMessageToAllPlayers (игрок); } Private void sendDeathMessageToAllPlayers (PlayerEntity player) { Сервер MinecraftServer = player.getServer(); если (сервер! = ноль) { server.getPlayerManager().getPlayerList().forEach(serverPlayer -> { serverPlayer.sendMessage(Text.literal(player.getName().toString() + "погиб!"), false); }); } } } Пытался определить, был ли игрок убит, и ожидал, что он скажет «Свинья-зверь» или что-то еще, убивающее меня в тот момент, но в итоге ничего не записалось.
Мобильная версия