как сделать так чтобы от игрока 10 блоков на всех накладывался эффект тошноты и голода на 30 сек

Версия Minecraft
1.12.2
к примеру я стою на одном месте и от меня все на дистанции 10 блоков(во всех направлениях) получали эффект тошноты и голода на 30 сек
(я плохо умею коддить)
 
Решение
С помощью вот этого туториала разберись как создавать эвенты:
Потом добавь такой эвент:
Java:
@SubscribeEvent
public void playerTickEvent(TickEvent.PlayerTickEvent event) {
    if (event.phase != TickEvent.Phase.END || event.player.getEntityWorld().isRemote) return;
    if (event.player.getActiveItemStack().getItem() == Items.APPLE) {
        EntityPlayer player = event.player;
        List<EntityPlayer> players = player.getEntityWorld().getEntitiesWithinAABB(EntityPlayer.class,
                new AxisAlignedBB(player.getPosition(), player.getPosition().add(1, 1, 1)).grow(10));
        for (EntityPlayer targetPlayer : players) {
            if (player.getDistance(targetPlayer) <= 10F) {...

GoogleTan

Картошка :3
1,354
43
310
В мире есть метод getEntitiesWithinAABB который возвращает всех энттити в области. Он принимает AxisAlignedBB в котором идет поиск. Так же он принимет какие энтити тебя интересуют(класс). Используй его! Далее перебором вызываешь для каждого добваление эффектов.
 

ReyMagos

Тег-бомбастер
412
7
121
Лучше даже сначала getEntitiesWithinAABB(), а потом перебирать игроков и смотреть getDistance() для каждого.
aabb нужен, чтобы не перебирать всех игроков в мире, но поскольку он неточен:
Безымянный.png
будем смотреть ещё и расстояние.

P.S. Тег у вопроса просто шедевр!
 
917
22
332
С помощью вот этого туториала разберись как создавать эвенты:
Потом добавь такой эвент:
Java:
@SubscribeEvent
public void playerTickEvent(TickEvent.PlayerTickEvent event) {
    if (event.phase != TickEvent.Phase.END || event.player.getEntityWorld().isRemote) return;
    if (event.player.getActiveItemStack().getItem() == Items.APPLE) {
        EntityPlayer player = event.player;
        List<EntityPlayer> players = player.getEntityWorld().getEntitiesWithinAABB(EntityPlayer.class,
                new AxisAlignedBB(player.getPosition(), player.getPosition().add(1, 1, 1)).grow(10));
        for (EntityPlayer targetPlayer : players) {
            if (player.getDistance(targetPlayer) <= 10F) {
                targetPlayer.addPotionEffect(new PotionEffect(MobEffects.HUNGER, 600, 1));
                targetPlayer.addPotionEffect(new PotionEffect(MobEffects.NAUSEA, 600, 1));
            }
        }
    }
}
Если держишь в руке яблоко (Items.APPLE) - все игроки вокруг получают нужные эффекты.
Работоспособность кода не гарантирую, писал на коленке :)
 
Сверху