Skip to content

Commit ddf46e3

Browse files
committedJan 14, 2025·
Add first build of Forge 1.21.4
1 parent 3c0be81 commit ddf46e3

19 files changed

+3605
-10
lines changed
 

‎forge-1.21.4/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build/

‎forge-1.21.4/build.gradle

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
buildscript {
2+
repositories {
3+
maven { url = 'https://files.minecraftforge.net/maven' }
4+
jcenter()
5+
mavenCentral()
6+
}
7+
dependencies {
8+
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '[6.0.24,6.2)', changing: true
9+
}
10+
}
11+
apply plugin: 'net.minecraftforge.gradle'
12+
//apply plugin: 'com.github.johnrengelman.shadow'
13+
apply plugin: 'eclipse'
14+
15+
eclipse {
16+
project {
17+
name = "Dynmap(Forge-1.21.4)"
18+
}
19+
}
20+
21+
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(21) // Need this here so eclipse task generates correctly.
22+
23+
println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
24+
25+
ext.buildNumber = System.getenv().BUILD_NUMBER ?: "Dev"
26+
27+
minecraft {
28+
mappings channel: 'official', version: '1.21.4'
29+
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
30+
reobf = false
31+
copyIdeResources = true
32+
runs {
33+
server {
34+
workingDirectory project.file('run').canonicalPath
35+
}
36+
}
37+
}
38+
39+
project.archivesBaseName = "${project.archivesBaseName}-forge-1.21.4"
40+
41+
dependencies {
42+
implementation project(path: ":DynmapCore", configuration: "shadow")
43+
implementation project(path: ':DynmapCoreAPI')
44+
45+
minecraft 'net.minecraftforge:forge:1.21.4-54.0.17'
46+
}
47+
48+
processResources
49+
{
50+
filesMatching('META-INF/mods.toml') {
51+
// replace version and mcversion
52+
expand(
53+
version: project.version + '-' + project.ext.buildNumber,
54+
mcversion: "1.21.4"
55+
)
56+
}
57+
}
58+
59+
shadowJar {
60+
dependencies {
61+
include(dependency(':DynmapCore'))
62+
include(dependency("commons-codec:commons-codec:"))
63+
exclude("META-INF/maven/**")
64+
exclude("META-INF/services/**")
65+
}
66+
relocate('org.apache.commons.codec', 'org.dynmap.forge_1_21_4.commons.codec')
67+
68+
archiveBaseName = "Dynmap"
69+
archiveClassifier = "forge-1.21.4"
70+
destinationDirectory = file '../target'
71+
}
72+
73+
shadowJar.doLast {
74+
task ->
75+
ant.checksum file: task.archivePath
76+
}
77+
78+
build.dependsOn(shadowJar)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.dynmap.forge_1_21_4;
2+
3+
public class ClientProxy extends Proxy {
4+
public ClientProxy() {
5+
}
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
package org.dynmap.forge_1_21_4;
2+
3+
import java.io.File;
4+
5+
import org.apache.commons.lang3.tuple.Pair;
6+
import org.dynmap.DynmapCommonAPI;
7+
import org.dynmap.DynmapCommonAPIListener;
8+
import org.dynmap.Log;
9+
import org.dynmap.forge_1_21_4.DynmapPlugin.OurLog;
10+
11+
import net.minecraft.server.MinecraftServer;
12+
import net.minecraftforge.fml.common.Mod;
13+
import net.minecraftforge.common.MinecraftForge;
14+
import net.minecraftforge.event.server.ServerAboutToStartEvent;
15+
import net.minecraftforge.event.server.ServerStartedEvent;
16+
import net.minecraftforge.event.server.ServerStartingEvent;
17+
import net.minecraftforge.event.server.ServerStoppingEvent;
18+
import net.minecraftforge.eventbus.api.SubscribeEvent;
19+
import net.minecraftforge.fml.DistExecutor;
20+
import net.minecraftforge.fml.IExtensionPoint;
21+
import net.minecraftforge.fml.ModList;
22+
import net.minecraftforge.fml.ModLoadingContext;
23+
import net.minecraftforge.fml.StartupMessageManager;
24+
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
25+
import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent;
26+
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
27+
28+
@Mod("dynmap")
29+
public class DynmapMod
30+
{
31+
// The instance of your mod that Forge uses.
32+
public static DynmapMod instance;
33+
34+
// Says where the client and server 'proxy' code is loaded.
35+
public static Proxy proxy = DistExecutor.runForDist(() -> ClientProxy::new, () -> Proxy::new);
36+
37+
public static DynmapPlugin plugin;
38+
public static File jarfile;
39+
public static String ver;
40+
public static boolean useforcedchunks;
41+
42+
public class APICallback extends DynmapCommonAPIListener {
43+
@Override
44+
public void apiListenerAdded() {
45+
if(plugin == null) {
46+
plugin = proxy.startServer(server);
47+
}
48+
}
49+
@Override
50+
public void apiEnabled(DynmapCommonAPI api) {
51+
}
52+
}
53+
54+
//TODO
55+
//public class LoadingCallback implements net.minecraftforge.common.ForgeChunkManager.LoadingCallback {
56+
// @Override
57+
// public void ticketsLoaded(List<Ticket> tickets, World world) {
58+
// if(tickets.size() > 0) {
59+
// DynmapPlugin.setBusy(world, tickets.get(0));
60+
// for(int i = 1; i < tickets.size(); i++) {
61+
// ForgeChunkManager.releaseTicket(tickets.get(i));
62+
// }
63+
// }
64+
// }
65+
//}
66+
67+
public DynmapMod() {
68+
instance = this;
69+
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
70+
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::init);
71+
72+
MinecraftForge.EVENT_BUS.register(this);
73+
74+
ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest.class,
75+
()->new IExtensionPoint.DisplayTest(()->IExtensionPoint.DisplayTest.IGNORESERVERONLY, (remote, isServer)-> true));
76+
77+
Log.setLogger(new OurLog());
78+
org.dynmap.modsupport.ModSupportImpl.init();
79+
}
80+
81+
public void setup(final FMLCommonSetupEvent event)
82+
{
83+
//TOOO
84+
jarfile = ModList.get().getModFileById("dynmap").getFile().getFilePath().toFile();
85+
86+
ver = ModList.get().getModContainerById("dynmap").get().getModInfo().getVersion().toString();
87+
88+
//// Load configuration file - use suggested (config/WesterosBlocks.cfg)
89+
//Configuration cfg = new Configuration(event.getSuggestedConfigurationFile());
90+
//try {
91+
// cfg.load();
92+
//
93+
// useforcedchunks = cfg.get("Settings", "UseForcedChunks", true).getBoolean(true);
94+
//}
95+
//finally
96+
//{
97+
// cfg.save();
98+
//}
99+
}
100+
101+
public void init(FMLLoadCompleteEvent event)
102+
{
103+
/* Set up for chunk loading notice from chunk manager */
104+
//TODO
105+
//if(useforcedchunks) {
106+
// ForgeChunkManager.setForcedChunkLoadingCallback(DynmapMod.instance, new LoadingCallback());
107+
//}
108+
//else {
109+
// Log.info("[Dynmap] World loading using forced chunks is disabled");
110+
//}
111+
}
112+
113+
private MinecraftServer server;
114+
115+
@SubscribeEvent
116+
public void onServerStarting(ServerAboutToStartEvent event) {
117+
server = event.getServer();
118+
if(plugin == null)
119+
plugin = proxy.startServer(server);
120+
plugin.onStarting(server.getCommands().getDispatcher());
121+
}
122+
123+
@SubscribeEvent
124+
public void onServerStarted(ServerStartedEvent event) {
125+
DynmapCommonAPIListener.register(new APICallback());
126+
plugin.serverStarted();
127+
}
128+
129+
@SubscribeEvent
130+
public void serverStopping(ServerStoppingEvent event)
131+
{
132+
proxy.stopServer(plugin);
133+
plugin = null;
134+
}
135+
}

0 commit comments

Comments
 (0)
Please sign in to comment.