diff --git a/bootstrap/fabric/.gitignore b/bootstrap/fabric/.gitignore
deleted file mode 100644
index 06b9cccc4..000000000
--- a/bootstrap/fabric/.gitignore
+++ /dev/null
@@ -1,240 +0,0 @@
-
-# Created by https://www.gitignore.io/api/git,java,maven,eclipse,netbeans,jetbrains+all,visualstudiocode
-# Edit at https://www.gitignore.io/gitignore?templates=git,java,maven,eclipse,netbeans,jetbrains+all,visualstudiocode
-
-### Eclipse ###
-.metadata
-bin/
-tmp/
-*.tmp
-*.bak
-*.swp
-*~.nib
-local.properties
-.settings/
-.loadpath
-.recommenders
-
-# External tool builders
-.externalToolBuilders/
-
-# Locally stored "Eclipse launch configurations"
-*.launch
-
-# PyDev specific (Python IDE for Eclipse)
-*.pydevproject
-
-# CDT-specific (C/C++ Development Tooling)
-.cproject
-
-# CDT- autotools
-.autotools
-
-# Java annotation processor (APT)
-.factorypath
-
-# PDT-specific (PHP Development Tools)
-.buildpath
-
-# sbteclipse plugin
-.target
-
-# Tern plugin
-.tern-project
-
-# TeXlipse plugin
-.texlipse
-
-# STS (Spring Tool Suite)
-.springBeans
-
-# Code Recommenders
-.recommenders/
-
-# Annotation Processing
-.apt_generated/
-.apt_generated_test/
-
-# Scala IDE specific (Scala & Java development for Eclipse)
-.cache-main
-.scala_dependencies
-.worksheet
-
-# Uncomment this line if you wish to ignore the project description file.
-# Typically, this file would be tracked if it contains build/dependency configurations:
-.project
-
-### Eclipse Patch ###
-# Spring Boot Tooling
-.sts4-cache/
-
-### Git ###
-# Created by git for backups. To disable backups in Git:
-# $ git config --global mergetool.keepBackup false
-*.orig
-
-# Created by git when using merge tools for conflicts
-*.BACKUP.*
-*.BASE.*
-*.LOCAL.*
-*.REMOTE.*
-*_BACKUP_*.txt
-*_BASE_*.txt
-*_LOCAL_*.txt
-*_REMOTE_*.txt
-
-### 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*
-
-### JetBrains+all ###
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-/.gradle/
-
-# 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
-# auto-import.
-# .idea/artifacts
-# .idea/compiler.xml
-# .idea/jarRepositories.xml
-# .idea/modules.xml
-# .idea/*.iml
-# .idea/modules
-# *.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
-
-# 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
-
-# Android studio 3.1+ serialized cache file
-.idea/caches/build_file_checksums.ser
-
-### JetBrains+all Patch ###
-# Ignores the whole .idea folder and all .iml files
-# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
-
-.idea/
-
-# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
-
-*.iml
-modules.xml
-.idea/misc.xml
-*.ipr
-
-# Sonarlint plugin
-.idea/sonarlint
-
-### Maven ###
-target/
-pom.xml.tag
-pom.xml.releaseBackup
-pom.xml.versionsBackup
-pom.xml.next
-release.properties
-dependency-reduced-pom.xml
-buildNumber.properties
-.mvn/timing.properties
-# https://github.com/takari/maven-wrapper#usage-without-binary-jar
-.mvn/wrapper/maven-wrapper.jar
-
-### NetBeans ###
-**/nbproject/private/
-**/nbproject/Makefile-*.mk
-**/nbproject/Package-*.bash
-build/
-nbbuild/
-dist/
-nbdist/
-.nb-gradle/
-
-### VisualStudioCode ###
-# Note: Manually edited to remove settings files
-.vscode/*
-# !.vscode/settings.json
-# !.vscode/tasks.json
-# !.vscode/launch.json
-# !.vscode/extensions.json
-# *.code-workspace
-
-### VisualStudioCode Patch ###
-# Ignore all local history of files
-.history
-
-# End of https://www.gitignore.io/api/git,java,maven,eclipse,netbeans,jetbrains+all,visualstudiocode
-
-### Geyser ###
-run/
\ No newline at end of file
diff --git a/bootstrap/fabric/.idea/copyright/Geyser.xml b/bootstrap/fabric/.idea/copyright/Geyser.xml
deleted file mode 100644
index bdffbbbd6..000000000
--- a/bootstrap/fabric/.idea/copyright/Geyser.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/bootstrap/fabric/.idea/copyright/profiles_settings.xml b/bootstrap/fabric/.idea/copyright/profiles_settings.xml
deleted file mode 100644
index f2d5911c9..000000000
--- a/bootstrap/fabric/.idea/copyright/profiles_settings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/bootstrap/fabric/Jenkinsfile b/bootstrap/fabric/Jenkinsfile
deleted file mode 100644
index c3632a8ce..000000000
--- a/bootstrap/fabric/Jenkinsfile
+++ /dev/null
@@ -1,105 +0,0 @@
-pipeline {
- agent any
- tools {
- gradle 'Gradle 7'
- jdk 'Java 17'
- }
-
- parameters {
- booleanParam(defaultValue: false, description: 'Skip Discord notification', name: 'SKIP_DISCORD')
- }
-
- options {
- buildDiscarder(logRotator(artifactNumToKeepStr: '20'))
- }
-
- stages {
- stage ('Build') {
- steps {
- sh './gradlew clean build --refresh-dependencies'
- }
- post {
- success {
- archiveArtifacts artifacts: 'build/libs/*.jar', excludes: 'build/libs/Geyser-Fabric-*-sources*.jar,build/libs/Geyser-Fabric-*-all*.jar', fingerprint: true
- }
- }
- }
-
- stage ('Deploy') {
- when {
- anyOf {
- branch "java-1.18"
- }
- }
-
- steps {
- rtGradleDeployer(
- id: "GRADLE_DEPLOYER",
- serverId: "opencollab-artifactory",
- releaseRepo: "maven-releases",
- snapshotRepo: "maven-snapshots"
- )
- rtGradleResolver(
- id: "GRADLE_RESOLVER",
- serverId: "opencollab-artifactory"
- )
- rtGradleRun (
- usesPlugin: false,
- tool: 'Gradle 7',
- rootDir: "",
- buildFile: 'build.gradle',
- tasks: 'build artifactoryPublish',
- deployerId: "GRADLE_DEPLOYER",
- resolverId: "GRADLE_RESOLVER"
- )
- rtPublishBuildInfo(
- serverId: "opencollab-artifactory"
- )
- }
- }
- }
-
- post {
- always {
- script {
- def changeLogSets = currentBuild.changeSets
- def message = "**Changes:**"
-
- if (changeLogSets.size() == 0) {
- message += "\n*No changes.*"
- } else {
- def repositoryUrl = scm.userRemoteConfigs[0].url.replace(".git", "")
- def count = 0;
- def extra = 0;
- for (int i = 0; i < changeLogSets.size(); i++) {
- def entries = changeLogSets[i].items
- for (int j = 0; j < entries.length; j++) {
- if (count <= 10) {
- def entry = entries[j]
- def commitId = entry.commitId.substring(0, 6)
- message += "\n - [`${commitId}`](${repositoryUrl}/commit/${entry.commitId}) ${entry.msg}"
- count++
- } else {
- extra++;
- }
- }
- }
-
- if (extra != 0) {
- message += "\n - ${extra} more commits"
- }
- }
-
- env.changes = message
- }
- deleteDir()
- script {
- if(!params.SKIP_DISCORD) {
- withCredentials([string(credentialsId: 'geyser-discord-webhook', variable: 'DISCORD_WEBHOOK')]) {
- discordSend description: "**Build:** [${currentBuild.id}](${env.BUILD_URL})\n**Status:** [${currentBuild.currentResult}](${env.BUILD_URL})\n${changes}\n\n[**Artifacts on Jenkins**](https://ci.nukkitx.com/job/Geyser)", footer: 'Cloudburst Jenkins', link: env.BUILD_URL, successful: currentBuild.resultIsBetterOrEqualTo('SUCCESS'), title: "${env.JOB_NAME} #${currentBuild.id}", webhookURL: DISCORD_WEBHOOK
- }
- }
- }
- }
- }
-}
diff --git a/bootstrap/fabric/LICENSE b/bootstrap/fabric/LICENSE
deleted file mode 100644
index d8ee99620..000000000
--- a/bootstrap/fabric/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2020 GeyserMC
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/bootstrap/fabric/README.md b/bootstrap/fabric/README.md
deleted file mode 100644
index 883d03289..000000000
--- a/bootstrap/fabric/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Geyser-Fabric
-
-[![forthebadge made-with-java](https://forthebadge.com/images/badges/made-with-java.svg)](https://java.com/)
-
-Download: [![Build Status](https://ci.nukkitx.com/job/GeyserMC/job/Geyser-Fabric/job/master/badge/icon)](https://ci.opencollab.dev//job/GeyserMC/job/Geyser-Fabric/job/master/)
-
-[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
-[![Discord](https://img.shields.io/discord/613163671870242838.svg?color=%237289da&label=discord)](http://discord.geysermc.org/)
-
-Geyser-Fabric is Geyser specifically built for the Fabric modding platform. For more details, see [here](https://github.com/GeyserMC/Geyser/wiki/Geyser-Fabric).
diff --git a/bootstrap/fabric/build.gradle b/bootstrap/fabric/build.gradle
deleted file mode 100644
index 2ea9fd686..000000000
--- a/bootstrap/fabric/build.gradle
+++ /dev/null
@@ -1,120 +0,0 @@
-plugins {
- id 'fabric-loom' version '0.12-SNAPSHOT'
- id 'maven-publish'
- id 'com.github.johnrengelman.shadow' version '7.0.0'
- id 'java'
-}
-
-apply plugin: 'com.github.johnrengelman.shadow'
-apply plugin: 'java'
-
-sourceCompatibility = JavaVersion.VERSION_17
-targetCompatibility = JavaVersion.VERSION_17
-
-archivesBaseName = project.archives_base_name
-version = project.mod_version
-group = project.maven_group
-
-dependencies {
- //to change the versions see the gradle.properties file
- minecraft "com.mojang:minecraft:${project.minecraft_version}"
- mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
- modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
-
- // Fabric API. This is technically optional, but you probably want it anyway.
- modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
-
- // PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
- // You may need to force-disable transitiveness on them.
-
- api "org.geysermc.geyser:core:${project.mod_version}"
- shadow("org.geysermc.geyser:core:${project.mod_version}") {
- exclude group: 'com.google.guava', module: "guava"
- exclude group: 'com.google.code.gson', module: "gson"
- exclude group: 'org.slf4j'
- exclude group: 'com.nukkitx.fastutil'
- exclude group: 'io.netty.incubator'
- }
-}
-
-repositories {
- mavenLocal()
-
- maven {
- url = uri('https://repo.opencollab.dev/maven-releases/')
- }
-
- maven {
- url = uri('https://repo.opencollab.dev/maven-snapshots/')
- }
-
- maven {
- url = uri('https://jitpack.io')
- }
-
- maven {
- url = uri('https://oss.sonatype.org/content/repositories/snapshots/')
- }
-}
-
-processResources {
- inputs.property "version", project.version
-
- filesMatching("fabric.mod.json") {
- expand "version": project.version
- }
-}
-
-// ensure that the encoding is set to UTF-8, no matter what the system default is
-// this fixes some edge cases with special characters not displaying correctly
-// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
-tasks.withType(JavaCompile) {
- options.encoding = "UTF-8"
-}
-
-// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
-// if it is present.
-// If you remove this task, sources will not be generated.
-task sourcesJar(type: Jar, dependsOn: classes) {
- classifier = "sources"
- from sourceSets.main.allSource
-}
-
-shadowJar {
- configurations = [project.configurations.shadow]
- relocate("org.objectweb.asm", "org.geysermc.relocate.asm")
- relocate("org.yaml", "org.geysermc.relocate.yaml") // https://github.com/CardboardPowered/cardboard/issues/139
- relocate("com.fasterxml.jackson", "org.geysermc.relocate.jackson")
- relocate("net.kyori", "org.geysermc.relocate.kyori")
-}
-
-jar {
- from "LICENSE"
-}
-
-remapJar {
- dependsOn(shadowJar)
- input = tasks.shadowJar.archiveFile
- archiveName = "Geyser-Fabric.jar"
-}
-
-// configure the maven publication
-publishing {
- publications {
- mavenJava(MavenPublication) {
- // add all the jars that should be included when publishing to maven
- artifact(remapJar) {
- builtBy remapJar
- }
- artifact(sourcesJar) {
- builtBy remapSourcesJar
- }
- }
- }
-
- // select the repositories you want to publish to
- repositories {
- // uncomment to publish to the local maven
- mavenLocal()
- }
-}
diff --git a/bootstrap/fabric/build.gradle.kts b/bootstrap/fabric/build.gradle.kts
new file mode 100644
index 000000000..ef526aa00
--- /dev/null
+++ b/bootstrap/fabric/build.gradle.kts
@@ -0,0 +1,95 @@
+plugins {
+ id("fabric-loom") version "0.12-SNAPSHOT"
+ id("maven-publish")
+ id("com.github.johnrengelman.shadow")
+ id("java")
+}
+
+java {
+ targetCompatibility = JavaVersion.VERSION_17
+ sourceCompatibility = JavaVersion.VERSION_17
+}
+
+//archivesBaseName = project.archives_base_name
+//version = project.mod_version
+//group = project.maven_group
+
+val minecraftVersion = project.property("minecraft_version") as String
+val yarnVersion = project.property("yarn_mappings") as String
+val loaderVersion = project.property("loader_version") as String
+val fabricVersion = project.property("fabric_version") as String
+
+dependencies {
+ //to change the versions see the gradle.properties file
+ minecraft("com.mojang:minecraft:$minecraftVersion")
+ mappings("net.fabricmc:yarn:$yarnVersion:v2")
+ modImplementation("net.fabricmc:fabric-loader:$loaderVersion")
+
+ // Fabric API. This is technically optional, but you probably want it anyway.
+ modImplementation("net.fabricmc.fabric-api:fabric-api:$fabricVersion")
+
+ // PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
+ // You may need to force-disable transitiveness on them.
+
+ api(projects.core)
+ shadow(projects.core) {
+ exclude(group = "com.google.guava", module = "guava")
+ exclude(group = "com.google.code.gson", module = "gson")
+ exclude(group = "org.slf4j")
+ exclude(group = "com.nukkitx.fastutil")
+ exclude(group = "io.netty.incubator")
+ }
+}
+
+repositories {
+ mavenLocal()
+ maven("https://repo.opencollab.dev/maven-releases/")
+ maven("https://repo.opencollab.dev/maven-snapshots/")
+ maven("https://jitpack.io")
+ maven("https://oss.sonatype.org/content/repositories/snapshots/")
+ maven("https://s01.oss.sonatype.org/content/repositories/snapshots/")
+}
+
+tasks {
+ processResources {
+// inputs.property "version", project.version
+//
+// filesMatching("fabric.mod.json") {
+// expand "version": project.version
+// }
+ }
+
+ // ensure that the encoding is set to UTF-8, no matter what the system default is
+ // this fixes some edge cases with special characters not displaying correctly
+ // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
+ compileJava {
+ options.encoding = "UTF-8"
+ }
+
+ // Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
+ // if it is present.
+ // If you remove this task, sources will not be generated.
+ sourcesJar {
+ archiveClassifier.set("sources")
+ from(sourceSets.main.get().allSource)
+ }
+
+ shadowJar {
+ relocate("org.objectweb.asm", "org.geysermc.relocate.asm")
+ relocate("org.yaml", "org.geysermc.relocate.yaml") // https://github.com/CardboardPowered/cardboard/issues/139
+ relocate("com.fasterxml.jackson", "org.geysermc.relocate.jackson")
+ relocate("net.kyori", "org.geysermc.relocate.kyori")
+ }
+
+ jar {
+ from("LICENSE")
+ }
+
+ remapJar {
+ dependsOn(shadowJar)
+ inputs.file(shadowJar.get().archiveFile)
+ archiveBaseName.set("Geyser-Fabric")
+ archiveClassifier.set("")
+ archiveVersion.set("")
+ }
+}
\ No newline at end of file
diff --git a/bootstrap/fabric/gradle.properties b/bootstrap/fabric/gradle.properties
deleted file mode 100644
index 341d6bbe4..000000000
--- a/bootstrap/fabric/gradle.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-# Done to increase the memory available to gradle.
-org.gradle.jvmargs=-Xmx2G
-# Fabric Properties
-# check these on https://modmuss50.me/fabric.html
-minecraft_version=1.19.1
-yarn_mappings=1.19.1+build.1
-loader_version=0.14.8
-# Mod Properties
-mod_version=2.1.0-SNAPSHOT
-maven_group=org.geysermc.platform
-archives_base_name=Geyser-Fabric
-# Dependencies
-# check this on https://modmuss50.me/fabric.html
-fabric_version=0.58.5+1.19.1
diff --git a/bootstrap/fabric/gradle/wrapper/gradle-wrapper.jar b/bootstrap/fabric/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 7454180f2..000000000
Binary files a/bootstrap/fabric/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/bootstrap/fabric/gradle/wrapper/gradle-wrapper.properties b/bootstrap/fabric/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index e750102e0..000000000
--- a/bootstrap/fabric/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/bootstrap/fabric/gradlew b/bootstrap/fabric/gradlew
deleted file mode 100755
index 1b6c78733..000000000
--- a/bootstrap/fabric/gradlew
+++ /dev/null
@@ -1,234 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright © 2015-2021 the original authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-##############################################################################
-#
-# Gradle start up script for POSIX generated by Gradle.
-#
-# Important for running:
-#
-# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
-# noncompliant, but you have some other compliant shell such as ksh or
-# bash, then to run this script, type that shell name before the whole
-# command line, like:
-#
-# ksh Gradle
-#
-# Busybox and similar reduced shells will NOT work, because this script
-# requires all of these POSIX shell features:
-# * functions;
-# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
-# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
-# * compound commands having a testable exit status, especially «case»;
-# * various built-in commands including «command», «set», and «ulimit».
-#
-# Important for patching:
-#
-# (2) This script targets any POSIX shell, so it avoids extensions provided
-# by Bash, Ksh, etc; in particular arrays are avoided.
-#
-# The "traditional" practice of packing multiple parameters into a
-# space-separated string is a well documented source of bugs and security
-# problems, so this is (mostly) avoided, by progressively accumulating
-# options in "$@", and eventually passing that to Java.
-#
-# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
-# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
-# see the in-line comments for details.
-#
-# There are tweaks for specific operating systems such as AIX, CygWin,
-# Darwin, MinGW, and NonStop.
-#
-# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
-# within the Gradle project.
-#
-# You can find Gradle at https://github.com/gradle/gradle/.
-#
-##############################################################################
-
-# Attempt to set APP_HOME
-
-# Resolve links: $0 may be a link
-app_path=$0
-
-# Need this for daisy-chained symlinks.
-while
- APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
- [ -h "$app_path" ]
-do
- ls=$( ls -ld "$app_path" )
- link=${ls#*' -> '}
- case $link in #(
- /*) app_path=$link ;; #(
- *) app_path=$APP_HOME$link ;;
- esac
-done
-
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-APP_NAME="Gradle"
-APP_BASE_NAME=${0##*/}
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD=maximum
-
-warn () {
- echo "$*"
-} >&2
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-} >&2
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "$( uname )" in #(
- CYGWIN* ) cygwin=true ;; #(
- Darwin* ) darwin=true ;; #(
- MSYS* | MINGW* ) msys=true ;; #(
- NONSTOP* ) nonstop=true ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD=$JAVA_HOME/jre/sh/java
- else
- JAVACMD=$JAVA_HOME/bin/java
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD=java
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
- case $MAX_FD in #(
- max*)
- MAX_FD=$( ulimit -H -n ) ||
- warn "Could not query maximum file descriptor limit"
- esac
- case $MAX_FD in #(
- '' | soft) :;; #(
- *)
- ulimit -n "$MAX_FD" ||
- warn "Could not set maximum file descriptor limit to $MAX_FD"
- esac
-fi
-
-# Collect all arguments for the java command, stacking in reverse order:
-# * args from the command line
-# * the main class name
-# * -classpath
-# * -D...appname settings
-# * --module-path (only if needed)
-# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if "$cygwin" || "$msys" ; then
- APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
- CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
-
- JAVACMD=$( cygpath --unix "$JAVACMD" )
-
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- for arg do
- if
- case $arg in #(
- -*) false ;; # don't mess with options #(
- /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
- [ -e "$t" ] ;; #(
- *) false ;;
- esac
- then
- arg=$( cygpath --path --ignore --mixed "$arg" )
- fi
- # Roll the args list around exactly as many times as the number of
- # args, so each arg winds up back in the position where it started, but
- # possibly modified.
- #
- # NB: a `for` loop captures its iteration list before it begins, so
- # changing the positional parameters here affects neither the number of
- # iterations, nor the values presented in `arg`.
- shift # remove old arg
- set -- "$@" "$arg" # push replacement arg
- done
-fi
-
-# Collect all arguments for the java command;
-# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
-# shell script including quotes and variable substitutions, so put them in
-# double quotes to make sure that they get re-expanded; and
-# * put everything else in single quotes, so that it's not re-expanded.
-
-set -- \
- "-Dorg.gradle.appname=$APP_BASE_NAME" \
- -classpath "$CLASSPATH" \
- org.gradle.wrapper.GradleWrapperMain \
- "$@"
-
-# Use "xargs" to parse quoted args.
-#
-# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
-#
-# In Bash we could simply go:
-#
-# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
-# set -- "${ARGS[@]}" "$@"
-#
-# but POSIX shell has neither arrays nor command substitution, so instead we
-# post-process each arg (as a line of input to sed) to backslash-escape any
-# character that might be a shell metacharacter, then use eval to reverse
-# that process (while maintaining the separation between arguments), and wrap
-# the whole thing up as a single "set" statement.
-#
-# This will of course break if any of these variables contains a newline or
-# an unmatched quote.
-#
-
-eval "set -- $(
- printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
- xargs -n1 |
- sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
- tr '\n' ' '
- )" '"$@"'
-
-exec "$JAVACMD" "$@"
diff --git a/bootstrap/fabric/gradlew.bat b/bootstrap/fabric/gradlew.bat
deleted file mode 100644
index ac1b06f93..000000000
--- a/bootstrap/fabric/gradlew.bat
+++ /dev/null
@@ -1,89 +0,0 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/bootstrap/fabric/settings.gradle b/bootstrap/fabric/settings.gradle
deleted file mode 100644
index 5b60df3d2..000000000
--- a/bootstrap/fabric/settings.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-pluginManagement {
- repositories {
- jcenter()
- maven {
- name = 'Fabric'
- url = 'https://maven.fabricmc.net/'
- }
- gradlePluginPortal()
- }
-}
diff --git a/bootstrap/spigot/build.gradle.kts b/bootstrap/spigot/build.gradle.kts
index 31e68ed92..b5ef4e69e 100644
--- a/bootstrap/spigot/build.gradle.kts
+++ b/bootstrap/spigot/build.gradle.kts
@@ -1,8 +1,3 @@
-val paperVersion = "1.19-R0.1-SNAPSHOT"
-val viaVersion = "4.0.0"
-val adaptersVersion = "1.5-SNAPSHOT"
-val commodoreVersion = "2.2"
-
dependencies {
api(projects.core)
@@ -34,7 +29,7 @@ platformRelocate("me.lucko.commodore")
platformRelocate("io.netty.channel.kqueue")
// These dependencies are already present on the platform
-provided("com.viaversion", "viaversion", viaVersion)
+provided(libs.viaversion)
application {
mainClass.set("org.geysermc.geyser.platform.spigot.GeyserSpigotMain")
diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts
index 25cbfe9de..6f4647c0f 100644
--- a/build-logic/build.gradle.kts
+++ b/build-logic/build.gradle.kts
@@ -11,7 +11,16 @@ repositories {
dependencies {
implementation("net.kyori", "indra-common", "2.0.6")
implementation("org.jfrog.buildinfo", "build-info-extractor-gradle", "4.26.1")
- implementation("gradle.plugin.com.github.johnrengelman", "shadow", "7.1.1")
+ implementation("gradle.plugin.com.github.johnrengelman", "shadow", "7.1.2") {
+ exclude("org.ow2.asm", "*")
+ }
+
+ // Within the gradle plugin classpath, there is a version conflict between loom and some other
+ // plugin for databind. This fixes it: minimum 2.13.2 is required by loom.
+ implementation("com.fasterxml.jackson.core:jackson-databind:2.13.3")
+
+ // Use a newer version of ObjectWeb ASM than the one provided by loom.
+ implementation("org.ow2.asm:asm-commons:9.4")
}
tasks.withType {
diff --git a/gradle.properties b/gradle.properties
index 8f6ac8e85..35cb21537 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,6 +1,24 @@
+# Gradle settings
+org.gradle.jvmargs=-Xmx4G
+org.gradle.configureondemand=true
+org.gradle.caching=true
+org.gradle.parallel=true
+
group=org.geysermc
version=2.1.0-SNAPSHOT
org.gradle.caching=true
org.gradle.parallel=true
-org.gradle.vfs.watch=false
\ No newline at end of file
+org.gradle.vfs.watch=false
+
+# Fabric Properties
+# check these on https://modmuss50.me/fabric.html
+minecraft_version=1.19.1
+yarn_mappings=1.19.1+build.1
+loader_version=0.14.8
+# Mod Properties
+maven_group=org.geysermc.platform
+archives_base_name=Geyser-Fabric
+# Dependencies
+# check this on https://modmuss50.me/fabric.html
+fabric_version=0.58.5+1.19.1
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 28b687f9b..bf4688d7f 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -79,6 +79,7 @@ raknet = { group = "com.nukkitx.network", name = "raknet", version.ref = "raknet
sponge-api = { group = "org.spongepowered", name = "spongeapi", version.ref = "sponge" }
terminalconsoleappender = { group = "net.minecrell", name = "terminalconsoleappender", version.ref = "terminalconsoleappender" }
velocity-api = { group = "com.velocitypowered", name = "velocity-api", version.ref = "velocity" }
+viaversion = { group = "com.viaversion", name = "viaversion", version.ref = "viaversion" }
websocket = { group = "org.java-websocket", name = "Java-WebSocket", version.ref = "websocket" }
[bundles]
diff --git a/settings.gradle.kts b/settings.gradle.kts
index f6d13ad0d..b61fefc31 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,7 +1,7 @@
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
dependencyResolutionManagement {
- repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+// repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
// Floodgate, Cumulus etc.
maven("https://repo.opencollab.dev/main")
@@ -47,6 +47,7 @@ dependencyResolutionManagement {
pluginManagement {
repositories {
gradlePluginPortal()
+ maven("https://maven.fabricmc.net/")
}
plugins {
id("net.kyori.blossom") version "1.2.0"
@@ -62,6 +63,7 @@ include(":ap")
include(":api")
include(":geyser-api")
include(":bungeecord")
+include(":fabric")
include(":spigot")
include(":sponge")
include(":standalone")
@@ -73,6 +75,7 @@ include(":core")
project(":api").projectDir = file("api/base")
project(":geyser-api").projectDir = file("api/geyser")
project(":bungeecord").projectDir = file("bootstrap/bungeecord")
+project(":fabric").projectDir = file("bootstrap/fabric")
project(":spigot").projectDir = file("bootstrap/spigot")
project(":sponge").projectDir = file("bootstrap/sponge")
project(":standalone").projectDir = file("bootstrap/standalone")