Хочу сделать что то на подобии куклы вуду

Версия Minecraft
1.18.2
API
Forge
5
1
Я делаю меджик мод на майнкрафт, и в нем я хочу сделать нечто похожее или являющееся куклой вуду. Суть такова: при нажатии пкм на предмет, игрок получит урон, при том, урон должен получить тот игрок, имя которого будет написано на наковальне при переименовании куклы(либо же другим способом, не знаю). Проблема заключается в том, что я вообще не представляю как это сделать.. памагите пж
 

tox1cozZ

aka Agravaine
8,456
598
2,893
Ловишь событие нанесения урона, ищешь куклу в инвентаре игрока, из нее достаешь имя другого игрока. По этому нику ищешь на сервере целевого игрока и наносишь ему тот же урон (есть в ивенте). Не забудь проведусмотреть, что это можно зациклить и двоим игрокам будет наноситься постоянно урон и игра крашнется, уйдя в рекурсию.
 
12
0
  1. Создайте новый предмет: Сначала вам нужно создать новый предмет (куклу вуду) в вашем моде. Вы можете использовать класс Item для этого. Убедитесь, что предмет имеет текстуру и любые другие свойства, которые вам нужны.
  2. Добавьте обработчик событий: Для обработки действия правой кнопкой мыши (ПКМ) на предмете вам нужно зарегистрировать обработчик событий, используя Forge API. В этом обработчике вы будете определять, какой игрок наносит урон.
  3. Получите имя куклы вуду: Когда игрок переименовывает куклу вуду на наковальне, вам нужно будет получить новое имя куклы. Вы можете использовать событие PlayerEvent.ItemCraftedEvent, чтобы обнаружить, когда игрок переименовывает предмет.
  4. Примените урон к целевому игроку: После получения имени игрока, который должен получить урон, вы можете использовать API Minecraft Forge для нанесения урона этому игроку.
  5. Обработайте любые дополнительные действия: Добавьте любые дополнительные действия или эффекты, которые вы хотите добавить при использовании куклы вуду.
Примерный код может выглядеть примерно так:

java
@Mod.EventBusSubscriber(modid = "yourmodid")
public class VoodooDollItem extends Item {

@SubscribeEvent
public static void onRightClick(PlayerInteractEvent.RightClickItem event) {
ItemStack itemStack = event.getItemStack();
if (itemStack.getItem() instanceof VoodooDollItem) {
World world = event.getWorld();
EntityPlayer player = event.getEntityPlayer();
// Получаем имя куклы вуду
String targetPlayerName = getTargetPlayerName(itemStack);
// Наносим урон игроку с этим именем
EntityPlayer targetPlayer = world.getPlayerEntityByName(targetPlayerName);
if (targetPlayer != null) {
targetPlayer.attackEntityFrom(DamageSource.MAGIC, 4.0f); // Нанесение урона 4 единицы
}
}
}

private static String getTargetPlayerName(ItemStack itemStack) {
// Здесь ваш код для получения имени куклы вуду
}
}

Не забудьте зарегистрировать ваш класс предмета и обработчик событий в файле @mod аннотации вашего основного класса мода.

Обратите внимание, что этот код представляет только общий подход. Вам может потребоваться дополнительная логика в зависимости от вашего конкретного случая.
 
Сверху