1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Проверка вещей в сундуке

Тема в разделе "Разработка плагинов для новичков", создана пользователем OrAnGe_BoX, 9 ноя 2012.

  1. Автор темы
    OrAnGe_BoX

    OrAnGe_BoX Активный участник Пользователь

    Баллы:
    88
    Всем привет, буккитовцы, недавно начал делать плагины, хочу сделать плагин, который работает с сундуками. Но никак не могу понять как обрабатывать сундуки, а именно:
    Как узнать что лежит в сундуке?
    например:
    1. Если(Сундук.Инвентарь.Содержит(Алмаз,16)>(Алмаз,32) тогда
    2. {
    3. ....
    4. }
    Вот уже пару дней думаю, думаю, никак не надумаю, помогите плз) :)
     
  2. nvidia_hl2

    nvidia_hl2 Участник

    Баллы:
    43
    Skype:
    Kariakyn.oleg.vladimirovi
    уже есть плагин такой. chestenforce. можно настроить на любые блоки
     
  3. Автор темы
    OrAnGe_BoX

    OrAnGe_BoX Активный участник Пользователь

    Баллы:
    88
    1) У него старая версия.
    2) Я хочу добавить дополнительные функции.
     
  4. nvidia_hl2

    nvidia_hl2 Участник

    Баллы:
    43
    Skype:
    Kariakyn.oleg.vladimirovi
    эта страя версия работаети на самрй последней версии баккита. какие функции? все чтт предложил уже там есть
     
  5. Автор темы
    OrAnGe_BoX

    OrAnGe_BoX Активный участник Пользователь

    Баллы:
    88
    У меня стоит Craftbukkit 1.4.2, в /pl этот плагин не видит и команды от него не работают, и тогда скажи почему не грузит(chestEnforse последней версии 1.3.2:
    2012-11-06 17:12:08 [SEVERE] Could not load 'plugins/ChestEnforce.jar' in folder 'plugins'
    org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError: com/collisio/minecraft/chestenforce/ChestEnforce : Unsupported major.minor version 51.0
    at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:154)
    at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:305)
    at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:230)
    at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:255)
    at org.bukkit.craftbukkit.CraftServer.reload(CraftServer.java:605)
    at org.bukkit.Bukkit.reload(Bukkit.java:183)
    at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:22)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:185)
    at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:530)
    at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:913)
    at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:824)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:806)
    at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:44)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:282)
    at net.minecraft.server.NetServerHandler.d(NetServerHandler.java:111)
    at net.minecraft.server.ServerConnection.b(SourceFile:35)
    at net.minecraft.server.DedicatedServerConnection.b(SourceFile:30)
    at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:570)
    at net.minecraft.server.DedicatedServer.r(DedicatedServer.java:215)
    at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:487)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:419)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:818)
    Caused by: java.lang.UnsupportedClassVersionError: com/collisio/minecraft/chestenforce/ChestEnforce : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:44)
    at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:29)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:143)
    ... 21 more

    И вообще, я сам хочу плагин сделать, поэтому и спрашиваю помощь, а не безуспешные попытки меня отговорить :D
     
    slavik123123123 нравится это.
  6. nvidia_hl2

    nvidia_hl2 Участник

    Баллы:
    43
    Skype:
    Kariakyn.oleg.vladimirovi
    . у меня всп работает. все плагины open source.бери его исходники и ройся в поисках заветных строчек. весь код писать суда с телефона оч сложно
     
    I-Am-Black-Overlord и slavik123123123 нравится это.
  7. Автор темы
    OrAnGe_BoX

    OrAnGe_BoX Активный участник Пользователь

    Баллы:
    88
    эм, что-то я не нашел ссылки на исходники...
    http://dev.bukkit.org/server-mods/chestenforce/
     
  8. fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    nvidia_hl2, человек хочет написать что-то САМ. Кто мы такие, чтобы его отговаривать?
     
    RVXman нравится это.
  9. Chris

    Chris Старожил Пользователь

    Баллы:
    123
    http://jd.bukkit.org/apidocs/ вот тебе документация, ищи нужный тебе класс.
     
  10. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Берём блок, берём ID, если ID = ID сундука, то берём его State и привеодим к Chest, далее берём Inventory Chest'а - у нас есть инвентарь сундука.
     
    NyanCat121, ufes, stew и ещё 1-му нравится это.
  11. Jampire

    Jampire Старожил Пользователь

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Какое совпадение... Только пару дней назад писал на заказ что-то подобное...
     
  12. NINJA

    NINJA Старожил Пользователь

    Баллы:
    123
    Интересная затейка посмотрелбы на готовый плагин такой под последнюю версию minecraft:)
     
  13. IDOL1234

    IDOL1234 Активный участник

    Баллы:
    63
    Извините за некропост.. Не могу создавать темы, а более подходящей не нашёл.
    Мне нужно найти координаты блоков, имеющих инвентарь, в чанке с игроком, который ввёл команду.
    Чанк я могу получить при помощи такого кода:
    Код:
    player.getWorld().getChunkAt(player.getLocation());
    Проблемы возникают дальше. Я могу получить список BlockState при помощи
    Код:
    chunk.getTileEntities();
    Но я не могу получить инвентарь любого из них. Точнее, я могу получить его только для стандартных сундуков, а есть ещё куча модов, сундуки которых реализуют net.minecraft.server.IInventory. Как быть с ними? Я не могу получить net.minecraft.server.TileEntity, так-как не знаю, как получить net.minecraft.server.world из org.bukkit.world. Код торгового автомата из IC2 выполняет подобные действия, но ему изначально доступен объект мира требуемого типа. Я уверен, что есть какой-то способ решения этой проблемы, но не могу найти его =(
    Пожалуйста, подскажите..
     
    Оригинало_о нравится это.
  14. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Может поможет набросок:
    Код:
    for(BlockState b: tileentities){
            if (b instanceof Chest){
                    Chest chest = (Chest) b;
                    // do something with chest
            }
            if (b instanceof net.minecraft.server.IInventory){
                    net.minecraft.server.IInventory x = (net.minecraft.server.IInventory) b;
                    // do something with x
            }
    }
    
    Код:
    org.bukkit.World world;
    // ...
    org.bukkit.craftbukkit.CraftWorld cWorld = (org.bukkit.craftbukkit.CraftWorld) world;
    net.minecraft.server.World msWorld = cWorld.getHandle();
    
     
    akke, IDOL1234 и fromgate нравится это.
  15. IDOL1234

    IDOL1234 Активный участник

    Баллы:
    63
    Код:
    b instanceof net.minecraft.server.IInventory

    Проверял, почему-то не работало. Ок, попробую ещё раз..
    2. Есть ли где-то описания всего этого? Я не понимаю, в чём различия кучи классов с похожими названиями и частично пересекающимися методами =(
     
    slavik123123123 нравится это.
  16. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    @IDOL1234,
    у меня нет возможности проверить, но дебаггер в помощь!
    Ставим брейкпойнт на этой строчке, смотрим классы и интерфейсы этого "особого сундука".
    А дальше - поиск у них методов, и т.д.
     
    IDOL1234 нравится это.
  17. IDOL1234

    IDOL1234 Активный участник

    Баллы:
    63
    Что же, спасибо. Дальше попробую сам.
     

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