Маленькая проблемка

Статус
В этой теме нельзя размещать новые ответы.
Здравствуйте, при написании блока, который телепортирует в заданную, я столкнулся с проблемой: не знаю как преобразовать координаты для телепорта
Изложу суть: 
Когда игрок проходит по блоку public void onEntityWalking(World World, int x, int y, int z, Entity par5Entity)
у меня стоит условие, что игрока должно телепортировать, если есть указанные блоки(блоки "счетчики")
Когда проверка проходит успешно, игрока должно телепортировать по координатам, которые указываются за счет считывания блоков(счетчиков)
Присваивание переменной значения для телепортации(отрывок из кода):
Код:
                switch(World.getBlockId(x+2, y+1, z-8))//x1
                {
                    case 181:
                        px1 = 0;
                    case 182:
                        px1 = 1;
                    case 183:
                        px1 = 2;
                    case 184:
                        px1 = 3;
                    case 185:
                        px1 = 4;
                    case 186:
                        px1 = 5;
                    case 187:
                        px1 = 6;
                    case 188:
                        px1 = 7;
                    case 189:
                        px1 = 8;
                    case 190:
                        px1 = 9;
                }
                switch(World.getBlockId(x-2, y+1, z-8))//y1
                {
                    case 181:
                        py1 = 0;
                    case 182:
                        py1 = 1;
                    case 183:
                        py1 = 2;
                    case 184:
                        py1 = 3;
                    case 185:
                        py1 = 4;
                    case 186:
                        py1 = 5;
                    case 187:
                        py1 = 6;
                    case 188:
                        py1 = 7;
                    case 189:
                        py1 = 8;
                    case 190:
                        py1 = 9;
                }
                 switch(World.getBlockId(x+2, y+1, z-10))//x2
                 {
                    case 181:
                        px2 = 0;
                    case 182:
                        px2 = 1;
                    case 183:
                        px2 = 2;
                    case 184:
                        px2 = 3;
                    case 185:
                        px2 = 4;
                    case 186:
                        px2 = 5;
                    case 187:
                        px2 = 6;
                    case 188:
                        px2 = 7;
                    case 189:
                        px2 = 8;
                    case 190:
                        px2 = 9;
                 }

P.S. px1 - 1 число из 4-х значного числа для телепортации по оси Х
    px2 - 2 значие по оси Х
    py1 - 1 по оси У и т.д.
Вот как вбить все 4 значения по оси X и E сюда:
Код:
par5Entity.setPosition(x, y,z);
Заранее благодарен за оказанную помощь!
 
1. Ты не написал какая версия Minecraft, но судя по "getBlockId", явно что ниже 1.7.x версии.
2. Ты уверен, что ("case 181") ид 181 не когда не будет занят или заменён на другой блок?
3. Честно, не понять чего ты хотел от твоего кода.
3.1. Уверен, что надо будет строить портал именно таким способом для того, чтобы так телепортироваться? (В один конец и в одном направлении.)
[merge_posts_bbcode]Добавлено: 09.02.2015 01:46:34[/merge_posts_bbcode]

4. У тебя типа телепартационая платформа 5х5 блоков?
(Потому-что я ещё не пому понять как у тебя это реализовано.)
 
1) 1.6.42) Урверен, т.к. стоит проверка на эти блоки
3)Телепорт в 1 сторону
4) у меня не платформа, а блок, при прохождении по которому меня должно телепортировать по координатам, указанных в "счетчиках", "счетчики находятся рядом с блоком"
Одним словом, мне нужно как-то вписать координаты в 
Код:
par5Entity.setPosition(x, 100,z);

то есть х должен состоять из [font=monospace, sans-serif]px1, [/font][font=monospace, sans-serif]px2, [/font][font=monospace, sans-serif]px3, [/font][font=monospace, sans-serif]px4(y по аналогии)[/font]
 
Пока-что на счёт счётчика понять не могу.
Координаты у тебя в int значении (но во-основном они для блока годны), а координаты игрока должны быть в double значении (если я не ошибаюсь).
Код:
par5Entity.setPosition((double)x + 0.5D, (double)100, (double)z + 0.5D);
 
Код:
                switch(World.getBlockId(x+2, y+1, z-8))//x1
                {
                    case 181:
                        px1 = "0";
                    case 182:
                        px1 = "1";
                    case 183:
                        px1 = "2";
                    case 184:
                        px1 = "3";
                    case 185:
                        px1 = "4";
                    case 186:
                        px1 = "5";
                    case 187:
                        px1 = "6";
                    case 188:
                        px1 = "7";
                    case 189:
                        px1 = "8";
                    case 190:
                        px1 = "9";
                }
                switch(World.getBlockId(x-2, y+1, z-8))//y1
                {
                    case 181:
                        py1 = "0";
                    case 182:
                        py1 = "1";
                    case 183:
                        py1 = "2";
                    case 184:
                        py1 = "3";
                    case 185:
                        py1 = "4";
                    case 186:
                        py1 = "5";
                    case 187:
                        py1 = "6";
                    case 188:
                        py1 = "7";
                    case 189:
                        py1 = "8";
                    case 190:
                        py1 = "9";
                }
                 switch(World.getBlockId(x+2, y+1, z-10))//x2
                 {
                    case 181:
                        px2 = "0";
                    case 182:
                        px2 = "1";
                    case 183:
                        px2 = "2";
                    case 184:
                        px2 = "3";
                    case 185:
                        px2 = "4";
                    case 186:
                        px2 = "5";
                    case 187:
                        px2 = "6";
                    case 188:
                        px2 = "7";
                    case 189:
                        px2 = "8";
                    case 190:
                        px2 = "9";
                 }
                 switch(World.getBlockId(x-2, y+1, z-10))//y2
                 {
                    case 181:
                        py2 = "0";
                    case 182:
                        py2 = "1";
                    case 183:
                        py2 = "2";
                    case 184:
                        py2 = "3";
                    case 185:
                        py2 = "4";
                    case 186:
                        py2 = "5";
                    case 187:
                        py2 = "6";
                    case 188:
                        py2 = "7";
                    case 189:
                        py2 = "8";
                    case 190:
                        py2 = "9";
                 }
                 switch(World.getBlockId(x+2, y+1, z-12))//x3
                 {
                    case 181:
                        px3 = "0";
                    case 182:
                        px3 = "1";
                    case 183:
                        px3 = "2";
                    case 184:
                        px3 = "3";
                    case 185:
                        px3 = "4";
                    case 186:
                        px3 = "5";
                    case 187:
                        px3 = "6";
                    case 188:
                        px3 = "7";
                    case 189:
                        px3 = "8";
                    case 190:
                        px3 = "9";
                 }
                 switch(World.getBlockId(x-2, y+1, z-12))//y3
                 {
                    case 181:
                        py3 = "0";
                    case 182:
                        py3 = "1";
                    case 183:
                        py3 = "2";
                    case 184:
                        py3 = "3";
                    case 185:
                        py3 = "4";
                    case 186:
                        py3 = "5";
                    case 187:
                        py3 = "6";
                    case 188:
                        py3 = "7";
                    case 189:
                        py3 = "8";
                    case 190:
                        py3 = "9";
                 }
                 switch(World.getBlockId(x+2, y+1, z-14))//x4
                 {
                    case 181:
                        px4 = "0";
                    case 182:
                        px4 = "1";
                    case 183:
                        px4 = "2";
                    case 184:
                        px4 = "3";
                    case 185:
                        px4 = "4";
                    case 186:
                        px4 = "5";
                    case 187:
                        px4 = "6";
                    case 188:
                        px4 = "7";
                    case 189:
                        px4 = "8";
                    case 190:
                        px4 = "9";
                 }
                 switch(World.getBlockId(x-2, y+1, z-14))//y4
                 {
                    case 181:
                        py4 = "0";
                    case 182:
                        py4 = "1";
                    case 183:
                        py4 = "2";
                    case 184:
                        py4 = "3";
                    case 185:
                        py4 = "4";
                    case 186:
                        py4 = "5";
                    case 187:
                        py4 = "6";
                    case 188:
                        py4 = "7";
                    case 189:
                        py4 = "8";
                    case 190:
                        py4 = "9";
                 }
            }
Вы были телепортированны по координатам: 
x: "+"px1"+"px2"+"px3"+"px4"+";"
y: "+"py1"+"py2"+"py3"+"py4"+";"
(По аналогии должны считываться координаты для тп)
 
Извини, но я всё равно понять не могу. Может кто-то другой ответит.
 
Смотри, у него число разбивается на цифры, блоки-счетчики могут хранить по одной цифре от числа, на каждую координату по 4 цифры.
Допустим координата:
x: 0345
y: 0034
z: 0491
Задействуется 12 блоков для хранения координат. Можно и меньше, например убрать один для Y, либо отсекать нули.
Способ ТС - мягкий и нежный аутизм.

Вот тебе способ воссоздания числа из цифр:
Код:
String x = "";

for (int i = 0; i < 4; i++) {
    int blockID = World.getBlockId(x+2, y+1, z-(8+2*i)); //для Z я взял логику координат из твоего кода, там явно прослеживается арифметическая прогрессия с инкрементом 2.
    if (blockID >= 181 && blockID <= 190)
        x += ""+(blockID-181);
    else
        break;
}

<...>

int xCoord = Integer.parseInt(x);
 
Код:
int xCoord = Integer.parseInt(x);
Ну вот же оно:D
Спасибо огромное, совсем забыл об этом)
 
Возник еще 1 вопросик)
Как вывести сообщение в
Код:
public void onEntityWalking(World World, int x, int y, int z, Entity par5Entity)
 
Код:
if(entity instanceof ICommandSender) {     
    ((ICommandSender)entity).addChatMessage(new ChatComponentText("сообщение"));
}
 
Может:
Код:
player.addChatMessage("[Message]: ");
?
Без "if (entity instanceof ICommandSender)".
Типа так:
Код:
if (entity instanceof EntityPlayer) {
((EntityPlayer)player).addChatMessage("[Message]: ");
}
Ну как-то так.
 
Эмм... Как бы ему в аргументах дается энтити. Энтити сообщение послать нельзя. Я предложил кастить энтити к ICommandSender'y, если она ICommandSender и отправлять ей сообщение. Вообще это для компабилити.
 
Dragon2488, да правильно. Просто я не знаю, будет это работать на 1.6.4.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху