Перейти к содержанию

Щербатый бесстыдник

Пользователи
  • Постов

    1 060
  • Зарегистрирован

  • Посещение

  • Победитель дней

    12

Весь контент Щербатый бесстыдник

  1. мне нужно запихнуть в мешок лук и стрелы, но лук занимает весь мешок
  2. омайгадбл, спасибо большое, я и не думал даже что предметы можно через if проверять. Можно спросить ещё, после custom_data есть выбор между = | ~ что это значит?
  3. execute as @a[nbt={SelectedItem:{components:{"minecraft:custom_data":{Tags:["1"]}}}}] at @s give @p minecraft:carrot_on_a_stick[minecraft:custom_data={Tags:["1"]}] В общем, я пользуюсь этими командами, для того чтобы выдать предмет с тегом и проверить его, у игрока в руке. Мне нужно проверить этот же предмет, но в другом слоте, например в -106. Я искал инфу на форуме, но находил только варианты не работающие на моей версии. Синтаксис команды я вообще не понимаю, по этому сам не вдуплил. Помогите.
  4. execute as @a[gamemode=survival] at @s if entity @a[distance=0.0..,limit=1,gamemode=survival] run (всегда активный, цикличный) После run напиши любую команду какую хочешь и она будет срабатывать если в одном измерении будут одновременно находиться 2 игрока в режиме выживания. Я просто не помню как КБ активировать другими блоками, по хорошему это надо через дату наверное делать, но я не очень шарю, по этому только этот огрызок команды дам. Если прям очень надо, то после run напиши fill (координата) (координата) minecraft:redstone_block и тогда он будет ставить редстоун блоки между двумя координатами.
  5. Дело в том что закрытие сундука на ключ не работает на сундуках ловушках. Но ты можешь использовать обычный сундук и задетектить его открытие другим образом
  6. вообще, можно ли использовать селекторы в книгах, я знаю что можно вывести ник игрока в tellraw, но мне нужно что-нибудь, что может сохранить ник игрока, даже после того как игрок выйдет. Про скорборд знаю, но хотелось бы что-нибудь материальное по типу книги, предмета, моба на крайняк или даже таблички
  7. У меня карта, сильно завязанная на рандомном луте. Рандомизацию лута я сделал достаточно простую — Сундук копируется, потом разрушается, вещи из него высыпаются в случайном направлении. А потом, самые ближайшие из выпавших предметов телепортируются к воронкам командой Execute as @e[tupe=item,sort=nearest,limit=9] at @s run tp @s 123 123 123 (может не прям такая команда) Под воронкой их ловит сундук, из сундука предметы копируются в инвентарь игрока. Моя проблема в том, что при таком раскладе предметы рандомизируются только по одной штуке на слот, а если мне нужно закинуть туда стак блоков или 16 яблок, то мне приходится обломиться, потому-что механизм сразу даёт дуба, из-за того что воронки слишком медленно сосут, а весь процесс не должен длиться дольше 3-х секунд. Проблема была бы решена — Если воронки были быстрее; Если можно было перемещать выпавшие предметы сразу в инвентарь игроку, в обход воронок; Если я мог бы взять инвентарь игрока (где все предметы в количестве одной штуки) и многократно выдать игроку его же инвентарь так чтобы предметы стакнулись. Я пытался так сделать командой item и командой loot но чёт не вышло; Ну или на крайняк если бы появился более совершенный способ рандомизации предметов, но без лут таблиц и дропа мобов. На данный момент проблема решена тупым способом. После того как запускается катка, я проверяю есть ли у игрока блок, и если есть, даю ему ещё 63 блока. Но такой способ мне не нравится потому-что для каждого нового добавленного мной предмета приходится ставить в цепь новый блок. А я хочу чтобы предметы получаемые в катке можно было легко настроить под себя не копаясь в блоках. В общем, жду советов, версия 1.21.1
  8. Хз, в первые слышу чтобы команду для ворлдт эдита в командный блок запихивали. А что касается ограничений ванильного clone, их можно на новых версиях изменить с помощью gamerule. Про моды не знаю. Можно спросить, для чего тебе нужно копировать такой большой кусок территории? Мне кажется можно найти другой способ это сделать
  9. Можно посчитать разрушения определённого блока, например белой шерсти Objective add название minecraft.mined:minecraft.white_wool Но посчитать разрушение любых блоков, увы, нельзя.
  10. С идеями не помогу, но картой ты меня заинтриговал)), кинь ссылку когда она выйдет. Редко увидишь боссов не представляющих собой зомбаря с мильоном хп
  11. Сначала сделай скорборд /scoreboard objectives add Dialog minecraft.custom:minecraft.talked_to_villager (пропиши в чат) Если хочешь ВЕДАТЬ, то пропиши и следующую команду и нажми на жителя (любого) /scoreboard objectives setdisplay sidebar Dialog (тоже в чат) /scoreboard objectives setdisplay sidebar (чтобы отменить предыдущее) Теперь когда ты нажимаешь на жителя тебе прибавляется 1 значение в только что созданный скорборд. Далее упомянутым тобой execute, нужно проверить есть ли у игрока это значение. И если оно есть вывести в чат ему желанный текст. Чтобы красиво отформатировать текст можно воспользоваться tellraw генераторами execute as @a[scores={Dialog=1..}] at @s run tellraw @s "текст который житель должен говорить" (цикличный, всегда активный, стрелка должна указывать на следующий) execute as @a[scores={Dialog=1..}] at @s run scorboard scoreboard players set @s Dialog 0 (цепной, всегда активный, стрелка в сторону от предыдущего) Но все жители при таком варианте будут говорить одно и тоже. По этому тебе нужно распихать им теги или что-то в этом роде, чтобы фильтровать одного жителя от другого. Я предлагаю такой вариант - Первая команда активирует игрока начавшего диалог [scores={Dialog=1..}], имеющего жителя [type=minecraft:villager] на расстоянии 7ми блоков [distance=..7] с уникальным тегом [tag=BrrBrrPatapim] и если находит, то выводит ему текст конкретно для жителя с конкретно этим тегом. Следующая команда отличается только тегом и наверное сообщением для игрока. Последняя команда как и в предыдущем варианте просто чистит скорборд диалога чтобы игроку не спамило в чат. execute as @a[scores={Dialog=1..}] at @s if entity @e[type=minecraft:villager,tag=BrrBrrPatapim,distance=..7] run tellraw @s "я брр брр патапим" (цикличный, всегда активный) execute as @a[scores={Dialog=1..}] at @s if entity @e[type=minecraft:villager,tag=GlorboFrutodrillo,distance=..7] run tellraw @s "я глорбо фрутодрилло" (цикличный, всегда активный) execute as @a[scores={Dialog=1..}] at @s run scorboard scoreboard players set @s Dialog 0 (цепной, всегда активный) Единственная проблема в том что моя команда не проверяет жителя по которому нажали, она просто ищет жителя рядом с игроком в момент когда игрок получил единицу скорборда, а это значит что механизм может лагать если 2 разных жителя будут рядом в тот момент когда игрок нажмёт по одному из них. Ему просто может выдать не тот текст. Это 100% можно как-то исправить но мне лень думать. Если не узнаешь как, то просто поставь жителей подальше друг от друга Чтобы дать жителю тег подлети к нему вплотную и впиши в чат эту команду: /tag @e[type=minecraft:villager,distance=..3] add GlorboFrutodrillo (в место GlorboFrutodrillo можешь писать любые нужные тебе теги) таким образом если тыкнуть по жителю находясь рядом с жителем с тегом "BrrBrrPatapim" в чат тебе напишет "я брр брр патапим", а если рядом будет "GlorboFrutodrillo" то в чат напишет "я глорбо фрутодрилло". А ещё вопросы по командным блокам лучше в эту часть форма задавать, там больше шансов что ответят (ответят лучше чем я)
  12. Я вижу один способ: Поместить внутрь блока сущность и спавнить частицы от неё. Для этого нужно задетектить установку блока. Для этого я создаю скорборд который будет прибавлять значение каждый раз когда игрок будет ставить белую шерсть. /scoreboard objectives add UsedWool minecraft.used:minecraft.white_wool (прописать 1 раз в чат) /scoreboard objectives setdisplay sidebar UsedWood (не обязательно, но для наглядности можешь прописать и это) /scoreboard objectives setdisplay sidebar (чтобы отменить предыдущую шнягу) Дальше я проверяю если ли значение в скорборде игрока и если есть, спавню шалкеров по направлению взгляда игрока. К сожалению я не знаю как определить точный блок куда нужно поставить шалкера, так-что придётся заспавнить одновременно 6 шалкеров в ряд по направлению взгляда игрока. Для этого нужно 6 раз написать в КБ одну и туже команду с одной лишь изменённой координатой. В самом конце нужно поставить КБ который будет отчищать скорборд от значения которое туда прибавилось после того как игрок поставил блок: execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^1 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цикличный, всегда активный, стрелка на следующий КБ) execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^2 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, стрелка в сторону от предыдущего КБ) execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^3 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, ВСЕ стрелки в одну сторону) execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^4 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, стрелки) execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^5 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, стрелки) execute as @a[scores={UsedWood=1..}] at @s run summon minecraft:shulker ^ ^1.6 ^6 {Invulnerable:1b,NoAI:1b,Tags:["Particle"],active_effects:[{id:invisibility,duration:-1,show_particles:0b},{id:glowing,duration:-1,show_particles:0b}]} (Цепной, всегда активный, стрелки) execute as @a[scores={UsedWood=1..}] at @s run scoreboard players set @s UsedWood 0 (Цепной, всегда активный, УСЛОВНЫЙ) после этого нужно поставить КБ который будет проверять находятся ли шалкер в блоке белой шерсти и если находится то он будет спавнить партиклы execute as @e[tag=Particle] at @s if block ~ ~ ~ minecraft:white_wool run particle minecraft:block white_wool ~ ~ ~ 0.3 0.3 0.3 0.1 20 normal (Цикличный, всегда активный) дальше делай ещё один блок который будет искать лишних шалкеров (только 1 из шести шалкеров нам нужен) и когда найдёт убьёт их. execute as @e[tag=Particle] at @s unless block ~ ~ ~ minecraft:white_wool run tp @s ~ ~-500 ~ (Цикличный, всегда активный) таким образом когда игрок ставит блок белой шерсти механизм это видит и спавнит по направлению его взгляда линию из шалкеров, лишние шалкеры тут-же умирают и остаётся только тот который находится внутри нужного блока. Рядом с этим шалкером мы и спавним партиклы. Если не нравится свечение шалкера замени duration:-1 на duration:1. Шалкера я кстати выбрал только потому-что он размером ровно в 1 блок и стоит идеально по центру. И рас уж пошла такая пляска то можно ещё проверять находятся ли игрок рядом с этим чудо-блоком и делать с ним всякие приколы: execute as @e[tag=Particle] at @s run execute as @a[distance=..10] at @s run title @s actionbar "вы в области функционального блока" (если игрок находится рядом с блоком, ему пишет сообщение) execute as @e[tag=Particle] at @s unless entity @a[distance=..10] run fill ~ ~ ~ ~ ~ ~ minecraft:red_wool (Если игрок отошёл на 10 блоков, то блок заменяется на красный, типа дизактивация) execute as @e[tag=Particle] at @s run execute as @a[distance=..10] at @s run effect give @s minecraft:regeneration 1 1 true (Даёт эффект пока игрок рядом с блоком) Если хочешь сделать окружность из партиклов вокруг функционального блока чтобы разметить границу его области например то делай вот так: execute as @e[tag=Particle] at @s if block ~ ~ ~ minecraft:white_wool run particle block_marker barrier ^ ^0.5 ^10 0 0 0 0.1 1 normal (цикл, активный) execute as @e[tag=Particle] at @s if block ~ ~ ~ minecraft:white_wool run tp @s ~ ~ ~ ~22.5 ~ (цикл, активный) Я это делал на версии 1.21 но насколько я помню эти команды не менялись. Если будут не работать то не парься, пиши, разберёмся))
  13. У меня есть механизм делающий деш как в ультракиле, забинженный на приседание)) Но что касается механик связанных с сущностями и направлением их движения, тут я не силён. Можешь дать немного больше инфы про то какого рода атаки ты хочешь отражать? Если это упомянутые ранее фаерболы, то их можно отбивать и без излишней модификации. А если нужно чтобы сущность летела в сторону атакующего я обычно разворачиваю её в сторону нужного игрока и телепортирую по направлению её взгляда execute as @e[type=minecraft:fireball] at @s run tp @s ^ ^ ^1 facing entity @p execute as @e[type=minecraft:fireball] at @s run - ищёт любой фаербол и выполняет последующие команды от его лица ^ ^ ^1 - телепортирует по координатам относительно направления взгляда сущности, то есть 1 блок вперёд facing entity @p - телепортирует игрока взглядом на ближайшего игрока Но с фаерболами это очень хреново работает, он будет двигаться очень дёргано, даже если телепортировать его на 0.01. Если делать так с нормальными мобами то ещё ладно. А ещё если телепортировать уже выпущенный фаербол, то его будет пытаться уносить не в ту сторону. Ещё с селекторами нужно будет заморочиться, чтобы он летел не к ближайшему игроку а к игроку который его выпустил изначально, а это отдельный вид геморроя выяснять какой моб к какому игроку привязан. Тем не менее нужно больше инфы. На скольких игроков режим рассчитан и обладают ли игроки различными тегами, скорбордами или находятся в разных командах?
  14. делаю приват на командах. Мне нужно задетектить разрушение блоков. Я знаю что скорбордом можно считать разрушение игроком конкретного блока, но я не нашёл возможность сделать такое для всех блоков. Сделать execute if blocks тоже нельзя, так как это не ЦеЛеСоОбРаЗнО (лагать будет, карта большая) версия 1.21.1
  15. Если делать это с невменяемым количеством КБ, то можно копировать предметы из инвентаря игроков скачала в сундуки, потом обратно игрокам но наоборот. Ещё удобнее использовать для этого эндерчест Копирует первый слот хотбара в первый слот эндерчеста игроков: /execute as @a[tag=1] at @s run item replace entity @s enderchest.0 from entity @s hotbar.0 /execute as @a[tag=2] at @s run item replace entity @s enderchest.0 from entity @s hotbar.0 Копирует первый слот эднер честа первого игрока в хотбар второго игрока и наоборот: /execute as @a[tag=1] at @s run item replace entity @s hotbar.0 from entity @a[tag=2] enderchest.0 /execute as @a[tag=2] at @s run item replace entity @s hotbar.0 from entity @a[tag=2] enderchest.0 Чтобы копировать в сундук: item replace block ~ ~1 ~ container.0 from entity @a[tag=1] hotbar.0 целый инвентарь копировать воистину геморройно, но в принципе результат того стоит. У меня такая мини игра была)
  16. Цель такая - сделать возможность призывать сущностей привязанных к определённому игроку. Так что-бы это работало в мультиплеере и можно было устраивать зарубы с использованием армий нежити или что-то типо того. Пока-что механизм работает так: Один кусок механизма проверяет есть ли рядом с игроком яйцо, и если его нет, то он его спавнит и пихает в него значение скорборда игрока. При этом я даже не могу проверить отсутствие по близости яйца с идентичным скорбордом, проверяю отсутствие обычного яйца, что в теории может поломать механизм цикличный///execute as @a[tag=BombardiroСroсodilo] at @s unless entity @e[distance=..1,type=egg,tag=BombardiroСroсodilo] run summon egg ~ ~ ~ {NoGravity:1b,Tags:["BombardiroСroсodilo"]} цепной условный///execute as @e[tag=BombardiroСroсodilo,type=egg] at @s run scoreboard players operation @s ID = @p[tag=BombardiroСroсodilo] ID Потом я проверяю как далеко от яйца находится его владелец. Если он близко, то телепортирую яйцо (ещё ближе). А если он далеко то я его удаляю, тем самым генерирую для игрока новое яйцо. цикличный///execute as @e[type=minecraft:egg,tag=BombardiroСroсodilo] at @s if score @s ID = @p[tag=BombardiroСroсodilo,distance=1..] ID run kill @s цикличный///execute as @e[type=minecraft:egg,tag=BombardiroСroсodilo] at @s if score @s ID = @p[tag=BombardiroСroсodilo,distance=..1] ID run tp @s @p[tag=BombardiroСroсodilo] Если подытожить, то я не телепортирую яйцо к его владельцу как хотелось бы, а телепортирую его к ближайшёму игроку, а в случае если оно теряется, генерирую его заново. Мне такой расклад не очень нравится, но что-то менее костыльное я из себя выдавить не смог. Нужен совет о том что с этим делать, версия 1.21.1, хочу обойтись без датапаков (может перехочу)
  17. Мне нужно заспавнить летящую стрелу, телепортировать её по направлению взгляда не вариант, потому-что очень криво и не естественно работает. Нужно чтобы было так как будто её выпустили из лука и раздатчика. Версия 1.21.1
  18. возможно глупость скажу, но самый лучший рандомайзер в майнкравте это раздатчик, если запихнуть в него 2 шалкера то он с одинаковой вероятностью будет их ставить. Потом можно будет проверить наличие шалкеров на координате командой execute. Чтобы шалкеры в раздатчике не заканчивались его можно копировать в начале цикла командой clone execute if block 1 1 1 minecraft:red_shulker_box run weather thunder execute if block 2 2 2 minecraft:blue_shulker_box run weather clear
  19. Есть такой фрагмент команды - @a[nbt={Inventory:[{Slot:102b,id:"minecraft:stone"}]}] run say 1 который находит игроков с камнем в определённом слоте. Но я не могу найти ID 5-ти слотов для крафта в GUI игрока (не в верстаке) Идея вообще такая - Проверить наличие определённых предметов в 4-рёх слотах для крафта и если они правильные то удалить их и выдать игроку что-нибуть крутое. Кароче кастомный крафт вещей сделать
×
×
  • Создать...