Я только начал работу с mcpi и хочу иметь собственные команды для записи сообщений чата, начинающихся с / .

Как я могу использовать пользовательские команды для этого?

Pizza98 14 Июл 2021 в 16:19

Можете ли вы добавить несколько примеров команд, которые вы уже пробовали, или код, связанный с вашим вопросом?

14 Июл 2021 в 17:29

Я не знаю, как создать любую команду. Моя проблема в том, что я даже не знаю, поддерживает ли mcpi использование командной системы minecrafts. Я хочу знать, как регистрировать команды.

15 Июл 2021 в 18:06

3 ответа

Вы можете создать свой собственный. Вот пример того, что я делал в прошлом.

from mcpi.minecraft import Minecraft from mcpi import entity mc = Minecraft.create(address=»0.0.0.0″, port=4711) players_ids = mc.getPlayerEntityIds() print(len(players_ids), » entities available.») number = len(players_ids) mc.postToChat( «%s entities available.» %number) for id in players_ids: mc.postToChat(«Entity : %s» %id) def playerEntity1(player): #from mcLogListener import on_press import time from classSummon import ArrowTrap, DiamondTrap, EnderWarrior, FallingSky from jutsu import amenotejikara, allMightyPush, stillWater, lavaFlow, portalDoor, oakPlank, darkMatter, fireAShot from mcpi.minecraft import Minecraft mc = Minecraft.create(address=»0.0.0.0″, port=4711) #custom commands chatPost = «0» while True: for chatPost in mc.entity.pollChatPosts(players_ids[0]): if chatPost.message.lower() == «6»: mc.postToChat(«Amenotejikara is activated») chatPost = «6» elif chatPost.message.lower() == «7»: mc.postToChat(«All Mighty Push is activated») chatPost = «7» elif chatPost.message.lower() == «1»: mc.postToChat(«Water Pool jutsu!») chatPost = «1» elif chatPost.message.lower() == «2»: mc.postToChat(«Flowing Lava Jutsu!») chatPost = «2» elif chatPost.message.lower() == «3»: mc.postToChat(«Portal Summoning Jutsu») chatPost = «3» elif chatPost.message.lower() == «4»: mc.postToChat(«Oak Wood Jutsu») chatPost = «4» elif chatPost.message.lower() == «5»: mc.postToChat(«Obsidian Forbidin Jutsu») chatPost = «5» elif chatPost.message.lower() == ‘8’: mc.postToChat(«Fireball Jutsu») chatPost = «8» elif chatPost.message.lower() == ’11’: mc.postToChat(«Arrow Glass Prism Jutsu») chatPost = «11» elif chatPost.message.lower() == ’12’: mc.postToChat(«Diamond Prism Jutsu») chatPost = «12» elif chatPost.message.lower() == ’13’: mc.postToChat(«Ender Tools Jutsu») chatPost = «13» elif chatPost.message.lower() == ’14’: mc.postToChat(«Mighty Sand Trap») chatPost = «14» elif chatPost.message.lower() == ‘0’: mc.postToChat(«test») chatPost = «0» »’Listener for arrow shots»’ for blockhit in mc.entity.pollProjectileHits(players_ids[0]): pos = blockhit.pos x = pos.x y = pos.y z = pos.z if chatPost == «6»: amenotejikara(players_ids[0])#Teleporting Arrow elif chatPost == «7»: allMightyPush(players_ids[0])#Air Arrow elif chatPost == «8»: fireAShot(players_ids[0])#Fire Arrow elif chatPost == «11»: trapArrow = ArrowTrap(x, y, z, 3)#Trap arrow class trapArrow.build()#Pyramid1 trapArrow.bottom()#Pyramid2 elif chatPost == «14»: fArrow = FallingSky(x, y, z, 1)#FallingSky class fArrow.garvelPyramidHole()#Mob pit fArrow.garvelPyramidTop()#Falling sand fArrow.garvelPyramid()#falling sand fArrow.garvelPyramidBottom()#falling sand else: mc.events.clearAll() »’Sword block Listener»’ for blockhit in mc.entity.pollBlockHits(players_ids[0]): pos = blockhit.pos x = pos.x y = pos.y z = pos.z if chatPost == «1»: stillWater(players_ids[0])#Water block sword block elif chatPost == «2»: lavaFlow(players_ids[0])#Lava block sword block elif chatPost == «3»: portalDoor(players_ids[0])# 1*3 nether portal block elif chatPost == «4»: oakPlank(players_ids[0])#Wood block sword block elif chatPost == «5»: darkMatter(players_ids[0])#Obsidian block sword block elif chatPost == «12»: glassDiamond = DiamondTrap(x,y,z,3) #DiamondTrap class glassDiamond.buildB() elif chatPost == «13»: endLoot = EnderWarrior(x, y, z, 2)#EnderWarrior class endLoot.enderOre() endLoot.enderPumpkin() endLoot.crafting()

Читайте также:  Как восстановить землю в Майнкрафте на сервере

Надеюсь это поможет.

1. Установка и настройка Minecraft + Python (в Windows)

SoFrosty 24 Май 2022 в 21:58

Насколько я знаю, mcpi не поддерживает систему команд. Однако написание собственного не должно быть слишком сложным, если mcpi поддерживает события отправки сообщений, не уверен, как это будет называться в API, но я предполагаю, что это будет так. В любом случае у меня есть несколько идей о том, как это реализовать, некоторые лучше, чем другие.

1. Проверьте, есть ли перед сообщением «перехваченное» или полученное сообщение /, если да, удалите префикс и разделите строку пробелами. Однако это предлагает некоторые заметные проблемы. Во-первых, код стал бы чрезвычайно запутанным, серьезно запутанным, поскольку вам пришлось бы обрабатывать каждый аргумент самостоятельно.

Во-вторых, он устраняет возможность «экранированных» аргументов, в которых вы можете сказать, что аргумент является строкой, заключенной в двойные кавычки и может содержать пробелы. Это не сработает, так как оно разделится независимо от того, находится ли пробел в кавычках, и не признает их. Таковы ограничения этой относительно простой реализации. Отсюда идея № 2.

  1. Я использую эту реализацию для моего синтаксического анализатора аргументов для вспомогательной библиотеки для библиотеки ботов Golang Discord. Суть сводится к повторной проверке префикса, его удалению. Затем проверьте, не равна ли длина строки сообщения 0. Если она равна 0, игнорируйте сообщение, в противном случае сделайте следующее: Имейте регулярное выражение для идентификации аргументов, экранированных или неэкранированных. Найдите все совпадения в строке (игнорируя несовпадения, делая лишние пробелы не проблемой. yey!). Сохраните все совпадения в объекте «Аргумент», который будет иметь некоторые вспомогательные методы для анализа строки, чтобы сказать, что это число с плавающей запятой или целое число. (Чистейший код!!). Наконец, поместите все аргументы в массив или связанный список, если они расположены по порядку, и работайте оттуда. Если вам нужна ссылка (она написана на Golang, но на самом деле это не сложный язык), проверьте эту вспомогательную библиотеку, которую я написал: https://github.com/32Bites/wetgear.
Читайте также:  Незеритовый скрап в Майнкрафте как сделать

Извините, если это трудно прочитать, дайте мне знать, если вам нужна помощь или что-то еще, независимо от того, что я желаю вам всего наилучшего.

Noah Shanaberger 16 Июл 2021 в 03:53

Не уверен, что это API-интерфейс mcpi или minecrafts, но я пытался распечатать письменные сообщения, и сообщения с косой чертой не отображались, но, вероятно, это просто mcpi не показывает его. Однако сейчас я начал с Java, так как я думаю, что она содержит полную поддержку API minecaft. В любом случае, я был бы рад, если бы вы узнали что-нибудь еще о поддержке Python для плагинов Minecraft, так как мне гораздо удобнее работать с Python, чем с Java.

17 Июл 2021 в 22:57

есть pollChatPosts() , но он зависает при вызове, однако мне действительно удалось создать клиент команд. В настоящее время я работаю над его обновлением, потому что код спагетти, но он работает с MCPI-Reborn: на данный момент расширен, я также сделал мод (в основном путем копирования чужого кода), который не будет отправлять сообщение в чат, если он начинается с / . Это полезно, потому что мой командный клиент работает, запуская MCPI-Reborn через подпроцесс, выполняющий действия при печати сообщений (например, [CHAT] / )

Только для разъяснения и во избежание скимминга, КОД БУДЕТ ОБНОВЛЕН СКОРО™

Надеюсь, это поможет: D

Источник: question-it.com

Minecraft: Pi edition API Python Library

This project mcpi-e is a fork from mcpi project [https://github.com/martinohanlon/mcpi] mcpi-e Python library for communicating with Minecraft: Pi edition and RaspberryJuice.

Installation

Windows

pip3 install —upgrade mcpi-e

Note: you could use py or python -m to speify the python in your system

py -m pip install —upgrade mcpi-e

Linux / MacOS

sudo pip3 install —upgrade mcpi-e

Usage

from mcpi_e.minecraft import Minecraft . mc = Minecraft.create(servername,4711,playerName)

Читайте также:  Как добывать красный камень в Майнкрафт

mcpi-e Change log

1. Enhancement for using mcpi in server with multiple users

  • User could pass player username as 3rd parameter when create a new Minecraft api instense. ex: mc=Minecraft.create(address,port,name)
  • Change mc.Player to use entity so it will not pick the first user in the server.

2. Limit the Usage of mcpi

  • Add the _send command 0.05s interval to slow down the speed
  • limit the useage of setBlocks
  • todo: limit the script usage range (x,y,z)

3. Some improvement

  • Add BlockEnum, Logger, Settings ex:

mc.settings.SHOW_DEBUG=True print(«Is show debug msg»,mc.settings.SHOW_DEBUG) print(«Is show log msg»,mc.settings.SHOW_Log) print(«system speed:»,mc.settings.SYS_SPEED) mc.settings.SYS_SPEED=mc.settings.Speed.FAST (x,y,z)=pos=mc.player.getTilePos() debug(«this is debug msg») log(pos) warn(«warn»)

Источник: pypi.org

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Отображение кириллицы из программы Python в чате Minecraft.

#1 Фев. 26, 2020 23:49:02

Отображение кириллицы из программы Python в чате Minecraft.

Здравствуйте. Начал изучать Python по книге “
Программируем с Minecraft. Создай свой мир с помощью Python” Крейга Ричардсона. Имеем файл:

# Постим в чат сообщение from mcpi.minecraft import Minecraft mc = Minecraft.create() # Задаём сообщение words = «Привет, мир Minecraft!» # Выводим сообщение в чат mc.postToChat(words)

В чате появляется вот это:
Подскажите, пожалуйста, это можно исправить?

Отредактировано VictorDO (Фев. 27, 2020 10:48:10)

attachment

Прикреплённый файлы:
2020-02-26_20-47-20.png (23,9 KБ)

#2 Фев. 27, 2020 05:48:27

Отображение кириллицы из программы Python в чате Minecraft.

похоже на проблему с кодировками.

чтобы что-то вам советовать надо знать версию питона (2 или 3). и иметь документацию о postToChat которую можно получить help(mc.postToChat)

#3 Фев. 27, 2020 06:04:36

Отображение кириллицы из программы Python в чате Minecraft.

doza_and
похоже на проблему с кодировками.чтобы что-то вам советовать надо знать версию питона (2 или 3). и иметь документацию о postToChat которую можно получить help(mc.postToChat)

Питон 3. Документацию посмотрю, как до компа доберусь. Спасибо.

#4 Фев. 27, 2020 10:36:03

Отображение кириллицы из программы Python в чате Minecraft.

1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например) , нажмите и вставьте ссылку на его url

есчщо

Источник: python.su