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

Помогите Разные инвентари в мирах.

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Как сделать разные инвентари в мирах, у меня допустим есть свой мир (совсем свой, это не ад, не мир, и не энд) я хочу что-бы инвентари из World и из моего мира не пересекались, и сохранялись, каждый в своем мире. Как такое сделать?
     
  2. Хостинг MineCraft
    <
  3. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ванильный мир обязан иметь базу либо overworld, либо nether, либо end.

    А так, слушай PlayerChangedWorldEvent, забирай и очищай инвентарь, подгружай игроку свой инвентарь.
    Если хочешь per-world inventory, тебе придётся либо отказаться от ванильного инвентаря и костылять свой, либо переписывать ваниль.
     
  4. _EnderWorld_

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

    Баллы:
    78
    Имя в Minecraft:
    Steve
  5. Автор темы
    IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Т.Е я не смогу сделать разыне инвентари в World и в своем мире... Мой мир это кстати- копия World
     
  6. _MediaNik_

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

    Баллы:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Можешь.
     
  7. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    попробуй вот это (хэш):
    Код:
    public class example {
       
        static HashMap<String, ItemStack[]> items = new HashMap<String, ItemStack[]>();
        static HashMap<String, ItemStack[]> armor = new HashMap<String, ItemStack[]>();
       
        public ItemStack[] saveInventory(final Player p) {
            return items.put(p.getName(), p.getInventory().getContents());
        }
        public void loadInventory(final Player p) {
            p.getInventory().setContents(items.get(p.getName()));
        }
        public ItemStack[] saveArmor(final Player p) {
            return armor.put(p.getName(), p.getInventory().getArmorContents());
        }
        public void loadArmor(final Player p) {
            p.getInventory().setArmorContents(armor.get(p.getName()));
        }
    }
    
     
  8. Автор темы
    IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    А лучше по UUID ХэшМап или по нику??
     
  9. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    по ууид, если сервер лиц.
     
  10. Автор темы
    IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    А если сервер на пиратке, и проверять по uUID что-то будет плохое??
     
  11. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    а смысл. раз сервер не лиц. ууид на пиратских серверах вроде смысла не имеет
    а так - по нику чекай
     
  12. Автор темы
    IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Хорошо, спасибо.
     
  13. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
     
  14. Автор темы
    IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Dereku, а в PlayerChangedWorldEvent есть только метод, для получения мира, куда он телепортнулся,
    а как получить мир, откуда он телепортнулся?[DOUBLEPOST=1473791354,1473790667][/DOUBLEPOST]Кто-нибудь знает, как получить кординаты игрока, до выполнение этого эвэнта...?
     
  15. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Код:
    package org.bukkit.event.player;
    
    import org.bukkit.World;
    import org.bukkit.entity.Player;
    import org.bukkit.event.HandlerList;
    
    /**
     * Called when a player switches to another world.
     */
    public class PlayerChangedWorldEvent extends PlayerEvent {
        private static final HandlerList handlers = new HandlerList();
        private final World from;
    
        public PlayerChangedWorldEvent(final Player player, final World from) {
            super(player);
            this.from = from;
        }
    
        /**
         * Gets the world the player is switching from.
         *
         * @return  player's previous world
         */
        public World getFrom() {
            return from;
        }
    
        @Override
        public HandlerList getHandlers() {
            return handlers;
        }
    
        public static HandlerList getHandlerList() {
            return handlers;
        }
    }
    Так же можно слушать PlayerTeleportEvent.
     
  16. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Только не забывайте, что итемстак не серилизует кастомные теги в файл. Придется юзать крафтитемстак нмс копи, потом сохранять нбт.
     
  17. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Вполне таки сериализирует.
     
  18. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ну подпиши предмет кастомным тегом и сохрани его итемстак. Или просто сохрани итемстак заряженного предмета из ic2 к примеру.
     
  19. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    bukkit не знает ничего о модах. Совсем.
     
  20. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Тут проблема не в том что он не знает модов, а в том что не дает работать напрямую с nbt. В этом и есть главный касяк ведроапи. За все время даже не смогли добавить в апи атрибут модификаторы, они есть в ваниле. В спайготе добавили Unbreakable, но на этом все и закончилось.
     
  21. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    org.bukkit.inventory.ItemFlag, since 1.9, емнип.
     

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