Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

OrAnGe_BoX

Активный участник
Пользователь
Баллы
88
Всем привет, буккитовцы, недавно начал делать плагины, хочу сделать плагин, который работает с сундуками. Но никак не могу понять как обрабатывать сундуки, а именно:
Как узнать что лежит в сундуке?
например:
  1. Если(Сундук.Инвентарь.Содержит(Алмаз,16)>(Алмаз,32) тогда
  2. {
  3. ....
  4. }
Вот уже пару дней думаю, думаю, никак не надумаю, помогите плз) :)
 
эта страя версия работаети на самрй последней версии баккита. какие функции? все чтт предложил уже там есть
 
эта страя версия работаети на самрй последней версии баккита. какие функции? все чтт предложил уже там есть
У меня стоит 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
 
. у меня всп работает. все плагины open source.бери его исходники и ройся в поисках заветных строчек. весь код писать суда с телефона оч сложно
 
nvidia_hl2, человек хочет написать что-то САМ. Кто мы такие, чтобы его отговаривать?
 
Всем привет, буккитовцы, недавно начал делать плагины, хочу сделать плагин, который работает с сундуками. Но никак не могу понять как обрабатывать сундуки, а именно:
Как узнать что лежит в сундуке?
например:
  1. Если(Сундук.Инвентарь.Содержит(Алмаз,16)>(Алмаз,32) тогда
  2. {
  3. ....
  4. }
Вот уже пару дней думаю, думаю, никак не надумаю, помогите плз) :)

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

Берём блок, берём ID, если ID = ID сундука, то берём его State и привеодим к Chest, далее берём Inventory Chest'а - у нас есть инвентарь сундука.
 
Какое совпадение... Только пару дней назад писал на заказ что-то подобное...
 
Интересная затейка посмотрелбы на готовый плагин такой под последнюю версию minecraft:)
 
Извините за некропост.. Не могу создавать темы, а более подходящей не нашёл.
Мне нужно найти координаты блоков, имеющих инвентарь, в чанке с игроком, который ввёл команду.
Чанк я могу получить при помощи такого кода:
Java:
player.getWorld().getChunkAt(player.getLocation());
Проблемы возникают дальше. Я могу получить список BlockState при помощи
Java:
chunk.getTileEntities();
Но я не могу получить инвентарь любого из них. Точнее, я могу получить его только для стандартных сундуков, а есть ещё куча модов, сундуки которых реализуют net.minecraft.server.IInventory. Как быть с ними? Я не могу получить net.minecraft.server.TileEntity, так-как не знаю, как получить net.minecraft.server.world из org.bukkit.world. Код торгового автомата из IC2 выполняет подобные действия, но ему изначально доступен объект мира требуемого типа. Я уверен, что есть какой-то способ решения этой проблемы, но не могу найти его =(
Пожалуйста, подскажите..
 
Извините за некропост.. Не могу создавать темы, а более подходящей не нашёл.
Мне нужно найти координаты блоков, имеющих инвентарь, в чанке с игроком, который ввёл команду.
Чанк я могу получить при помощи такого кода:
Java:
player.getWorld().getChunkAt(player.getLocation());
Проблемы возникают дальше. Я могу получить список BlockState при помощи
Java:
chunk.getTileEntities();
...
Может поможет набросок:
Java:
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
        }
}
... как получить net.minecraft.server.world из org.bukkit.world. ...
Java:
org.bukkit.World world;
// ...
org.bukkit.craftbukkit.CraftWorld cWorld = (org.bukkit.craftbukkit.CraftWorld) world;
net.minecraft.server.World msWorld = cWorld.getHandle();
 
Java:
b instanceof net.minecraft.server.IInventory
Проверял, почему-то не работало. Ок, попробую ещё раз..
2. Есть ли где-то описания всего этого? Я не понимаю, в чём различия кучи классов с похожими названиями и частично пересекающимися методами =(
 
@IDOL1234,
у меня нет возможности проверить, но дебаггер в помощь!
Ставим брейкпойнт на этой строчке, смотрим классы и интерфейсы этого "особого сундука".
А дальше - поиск у них методов, и т.д.
 

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

Назад
Верх