Skip to content

Commit fd230c7

Browse files
committed
start work on neo forge!
1 parent f5f2ee5 commit fd230c7

File tree

7 files changed

+189
-1
lines changed

7 files changed

+189
-1
lines changed

.github/workflows/publish.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,18 @@ jobs:
5454
game-versions: |
5555
>=1.15
5656
57+
- name: Upload Forge
58+
uses: Kir-Antipov/mc-publish@v3.3.0
59+
with:
60+
modrinth-id: 6nKmUVc7
61+
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
62+
modrinth-featured: true
63+
files: ${{ github.workspace }}/neoforge/build/libs/protoweaver-${{ github.event.release.tag_name }}-neoforge.jar
64+
java: 21
65+
loaders: neoforge
66+
game-versions: |
67+
>=1.20.2
68+
5769
- name: Upload Paper
5870
uses: Kir-Antipov/mc-publish@v3.3.0
5971
with:

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ protoweaver_hosts
2121
/forge/.gradle/
2222
/forge/run/
2323

24+
/neoforge/build/
25+
/neoforge/.architectury-transformer/
26+
/neoforge/.gradle/
27+
/neoforge/run/
28+
2429
/paper/build/
2530
/paper/.architectury-transformer/
2631
/paper/.gradle/

gradle.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ forge_version=1.21.5-55.0.23
1919
# https://modrinth.com/mod/proxy-compatible-forge
2020
proxy_forge_version=1.1.7
2121

22+
# NeoForge - https://projects.neoforged.net/neoforged/neoforge
23+
neoforge_version=21.5.75
24+
2225
# Paper - https://repo.papermc.io/#browse/browse:maven-public:io%2Fpapermc%2Fpaper%2Fpaper-api
2326
paper_version=1.21.3-R0.1-SNAPSHOT
2427

neoforge/build.gradle

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
plugins {
2+
id 'java-library'
3+
id 'net.neoforged.moddev' version '2.0.95'
4+
}
5+
6+
/*tasks.named('wrapper', Wrapper).configure {
7+
// Define wrapper values here so as to not have to always do so when updating gradlew.properties.
8+
// Switching this to Wrapper.DistributionType.ALL will download the full gradle sources that comes with
9+
// documentation attached on cursor hover of gradle classes and methods. However, this comes with increased
10+
// file size for Gradle. If you do switch this to ALL, run the Gradle wrapper task twice afterwards.
11+
// (Verify by checking gradle/wrapper/gradle-wrapper.properties to see if distributionUrl now points to `-all`)
12+
distributionType = Wrapper.DistributionType.BIN
13+
}*/
14+
15+
neoForge {
16+
// Specify the version of NeoForge to use.
17+
version = project.neoforge_version
18+
19+
// This line is optional. Access Transformers are automatically detected
20+
// accessTransformers = project.files('src/main/resources/META-INF/accesstransformer.cfg')
21+
22+
// Default run configurations.
23+
// These can be tweaked, removed, or duplicated as needed.
24+
runs {
25+
server {
26+
server()
27+
programArgument '--nogui'
28+
}
29+
30+
configureEach {
31+
systemProperty 'forge.logging.markers', 'REGISTRIES'
32+
logLevel = org.slf4j.event.Level.DEBUG
33+
}
34+
}
35+
36+
/* mods {
37+
// define mod <-> source bindings
38+
// these are used to tell the game which sources are for which mod
39+
// multi mod projects should define one per mod
40+
"${mod_id}" {
41+
sourceSet(sourceSets.main)
42+
}
43+
}*/
44+
}
45+
46+
// Include resources generated by data generators.
47+
sourceSets.main.resources { srcDir 'src/generated/resources' }
48+
49+
// Sets up a dependency configuration called 'localRuntime'.
50+
// This configuration should be used instead of 'runtimeOnly' to declare
51+
// a dependency that will be present for runtime testing but that is
52+
// "optional", meaning it will not be pulled by dependents of this mod.
53+
configurations {
54+
runtimeClasspath.extendsFrom localRuntime
55+
zip.exclude group: "net.fabricmc", module: "fabric-loader"
56+
}
57+
58+
dependencies {
59+
zip compileOnly(project(path: ':loader-common', configuration: 'default'))
60+
61+
// Example optional mod dependency with JEI
62+
// The JEI API is declared for compile time use, while the full JEI artifact is used at runtime
63+
// compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}"
64+
// compileOnly "mezz.jei:jei-${mc_version}-neoforge-api:${jei_version}"
65+
// We add the full version to localRuntime, not runtimeOnly, so that we do not publish a dependency on it
66+
// localRuntime "mezz.jei:jei-${mc_version}-neoforge:${jei_version}"
67+
68+
compileOnly "maven.modrinth:proxy-compatible-forge:${project.proxy_forge_version}"
69+
70+
// Example mod dependency using a mod jar from ./libs with a flat dir repository
71+
// This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar
72+
// The group id is ignored when searching -- in this case, it is "blank"
73+
// implementation "blank:coolmod-${mc_version}:${coolmod_version}"
74+
75+
// Example mod dependency using a file as dependency
76+
// implementation files("libs/coolmod-${mc_version}-${coolmod_version}.jar")
77+
78+
// Example project dependency using a sister or child project:
79+
// implementation project(":myproject")
80+
81+
// For more info:
82+
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
83+
// http://www.gradle.org/docs/current/userguide/dependency_management.html
84+
}
85+
86+
jar {
87+
archiveFileName = "protoweaver-${version}-neoforge.jar"
88+
from {
89+
exclude "architectury.common.marker"
90+
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
91+
configurations.zip.collect { it.isDirectory() ? it : zipTree(it) }
92+
}
93+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package me.mrnavastar.protoweaver.loader;
2+
3+
import me.mrnavastar.protoweaver.api.ProtoWeaver;
4+
import me.mrnavastar.protoweaver.api.protocol.velocity.VelocityAuth;
5+
import me.mrnavastar.protoweaver.core.util.ProtoConstants;
6+
import me.mrnavastar.protoweaver.core.util.ProtoLogger;
7+
import me.mrnavastar.protoweaver.loader.netty.SSLContext;
8+
import net.neoforged.fml.common.Mod;
9+
import net.neoforged.fml.event.lifecycle.FMLDedicatedServerSetupEvent;
10+
import net.neoforged.fml.loading.FMLConfig;
11+
import net.neoforged.fml.loading.FMLLoader;
12+
import org.adde0109.pcf.v1_20_2.neoforge.Config;
13+
import org.apache.logging.log4j.LogManager;
14+
import org.apache.logging.log4j.Logger;
15+
16+
import java.nio.charset.StandardCharsets;
17+
18+
19+
@Mod(ProtoConstants.PROTOWEAVER_ID)
20+
public class NeoForge implements ProtoLogger.IProtoLogger {
21+
22+
private final Logger logger = LogManager.getLogger();
23+
private boolean setup = false;
24+
25+
public NeoForge() {
26+
net.neoforged.neoforge.common.NeoForge.EVENT_BUS.addListener(this::serverStarted);
27+
}
28+
29+
private void serverStarted(FMLDedicatedServerSetupEvent event) {
30+
if (!ProtoWeaver.getLoadedProtocols().isEmpty()) setup();
31+
else ProtoWeaver.PROTOCOL_LOADED.register(protocol -> setup());
32+
}
33+
34+
private void setup() {
35+
if (setup) return;
36+
ProtoLogger.setLogger(this);
37+
SSLContext.init(FMLConfig.defaultConfigPath() + "/protoweaver");
38+
39+
// Proxy Compatible Forge support
40+
if (FMLLoader.getLoadingModList().getModFileById("proxy-compatible-forge") != null) {
41+
// Proxy Compatible Forge's config becomes available after FMLServerAboutToStartEvent
42+
VelocityAuth.setSecret(Config.config.forwardingSecret.get().getBytes(StandardCharsets.UTF_8));
43+
}
44+
setup = true;
45+
}
46+
47+
@Override
48+
public void info(String message) {
49+
logger.info("[" + ProtoConstants.PROTOWEAVER_NAME + "]: {}", message);
50+
}
51+
52+
@Override
53+
public void warn(String message) {
54+
logger.info("[" + ProtoConstants.PROTOWEAVER_NAME + "]: {}", message);
55+
}
56+
57+
@Override
58+
public void err(String message) {
59+
logger.info("[" + ProtoConstants.PROTOWEAVER_NAME + "]: {}", message);
60+
}
61+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
modLoader = "javafml"
2+
loaderVersion = "[26,)"
3+
license = "CC0-1.0"
4+
issueTrackerURL="https://github.com/MrNavaStar/ProtoWeaver/issues"
5+
6+
[[mods]]
7+
modId = "protoweaver"
8+
version = "0.debug-build"
9+
displayName = "ProtoWeaver"
10+
displayURL="https://github.com/MrNavaStar/ProtoWeaver"
11+
authors="MrNavaStar"
12+
description = "A networking library for creating custom protocols that run on the internal netty server."
13+
14+
displayTest="IGNORE_ALL_VERSION"

settings.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ pluginManagement {
88
}
99

1010
rootProject.name = 'protoweaver'
11-
include ':common', ':client', 'loader-common', ':fabric', ':forge', ':paper', ':proxy'
11+
include ':common', ':client', 'loader-common', ':fabric', ':forge', ':neoforge', ':paper', ':proxy'

0 commit comments

Comments
 (0)