Minecraft ParticleNativeAPI [1.7+] мод 2021 скачать бесплатно
logo
wow addon ParticleNativeAPI [1.7+]

ParticleNativeAPI [1.7+]

Версия игры: 1.17
Всего загрузок: 229
Обновлено: Jun 20, 2021
Создано: Mar 24, 2020
Скачать ParticleNativeAPI [1.7+]Скачать Предыдущие версии

Предыдущие версии

Название Размер Обновлено Версия игры Загрузок
ParticleNativeAPI 3.1.0 +3 More+3 Others release 231.39 KB Jun 20, 2021 1.17 4 скачать ParticleNativeAPI [1.7+] ParticleNativeAPI 3.1.0

+3 More+3 Others releaseСкачать
ParticleNativeAPI 3.0.0 +3 More+3 Others release 177.77 KB Sep 4, 2020 1.16 71 скачать ParticleNativeAPI [1.7+] ParticleNativeAPI 3.0.0

+3 More+3 Others releaseСкачать
ParticleNativeAPI 2.0.3 release 211.50 KB Jul 20, 2020 1.16 18 скачать ParticleNativeAPI [1.7+] ParticleNativeAPI 2.0.3 releaseСкачать
ParticleNativeAPI 2.0.2 release 214.93 KB Jun 26, 2020 1.16 22 скачать ParticleNativeAPI [1.7+] ParticleNativeAPI 2.0.2 releaseСкачать
ParticleNativeAPI 2.0.1 release 215.59 KB Jun 16, 2020 1.15 12 скачать ParticleNativeAPI [1.7+] ParticleNativeAPI 2.0.1 releaseСкачать
ParticleNativeAPI 2.0.0 release 207.58 KB May 24, 2020 1.15 12 скачать ParticleNativeAPI [1.7+] ParticleNativeAPI 2.0.0 releaseСкачать
ParticleNativeAPI 1.3.1 release 205.08 KB May 23, 2020 1.15 10 скачать ParticleNativeAPI [1.7+] ParticleNativeAPI 1.3.1 releaseСкачать
ParticleNativeAPI 1.3.0 release 202.07 KB May 22, 2020 1.15 9 скачать ParticleNativeAPI [1.7+] ParticleNativeAPI 1.3.0 releaseСкачать
ParticleNativeAPI 1.2.0 release 200.25 KB May 17, 2020 1.15 13 скачать ParticleNativeAPI [1.7+] ParticleNativeAPI 1.2.0 releaseСкачать
ParticleNariveAPI 1.1.1 release 198.44 KB May 11, 2020 1.15 14 скачать ParticleNativeAPI [1.7+] ParticleNariveAPI 1.1.1 releaseСкачать
ParticleNativeAPI 1.1.0.0 release 195.70 KB Mar 27, 2020 1.14 15 скачать ParticleNativeAPI [1.7+] ParticleNativeAPI 1.1.0.0 releaseСкачать
ParticleNativeAPI-1.0.0.0 release 192.47 KB Mar 24, 2020 1.14 10 скачать ParticleNativeAPI [1.7+] ParticleNativeAPI-1.0.0.0 releaseСкачать

Описание

ParticleNativeAPI

ParticleNativeAPI-это API для создания ЧАСТИЦ для Spigot и Bukkit server, предназначенный для:

  • быстрый (сравнимый с родным Java-кодом!),
  • кросс-версия совместима вплоть до MC 1.7 (включает удаленные частицы!),
  • гибкость в использовании,
  • относительно прост и удобен в использовании.

Кроме того, этот API частиц поддерживает порождение определенных частиц:

  • из блоков,
  • из предметов,
  • с цветом (только 1 частица на пакет),
  • с цветом и размером,
  • с определенным движением (только 1 частица на пакет)

.. и по-прежнему быть быстрым и кросс-версия совместима между обновлениями Minecraft .

colors

Вся структура API нацелена на то, чтобы отразить, как Minecraft обрабатывает отправку пакетов, однако для этого он не использует никакого отражения!

Как использовать

Нерестовая частица производится в 2 простых шага:

  • создайте пакет частиц, используя списки частиц,
  • отправьте его, используя списки частиц.

Вот и все.

// получить API из экземпляра плагина
ParticleNativeAPI АПИ = ParticleNativePlugin.getAPI();

// ... или сгенерируйте его с помощью core module ("this" - это Ваш экземпляр плагина)
api = ParticleNativeCore.loadAPI(this);

// используйте список частиц (кэшируйте его для более удобного использования)
// в качестве примера будет использоваться Particle_1_8
Particles_1_8 частиц = API-интерфейс.getParticles_1_8();

Игрок игрок = ...;
Коды Loc = плеер.метод getlocation();

// создание пакета частиц
Пакет объектов = частицы.FLAME().packet(true, loc);

// отправить этот пакет игроку
particles.sendPacket(игрок, пакет);

Кому вы хотите отправить этот пакет или на каких условиях-решать Вам. Чтобы узнать больше о списках частиц выше, я рекомендую вам прочитать подробный учебник по моему репозиторию github здесь.

Почему это быстро

Он внутренне использует библиотеку ASM ObjectWeb для генерации зависящего от версии Java-кода вместо использования Отражения.
Отражение используется только для того, чтобы распознать, на какой версии Minecraft должен быть сгенерирован API, на этапе запуска сервера.

Простой тест

Я сделал 3 теста на localhost (MC 1.14.3), чтобы измерить время выполнения 100 000 частиц в случайных местах вокруг моего персонажа.

Все тесты были сделаны после обширной разминки их выполнения несколько раз, чтобы позволить JVM оптимизировать часто используемый код.

Весь код, используемый для тестирования, находится в моем репозитории здесь.

Тесты состоят из 4 методов отправки частиц:

  • Версия специфические — используются непосредственно NMS и ОВС, чтобы отправить пакет,
  • ParticleNativeAPI — использует этот api для отправки частиц простым методом,
  • SpigotAPI — использует метод spawnParticle Spigot API (игроку) для отправки эффекта,
  • Отражение — использует отраженные классы NMS и OBC (с установленным значением доступности true) для отправки частиц. Эти классы/методы/поля кэшируются для многократного использования.

Test 1Test 2Test 3

Как вы можете видеть, по крайней мере на моей машине ParticleNativeAPI даже быстрее, чем Spigot API, и очень близок по скорости к реализации конкретной версии.

Обзор примеров минимального использования 

public class PluginName расширяет JavaPlugin {

   // кэш-список частиц для дальнейшего использования
 частная Particles_1_8 частиц;

   @Переопределение
   public void OnEnable() {
// проверьте, все ли в порядке
       если (!ParticleNativePlugin.isValid()) {
           getLogger().log(Level.СЕРЬЕЗНАЯ "Ошибка произошла при загрузке зависимости.");
           это.setEnabled(ложь);
           вернуть;
       }
       
       // get API
       ParticleNativeAPI АПИ = ParticleNativePlugin.getAPI();

       // выберите списки частиц, которые вы хотите использовать
particles = api.getParticles_1_8();
   }

   // пример использования
   @Переопределение
   общественные булевы по OnCommand(CommandSender отправителя, команды, строки надписи, string[] аргументы) {
       if (!command.getName().equalsIgnoreCase("somecmd")) возвращает true;

       if (!(sender instanceof Player)) {
           sender.SendMessage(ChatColor.КРАСНЫЙ + "Вы должны быть игроком, чтобы использовать эту команду!");
           return true;
       }

       Игрок pSender = (Игрок) отправитель;
       Коды Loc = pSender.метод getlocation();

       // создание пакета частиц
       Пакет объектов = частицы.FLAME().packet(true, loc);

       // отправьте этот пакет всем игрокам в пределах 30 блоков
       частицы.sendPacket(Лок, 30Д, пакет);

       return true;
   }
}

Для владельцев серверов

Если вы были перенаправлены сюда другим плагином, просто включите jar плагина в папку plugins.
Эта библиотека сама по себе ничего не делает, кроме фазы запуска. Он может быть использован в качестве зависимости другими плагинами.

Для разработчиков плагинов
Подробный учебник с различными примерами можно найти в моем репозитории github здесь.

 

Maven for core API с примером настройки (официальный репозиторий):

   <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins<groupId></groupId>
                <artifactId>в Maven-тень-плагин</artifactId>
                <version>3.2.3</version>
                <executions>
                    <execution>
                        <phase>пакет</phase>
                        <goals>
                            <goal>оттенок</goal>
                        </goals>

                        <configuration>
                            <!-- заменить затененную версию на основной артефакт -->
                            <shadedArtifactAttached>накладные</shadedArtifactAttached>

                            <!-- переместите классы API, чтобы избежать конфликтов same-classpath - >
                            <!-- с другими плагинами, использующими этот основной API -->
                            <relocations>
                                <relocation>
                                    <pattern>ком.в GitHub.fierioziy.particlenativeapi</pattern>
                                    <shadedPattern>меня.yourpluginpackage.particleapi</shadedPattern>
                                </relocation>
                            </relocations>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
          
            <!--  other plugins ... -->
        </plugins>
      
        <!-- other build config ... -->
    </build>
    <dependencies>
        <dependency>
            <groupId>ком.в GitHub.fierioziy.particlenativeapi</groupId>
            <artifactId>ParticleNativeAPI-ядерный</artifactId>
            <version>3.0.0</version>
            <scope>компиляции</scope>
        </dependency>

        <!-- другие зависимости -->
    </dependencies>

Maven for plugin reference setup (официальный репозиторий):

    <dependencies>
        <dependency>
            <groupId>ком.в GitHub.fierioziy.particlenativeapi</groupId>
            <artifactId>ParticleNativeAPI-плагин<artifactId></artifactId>
            <version>3.0.0</version>
            <scope>предоставляется</scope>
        </dependency>

        <!-- другие зависимости -->
    </dependencies>

 

Запросить функции или сообщить о проблеме

Если вы нашли ошибку или просто хотите запросить функцию, используйте трекер проблем на моем github здесь.

Исходный код

Весь исходный код плагина присутствует в моем репозитории github здесь.

Совместимость
Проверенные версии патрубков: 1.7.10, 1.8.8, 1.12, 1.14.3, 1.15.2, 1.16.1.

Плагин должен быть совместим, по крайней мере, между MC 1.7 и MC 1.16 на данный момент.

Он также должен работать на Bukkit (CraftBukkit).

Он будет нуждаться в обновлении только в том случае, если были добавлены новые функции/исправления ошибок или были внесены изменения в обработку пакетов в будущих версиях.

Имейте в виду, что этот API будет способствовать обратной совместимости
поддерживаемые версии МС диапазона, а не вперед совместимости себе.

Это означает, что будущие обновления API могут нарушить совместимость со старыми версиями
само собой, просто чтобы сохранить обратную совместимость с поддерживаемыми версиями MC.

Тем не менее, следующие обновления API иногда могут привести к некоторым изменениям
в вашем коде, чтобы снова быть совместимым с более новой версией API.

Комментарии

Добавить комментарий