Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Как заставить блок излучать сигнал?

Kill1001

Активный участник
Баллы
63
Есть некий блок (Любой)
У него есть свойство
Код:
block.isBlockPowered();
Которое показывает излучает ли блок сигнал.
Если на нем рычаг и включен то true иначе false.
Но мне понадобилось сделать так что бы блок излучал и без рычага. Возможно ли это?
И если да то как?
Пробовал
Код:
        for (int i = -1; i <= 1; i++)
        {
            for (int j = -1; j <= 1; j++)
            {
                for (int k = -1; k <= 1; k++)
                {
                    LOG.info(block.getRelative(i, j, k).getType().name());
                    switch (block.getRelative(i, j, k).getType())
                    {
                        case LEVER:
                        case REDSTONE:
                        case DISPENSER:
                        case POWERED_RAIL:
                        case REDSTONE_LAMP_OFF:
                        case REDSTONE_WIRE:
                        {
                            block.getRelative(i, j, k).setData((byte) 8, true);
                        }
                        break;
                    }
                }
            }
        }
И пробовал
Код:
  int i1 = ((CraftWorld) block.getWorld()).getHandle().getData(block.getX(), block.getY(), block.getZ());
int j1 = i1 & 7;
int k1 = 8 - (i1 & 8);
// CraftBukkit start - Interact Lever
Block block1 = block.getWorld().getBlockAt(block.getX(), block.getY(), block.getZ());
int old = (k1 != 8) ? 15 : 0;
int current = (k1 == 8) ? 15 : 0;
BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(block1, old, current);
((CraftWorld) block1.getWorld()).getHandle().getServer().getPluginManager().callEvent(eventRedstone);
((CraftWorld) block.getWorld()).getHandle().setData(block.getX(), block.getY(), block.getZ(), j1 + k1, 3);
Но это не помогает.
В первом случае я ищу редстоун блоки во круг и пытаюсь их сделать активными. Во втором сделать событие редстоуна на сам блок.
В третьем решить проблему в лоб.
Код:
net.minecraft.server.v1_5_R2.Block.byId[block.getTypeId()].interact(((CraftWorld)block.getWorld()).getHandle(), block.getX(), block.getY(), block.getZ(), ((CraftPlayer)player).getHandle(), 12, block.getX(), block.getY(), block.getZ());
И всё безуспешно.
 
Думаю, нельзя, потому что даже на известном всем Wireless Redstone не сама табличка даёт сигнал, а превращается в красный факел.
 
а нельзя ли просто поставить пыль активироманного редстоуна , на месте контакта
 
а нельзя ли просто поставить пыль активироманного редстоуна , на месте контакта

Пробовал поставить id 55:14 но вот в чем проблема, она не горит. Если она в цепи горящей то она становится ярче, но все рядом все равно темнее.
А Если в цепи выключенной то она да же не загорается.
Сей час пока что так. Но это костыль.
Код:
    public void poweredEnable(Block block)
    {
                for (int i = -1; i <= 1; i++)
        {
            for (int k = -1; k <= 1; k++)
            {
                switch (block.getRelative(i, 0, k).getType())
                {
                    case REDSTONE_WIRE:
                    {
                        block.getRelative(i, 0, k).setType(Material.REDSTONE_TORCH_ON);
                    }
                    break;
                    case SIGN:
                    case SIGN_POST:
                    case WALL_SIGN:
                    {
                        switch (block.getRelative(i, 0, k).getData())
                        {
                            case (byte) 2:
                                block.getRelative(i, 0, k - 1).setType(Material.REDSTONE_TORCH_ON);
                                break;
                            case (byte) 3:
                                block.getRelative(i, 0, k + 1).setType(Material.REDSTONE_TORCH_ON);
                                break;
                            case (byte) 4:
                                block.getRelative(i - 1, 0, k).setType(Material.REDSTONE_TORCH_ON);
                                break;
                            case (byte) 5:
                                block.getRelative(i + 1, 0, k).setType(Material.REDSTONE_TORCH_ON);
                                break;
                        }
                    }
                }
            }
        }
    }
 
http://www.rubukkit.org/threads/Редстоун-из-обычного-блока.35875/
Неужели так трудно увидеть тему которая была буквально вчера?)

А в друг словах - можно заставить клиент думать что стоит табличка, а на самом деле стоит блок редстоуна. Хранить список фейковых блоков и при рендере всем выдавать фейки.

Прямого решения видимо нет и пока не будет.
 
http://www.rubukkit.org/threads/Редстоун-из-обычного-блока.35875/
Неужели так трудно увидеть тему которая была буквально вчера?)

А в друг словах - можно заставить клиент думать что стоит табличка, а на самом деле стоит блок редстоуна. Хранить список фейковых блоков и при рендере всем выдавать фейки.

Прямого решения видимо нет и пока не будет.
Чел я видел, но она закрыта. Так что создал новую.
Так как чёткого ответа я там не увидел.
А на счет махинаций м пакетами итд, у меня не вариант так как на серваке потом идёт работа с самим блоком. Да и геморно это. Если других вариантов нету, то просто буду заменять ред блоками.
 

Поделиться этой страницей

Назад
Верх