Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Плагин взаимодействует с модами, как сделать?

Тема в разделе "Управление сервером Bukkit", создана пользователем Левый, 28 сен 2014.

  1. Автор темы
    Левый

    Левый Старожил Пользователь

    Баллы:
    173
    Skype:
    malhenko26
    Имя в Minecraft:
    Lefty
    Как сделать взаимодействие плагина с модами?
     
  2. Хостинг MineCraft
    <
  3. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Взять и сделать.
     
  4. FirePoint

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

    Баллы:
    173
    Имя в Minecraft:
    Just_Andrew
    Написать.
     
  5. Автор темы
    Левый

    Левый Старожил Пользователь

    Баллы:
    173
    Skype:
    malhenko26
    Имя в Minecraft:
    Lefty
    Ясное дело, но как? Коды подскажите какие-то...
     
  6. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Вам, товарищ, на битву экстрасенсов надо. Здесь они не водятся...
     
  7. KoBoT

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

    Баллы:
    173
    У-у-у-у-у-у-у!1!1!1!!
    Ему нужно связаааааать какие-то моооооодыыыы с плаааагиноооом иииииллиииии наобороооот
    зу.иы. я под каким-то кааааааааааайфооом
     
  8. CyberMan

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

    Баллы:
    173
    Skype:
    cyber4el
    берёшь искодники модов, изучаешь их, и пишешь плагин. Что не понятного?
     
  9. Автор темы
    Левый

    Левый Старожил Пользователь

    Баллы:
    173
    Skype:
    malhenko26
    Имя в Minecraft:
    Lefty
    вот у меня плагин, который спавнит сундуки по миру с ресурсами и если ввести туда id предметов из модов, то он не будет спавнить сундуки вообще. Как сделать так чтоб, мог спанить из модов?
     
  10. Flumaster

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

    Баллы:
    153
    Skype:
    alexey_aristov
    Уехать из Одесской Республики, для начала.
     
  11. Автор темы
    Левый

    Левый Старожил Пользователь

    Баллы:
    173
    Skype:
    malhenko26
    Имя в Minecraft:
    Lefty
    к мамке твоей поселюсь
     
  12. Konstantin773

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

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    Смотри, многие итемы из модов кроме ID и DurabilityData имеет NBT-дату. Вообще, идеально надо сериализовать инвентарь сундука.
    Код:
    package net.k773;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    
    import org.bukkit.Bukkit;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.util.io.BukkitObjectInputStream;
    import org.bukkit.util.io.BukkitObjectOutputStream;
    import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
    
    public class InventorySerialization {
        public static String serialize(Inventory inventory) {
            try {
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                BukkitObjectOutputStream dataout = new BukkitObjectOutputStream(out);
                dataout.writeInt(inventory.getSize());
                for (int i = 0; i < inventory.getSize(); i++) {
                    dataout.writeObject(inventory.getItem(i));
                }
                dataout.close();
                return Base64Coder.encodeLines(out.toByteArray());
            } catch (Exception e) {
                throw new IllegalStateException("ItemStack's serialization error.", e);
            }       
        }
      
        public static Inventory deserialize(String data) throws IOException {
            try {
                ByteArrayInputStream input = new ByteArrayInputStream(Base64Coder.decodeLines(data));
                BukkitObjectInputStream dataInput = new BukkitObjectInputStream(input);
                Inventory inventory = Bukkit.getServer().createInventory(null, dataInput.readInt());
                for (int i = 0; i < inventory.getSize(); i++) {
                    inventory.setItem(i, (ItemStack) dataInput.readObject());
                }
                dataInput.close();
                return inventory;
            } catch (ClassNotFoundException e) {
                throw new IOException("ItemStack's deserialization error.", e);
            }
        }
    }
    
    Методом serialize все ItemStack'и инвентаря полностью сериализуются в base64 строку, а методом deserialize также успешно десериализуются в инвентарь. Останется просто для сундука установить полученный инвентарь.
     

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