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

[WIP] Hexogen - очередная "не допиленная" пустышка.

Тема в разделе "Альтернативные серверные платформы", создана пользователем BeYkeR, 31 янв 2015.

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

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

    Баллы:
    173
    Компонентую ? Зачем ?
     
    Последнее редактирование: 10 фев 2015
  2. Хостинг MineCraft
    <
  3. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Если я правильно понял, о чём он, то здесь описаны все плюсы компонентной системы (англ.).
    Если есть домен, могу поставить тебе на моих мощностях какую-нибудь mediawiki или что хочешь :)
    Более корректно писать
    Код:
    for(;;) { ... }
    , но компилятор-то скорее всего и так оптимизирует... :)
    Чаще всего в условиях наших быдлокодерских реалий писать одному быстрее. От других полезна ревизия и толковые советы/подсказки.
     
    Последнее редактирование: 10 фев 2015
  4. Автор темы
    BeYkeR

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

    Баллы:
    173
    Спасибо за ссылку, но как его реализовать ? Я вижу два способа:
    1. Через интерфейсы, как написано в документации или как там.
    Код:
    public class CyanPlayer extends CyanHuman implements Player, lalka229, Armored etc
    //или все это сразу в интерфейс Player
    2. Создать интерфейс Component, сделать хешмап с "идом" компонента в классе Entity, а также использовать методы getComponent(id), addComponent(id, component) и т.д. для манипулирования, например:
    Код:
    //Типо в Entity class
    private HashMap<String, Component> components = new HashMap<String, Component>();
    
    //Добавляем компонент
    HealthComponent comp = new HealthComponent (20); //max health
    entity.addComponent ("health",comp); //Типо пихаем в хешмап
    
    //Изменение компонента
    HealthComponent comp = entity.getComponent ("health");
    comp.setMaxHealth(900);
    comp.setHealth(2);
    //Какой нить апдейдер или тикер в onTick()
    но по-моему это скажется на производительности.
     
    Последнее редактирование: 10 фев 2015
  5. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Я пару недель назад прочитал и даже вполне понял задумку, но не имею сейчас возможности предложить тебе решени, да и вообще не смею предлагать эту систему. Привел ссылку для твоего ознакомления ))
     
  6. Автор темы
    BeYkeR

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

    Баллы:
    173
    На скорую руку написал свою компонент систему, осмотреть можно здесь (Репозицию возможно удалю, т.к. создал его просто для ознакомления с системой). Если заметите какие-то замечания, напишите здесь.[DOUBLEPOST=1424088387,1423660140][/DOUBLEPOST]Вот такие вот результаты:
    CyanWool.png
    На данный момент имеются такие баги:
    - Иногда появляются "мерцания" в чанках.
    - При заходе игрока появляются ошибки (Моя оплошность) .
    - Иногда появляются ошибки в компонентах
    - Иногда неправильно реагируют блоки (т.е. не происходят ломание блоков и т.д.).
    - Не спавнятся существа. (Даже другие игроки)
    - "не работают" дальние чанки. Прост вылетают ошибки с цифрами от MCProtocolLib.
    - Неправильно отображается здоровье.
    - Иногда кастомные блоки выдают себя не за себя. (Например мой тестовый кастомный блок земли выдаёт себя за обычный).
    - Иногда пакеты не отправляются.
    - И еще много...

    Как видно, дела идут плохо (зато чанки посылает). Возможно перейду на план "C", а именно - создать свою ветку какого-нибудь платформы (На прицеле: Glowstone) и модифицировать его по своему "пути развития".
     
    Последнее редактирование: 16 фев 2015
  7. HyperCOGENT

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

    Баллы:
    88
    Я ещё хочу продвинутую систему управления плагинами и многопоточность.
     
  8. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Как насчет того чтобы выкладывать билды на Яндекс Диск?
     
  9. Автор темы
    BeYkeR

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

    Баллы:
    173
    Какую это продвинутую ?
    Чувак, здесь кругом ошибки, какие тут билды ?)
     
  10. dimana90

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

    Баллы:
    103
    Чувак, если осилил протоколы майна и уже написал хромое ядро то посмотри в сторону реализации плагинов на lua, во первых будет намного проще писать\править плагины. А т.к. ты именно с 0 пишешь ядро то впилить грамотную поддержку lua не составит труда т.к. сможешь выкинуть все нужные ивенты и классы напрямую в луа. Я как то игрался и делал плагин для радуги который пробрасывает ивенты и классы в луа, можешь подглядеть идею оттуда по части проброса этого дела.
    А так желаю удачи в разработке. Кстати рекомендую билды выкладывать прямо на гитхабе, это достаточно просто и удобно.
     
  11. HyperCOGENT

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

    Баллы:
    88
    Интересно, я хочу тоже не исходные кода, а билды, желательно выкладывать на гитхабе.
    И ещё хочу реализацию плагинов на Lua, так гораздо удобнее, чем на Java.
     
  12. ensirius

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

    Баллы:
    123
    Плагины плагины плагина..вот почему никогда ничего путного и не выходит у людей :)
     
  13. Автор темы
    BeYkeR

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

    Баллы:
    173
    Да подождите вы. Надо сначала сделать более работоспособное ядро, а потом можно приступать к плагинам.
    Как тогда по-твоему надо кастомизировать сервер ?
     
  14. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Я частично не согласен с обоими. Во-первых, сам по себе язык Java вполне способствует тому, чтобы делать API и писать плагины для ядра на нём. Во-вторых, API нужно вполне прорабатывать до реализации ядра, т.к. именно API определяет внутреннюю структуру, и любое пожелание в будущем "добавить что-то в API" сразу же столкнётся с переделкой половины внутренней архитектуры.
     
  15. LightSunrider

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

    Баллы:
    78
    Имя в Minecraft:
    LightSunrider
    Согласен
    Лично для меня Lua сложен из за синтаксиса(вместо фигурных скобок пустышки вроде then end и т.д.) Лучше всего была бы Java :)
     
  16. dimana90

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

    Баллы:
    103
    Луа полностью прозрачный язык, т.е. предположим ты берешь чей то плагин авторизации но тебе надо бы в нем поправить довольно много, открываешь блокнот, правишь, и все, кроме того у луа входной порог намного ниже чем у явы. Язык не типизированный и очень многое прощает что очень хорошо для новичков.
     
  17. Автор темы
    BeYkeR

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

    Баллы:
    173
    Кто хотел сломанный билд ? Ловите. [#22.02.15]
    Как запустить:
    1. Скачайте файл
    2. Создайте батник для запуска
    3. Создайте папку "worlds" и засуньте в неё ваш мир с названием "world". Создавать миры (генерировать level.dat) еще не умеет.
    4. Запустите сервер
    5. Можете заходить.
    Баги:
    - Иногда появляются "мерцания" в чанках. FIXED (Наполовину).
    - При заходе игрока появляются ошибки (Моя оплошность) . FIXED (Может быть)
    - Иногда появляются ошибки в компонентах
    - Иногда неправильно реагируют блоки (т.е. не происходят ломание блоков и т.д.).
    - Не спавнятся существа. (Даже другие игроки)
    - "не работают" дальние чанки. Прост вылетают ошибки с цифрами от MCProtocolLib.
    - Неправильно отображается здоровье.
    - Иногда кастомные блоки выдают себя не за себя. (Например мой тестовый кастомный блок земли выдаёт себя за обычный).
    - Иногда пакеты не отправляются.
    - После захода второго игрока, он куда-то проваливается и падает вниз (Где-то -10000 по Y).
    - И еще много...
    Что можно сделать:
    - Писать в чат (цветная поддержка присутствует).
    - Ходить (Может только первый игрок).
    - Ломать и ставить блоки, но увы с ошибками.
    - Загружать один мир (В будущем планирую Мульти-вселенность).
    - Менять игровой режим (Просто ударьте землю, ибо это не ванильная земля).
    - Работают некоторые команды: /stop, /version, /plugins.
     
  18. kirill2011s

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

    Баллы:
    103
    Ну, может, тогда сразу на питоне писать плагины?
     
  19. LightSunrider

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

    Баллы:
    78
    Имя в Minecraft:
    LightSunrider
    Питон просто будет тормозить весь сервер...[DOUBLEPOST=1424610750,1424610545][/DOUBLEPOST]
    Мне до сих пор в кошмарах сняться then, end, комментарии в --, и отсутствие точек с запятой в коде...
     
  20. kirill2011s

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

    Баллы:
    103
    Не сильнее, чем луа или какой-либо другой интерпретируемый язык.

    Хочешь, чтобы не тормозило, пиши на C/C++, а для верности, можно и на ассемблере.
     
  21. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Возможно, на следующей неделе могу попробовать помочь автору с какими-нибудь фишечками отдельной веткой.
     

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