Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle

name: Gradle build

on:
push:
branches: [ "master", "dev" ]
pull_request:
branches: [ "master", "dev" ]

jobs:
build:

runs-on: ubuntu-latest
permissions:
contents: read

steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'

# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0

- name: Build with Gradle Wrapper
run: ./gradlew build -PcommitHash=$(git rev-parse --short "$GITHUB_SHA")

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: '${{ github.event.repository.name }}'
path: build/libs
31 changes: 0 additions & 31 deletions .github/workflows/maven.yml

This file was deleted.

106 changes: 50 additions & 56 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,31 +1,4 @@
### Java template
# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*

### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Covers JetBrains IDEs: IntelliJ, GoLand, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
Expand All @@ -50,10 +23,6 @@ replay_pid*
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
Expand All @@ -67,41 +36,66 @@ replay_pid*
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# SonarLint plugin
.idea/sonarlint/

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests
/.idea/


# Java
# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*

# Gradle
.gradle
**/build/
!**/src/**/build/

# Ignore Gradle GUI config
gradle-app.setting

# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar

# Avoid ignore Gradle wrappper properties
!gradle-wrapper.properties

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
# Cache of project
.gradletasknamecache

.idea/*
target/*
# Eclipse Gradle plugin generated files
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
8 changes: 0 additions & 8 deletions .idea/artifacts/LoginPlugin.xml

This file was deleted.

18 changes: 0 additions & 18 deletions .idea/misc.xml

This file was deleted.

8 changes: 0 additions & 8 deletions .idea/modules.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/vcs.xml

This file was deleted.

24 changes: 24 additions & 0 deletions .run/build_release.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="[Release] Build" type="GradleRunConfiguration" factoryName="Gradle">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="build" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<DebugAllEnabled>false</DebugAllEnabled>
<RunAsTest>false</RunAsTest>
<method v="2" />
</configuration>
</component>
29 changes: 29 additions & 0 deletions .run/build_snapshot.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="[Snapshot] Build" type="GradleRunConfiguration" factoryName="Gradle">
<ExternalSystemSettings>
<option name="env">
<map>
<entry key="TEST_PLUGIN_BUILD" value="1" />
</map>
</option>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="build" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<DebugAllEnabled>false</DebugAllEnabled>
<RunAsTest>false</RunAsTest>
<method v="2" />
</configuration>
</component>
8 changes: 0 additions & 8 deletions JouTakTemplate.iml

This file was deleted.

60 changes: 47 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,52 @@
# Template Plugin для новичков с java!
# JouTak Plugin Template (Java Edition)

Что нужно сделать:
1) склонить проект себе по ssh
2) открыть в любой удобной ide(vs code | inteliji idea)
3) разобраться с расположением папочек и синтаксисом, почитать про используемые библиотеки, прописать базовую логику, которая описана в issues. (креативность поощрается)
4) собрать его с помощью Maven
5) запустить у себя на компе Purpur 1.21.4 сервер и закинуть на него этот плагин
6) подключиться со своего майна, проверить, что оно заработало
7) отправить пулл реквест обратно на гитхаб, закрыв issue
8) пингануть кого-нибудь, чтобы реквест посмотрели и приняли :)
Заготовка для плагина на JouTak (ДжоуТек) (<ins>joutak.ru</ins>)

если всё работает, то пулл реквест автоматически сбилдит такой же jarник, который будет так же работать на твоём локальном сервере.

сначала всё можно писать в один файлик, но тогда потом создай небольшую структуру. Главное - не стесняйся спрашивать!
# Перед использованием

# Полезное:
1. Отредактируйте:
- `gradle.properties` &mdash; укажите **версию** и **название** плагина, а также **ссылку на репозиторий** с вашим плагином
- `src/main/java/ru/joutak/` &mdash; переименуйте **основной класс** под название вашего плагина
- `src/main/resources/plugin.yml` &mdash; укажите **правильный путь** до основного класса плагина и укажите себя как **автора**
- `gradle/libs.versions.toml` &mdash; измените **версии** **JDK**, **ядра** и **других библиотек** по необходимости
- Укажите **полный путь до тестового сервера** в переменной окружения системы `SERVER_PATH`

> [!TIP]
> Указав путь до тестового сервера, можно собирать плагин с помощью конфигурации `[Snapshot] Build`, тогда jar-архив с вашим плагином сразу будет создаваться в нужной папке автоматически.


# Сборка плагина

1. Открыть проект в **IntelliJ IDEA**
2. Нажать кнопку `Run` справа сверху для сборки:
- `[Snapshot]` создает архив с плагином в папке `plugins/` тестового сервера (путь до которого нужно указать в переменной окружения `SERVER_PATH`)
- `[Release]` создает архив с плагином в папке `build/` проекта


# Перед началом выполнения тестового задания
> [!NOTE]
> Данный параграф предназначен для тех, кто захотел попробовать себя в роли разработчка плагинов для Minecraft серверов в составе команды JouTak.

Базовое описание, что нужно сделать:
1) Сделать собственный **fork** данного репозитория
2) Склонировать созданный репозиторий себе по **SSH** (`git clone`)
3) Открыть проект в любой удобной для вас **IDE**
> [!TIP]
> Рекомендуем использовать **IntelliJ IDEA**, так как в ней есть полноценная поддержка **Java** со всеми фишками и плюшками, но выбор за вами
4) Разобраться с расположением папочек и синтаксисом **Java**, затем прописать базовую логику, которая была описана в вашем задании в issues (Любая креативность поощряется)
5) Собрать плагин с помощью **Gradle**
> [!TIP]
> Конфиги уже заранее прописаны (один для тестовых целей, второй для полноценного релиза), вам самим ничего прописывать не надо. Для тестов лучше использовать `[Snapshot]` версию, чтобы каждый раз не перекидывать вручную плагин в папку сервера, главное не забудьте создать переменную окружения `SERVER_PATH`!
6) Запустить на своем компьютере локальный [**Purpur**](https://purpurmc.org) сервер
7) Подключиться на свой локальный сервер и проверить, что плагин работает исправно
8) Отправить **pull request** на **GitHub** и дождаться ответа
> [!TIP]
> Если долго никто не отвечает, то можно пингануть кого-нибудь, чтобы реквест отсмотрели и приняли :)

Если плагин написан без базовых ошибок (синтаксических и т. п.), то на **GitHub**'е автоматически соберется такой же jar-архив, который будет так же работать на твоем локальном сервере.

Поначалу всё можно писать в основном классе, но потом все вещи по типу команд, listener'ов и различные event'ы нужно выделить в отдельные классы и пакеты.

> [!IMPORTANT]
> Главное, если есть какие-то вопросы - не стесняйся спрашивать!
Loading
Loading