Использование переменных в командах

Доброго времени суток. Я бы хотел поделиться своей идеей. Это будет интересно тем, кто разбирается в командах, в особенности в scoreboard. Так вот, мне всегда не хватало глобальных переменных, которые я мог бы использовать вместо координат в командах по типу setblock. Например, я хочу, чтобы каждый последующий блок ставился на один метр правее предыдущего: на данный момент такое можно реализовать либо использованием команды execute, либо установкой больших систем из командных блоков, каждый из которых будет устанавливаться по относительным координатам предыдущего. Короче, неудобно. Я захотел решить эту проблему с помощью команды scoreboard. Идея в том, чтобы использовать переменные значения в любом месте команды, т.е. взаимодействовать со scoreboard как с переменными в программировании.
Поясню. Предположим, у меня есть команда "/setblock 100 60 200 wool", и мне нужно выполнить ее несколько раз так, чтобы каждый новый блок ставился рядом с предыдущим (скажем, сдвигался на единицу по координате x). Я создаю новый scoreboard с именем "coord" и записываю туда значение "100" под именем x. Теперь мне нужно как-то использовать значение этой переменной x в моей команде. Я решил сделать это следующим образом: "OBJ_x_coord_", где "OBJ_" - обозначение того, что я хочу использовать переменную; "x" - название переменной (абстрактного игрока); "coord" - название scoreboard, откуда я беру переменную x. Поэтому конечная команда будет выглядеть так: "/setblock OBJ_x_coord_ 60 200 wool". Ее смысл не поменяется, ведь я просто заменил число 100 на переменную, хранящую в себе число 100. Вызвав эту команду, поставится блок шерсти на координаты 100 60 200. Что же делать дальше? Теперь нам нужно поставить два командных блока друг рядом с другом. Первый, собственно, будет использовать эту команду по установке блока, а второй увеличивать значение переменной x на единицу каждый раз после того, как блок установится. Это будет делать команда "/scoreboard players add x coord 1".
Запустив данную систему (предварительно сделав первый блок - повторяющим, а второй - цепным), мы получим быстро и плавно создающуюся линию из шерсти, удаляющуюся от нас по координате x.
Все это кажется сложным и бесполезным, но это не так. Используя такую систему мапмейкеры смогут добиться максимальной компактности их схем и сэкономить на времени. Скриншоты и гифка - небольшой пример того, что можно с помощью этого. Цвета шерсти изменяются в зависимости от переменной d, что очень круто, ведь иначе пришлось бы ставить не менее 16-ти командных блоков, чтобы собрать всю эту систему, а здесь все уместилось в 7 блоков и один компаратор.
Код для этой системы я написал без API (т.е. без форджа и др.), с помощью mcp. Если кому интересно - могу скинуть. Честно не знаю, зачем я отправил столь длинный пост сюда и чего хочу добиться. Просто интересно мнение - развивать данную тему или нет. Спасибо, что дочитали до конца (даже если вообще не поняли, о чем я здесь написал).
18dd1e871455.gif


7822935fb967.png
 
2,505
81
397
А почему без форжа? Мог бы и на нем запилить. Это реально. Оформил бы все в отдельный мод.
 
Просто как эксперимент. Моей задачей было реализовать идею, а без API написать такую систему намного проще. Отдельный мод на команды никому и никогда не понадобится, т.к. проходить карты с предварительной установкой модов всем будет просто лень. Хотелось бы разрабам майна написать насчет этого, но шанс того, что они реально введут такое в игру, просто на нуле.
 
667
7
2
GreenBudgie, когда пишешь большой текст пожалуйста разделяй его на части.
 
332
4
Переменные в майнкрафт - моя мечта
 
Heitem написал(а):
Переменные в майнкрафт - моя мечта
И моя тоже. Почему в майн добавили только scoreboard и не ввели возможность использовать переменные в любой части команды - неизвестно. Буду пытаться развивать эту тему на зарубежных форумах.
 
Продолжайте! Я понял каждую команду в командном блоке в приведенном примере, но я (и один человек, который подобным достаточно занимается) и близкого понятия не имею, как писать подобные коды на майнкрафт, вообще этим не занимаюсь. Расскажете как? Для моего друга было бы очень проблематично сделать переменные, хотя он немало знает.
 
Здравствуйте. Я очень рад и благодарен за то что подобные вопросы выносятся на общее обозрение и решаются(пусть и не Mojang). Но можно ли где-нибудь найти код для этой системы?
 
7,099
324
1,510
То, что описано в первом сообщении сделано на командных блоках, прямо в игре. Нет никакого кода. Инструкции вроде полные
 
Нет он же сказал что добавил эту функцию(использование scoreboard как числа в командах) с помощью MCP.
А потом используя эту функцию показал в Майнкрафте результат(как это можно применять)
 
Последнее редактирование:
7,099
324
1,510
7,099
324
1,510
В дата-паках? Нет. Посмотрим, чо с forge будет
 
Разве можно писать /setblock OBJ_x_coord 60 200 woll? В координатах нужно писать целое число, это не принимает значение из scoreboard.
 
3
0
И моя тоже. Почему в майн добавили только scoreboard и не ввели возможность использовать переменные в любой части команды - неизвестно. Буду пытаться развивать эту тему на зарубежных форумах.
Технически scoreboard переменные позволяют это сделать, так что мод не нужен, достаточно датапака.
Вот пример решения твоего вопроса:
Если тебе даны Y и Z координаты, то ты спавнишь на координатах 0 Y Z летучую мышь без интеллекта и с тегом, например "abc", чтобы использовать именно ее в дальнейшем.
Затем ты используешь функцию которая сдвигает эту мышь на +1 по X и отнимает от скорборда "x" единицу.
Далее в конце этой функции, если значение скорборда "x" больше нуля то ты запускаешь эту же функцию, и получаешь такой цикл, который закончится когда скорборд "x" будет равен 0, а летучая мышь, каждый раз сдвигаясь, окажется на требуемых координатах. Ну и потом мы просто убиваем эту мышь
Да, в этом способе есть ОГРОМНАЯ проблема с оптимизацией, но если координаты небольшие, или если моды не вариант, то это вполне себе выход.
 
3
0
Разве можно писать /setblock OBJ_x_coord 60 200 woll? В координатах нужно писать целое число, это не принимает значение из scoreboard.
В том то и прикол что нельзя, и челик написал программу, которая считывает что игрок пишет в чате, режет на куски, читает и вот это OBJ_x_coord, в отличие от майнкрафта, воспринимает как переменную из скорборда. Так сказать создал свою команду, идентичную майнкрафтовской, но позволяющую использовать переменные.
Программа нехитрая, но для нее надо уметь в моды хотя бы чуть-чуть, так что я тут не помошник, сори.
 
Сверху