Skip to content

Commit 1ee0e07

Browse files
committed
Add shared module for Fabric, NeoForge and Forge
1 parent 9a706d5 commit 1ee0e07

File tree

54 files changed

+952
-1837
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+952
-1837
lines changed

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
plugins {
22
id 'org.cadixdev.licenser' version '0.6.1' apply false
3+
id 'com.gradleup.shadow' version '8.3.8' apply false
4+
id 'fabric-loom' version '1.11-SNAPSHOT' apply false
35
}
46

57
import org.gradle.api.tasks.testing.logging.TestExceptionFormat

settings.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ include (
2828
'spark-common',
2929
'spark-fabric',
3030
'spark-forge',
31+
'spark-minecraft',
3132
'spark-neoforge',
3233
'spark-paper',
3334
'spark-sponge',

spark-bukkit/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
id 'com.gradleup.shadow' version '8.3.8'
2+
id 'com.gradleup.shadow'
33
}
44

55
java {

spark-bungeecord/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
id 'com.gradleup.shadow' version '8.3.8'
2+
id 'com.gradleup.shadow'
33
}
44

55
dependencies {

spark-fabric/build.gradle

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import net.fabricmc.loom.task.RemapJarTask
22

33
plugins {
4-
id 'fabric-loom' version '1.11-SNAPSHOT'
5-
id 'com.gradleup.shadow' version '8.3.8'
4+
id 'fabric-loom'
5+
id 'com.gradleup.shadow'
66
}
77

88
tasks.withType(JavaCompile) {
@@ -29,7 +29,7 @@ configurations {
2929
dependencies {
3030
// https://modmuss50.me/fabric.html
3131
minecraft 'com.mojang:minecraft:1.21.10'
32-
mappings 'net.fabricmc:yarn:1.21.10+build.2:v2'
32+
mappings loom.officialMojangMappings()
3333
modImplementation 'net.fabricmc:fabric-loader:0.17.3'
3434

3535
Set<String> apiModules = [
@@ -48,6 +48,7 @@ dependencies {
4848
modImplementation('eu.pb4:placeholder-api:2.8.0+1.21.9')
4949

5050
shade project(':spark-common')
51+
shade project(':spark-minecraft')
5152
}
5253

5354
processResources {

spark-fabric/src/main/java/me/lucko/spark/fabric/FabricClientCommandSender.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,9 @@
2626
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
2727
import net.kyori.adventure.text.Component;
2828
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
29-
import net.minecraft.client.network.ClientCommandSource;
30-
import net.minecraft.registry.DynamicRegistryManager;
31-
import net.minecraft.text.Text;
32-
import net.minecraft.text.TextCodecs;
29+
import net.minecraft.client.multiplayer.ClientSuggestionProvider;
30+
import net.minecraft.core.RegistryAccess;
31+
import net.minecraft.network.chat.ComponentSerialization;
3332

3433
import java.util.UUID;
3534

@@ -38,7 +37,7 @@ public FabricClientCommandSender(FabricClientCommandSource commandSource) {
3837
super(commandSource);
3938
}
4039

41-
public FabricClientCommandSender(ClientCommandSource commandSource) {
40+
public FabricClientCommandSender(ClientSuggestionProvider commandSource) {
4241
this((FabricClientCommandSource) commandSource);
4342
}
4443

@@ -49,13 +48,13 @@ public String getName() {
4948

5049
@Override
5150
public UUID getUniqueId() {
52-
return this.delegate.getPlayer().getUuid();
51+
return this.delegate.getPlayer().getUUID();
5352
}
5453

5554
@Override
5655
public void sendMessage(Component message) {
57-
Text component = TextCodecs.CODEC.decode(
58-
DynamicRegistryManager.EMPTY.getOps(JsonOps.INSTANCE),
56+
net.minecraft.network.chat.Component component = ComponentSerialization.CODEC.decode(
57+
RegistryAccess.EMPTY.createSerializationContext(JsonOps.INSTANCE),
5958
GsonComponentSerializer.gson().serializeToTree(message)
6059
).getOrThrow(JsonParseException::new).getFirst();
6160
this.delegate.sendFeedback(component);

spark-fabric/src/main/java/me/lucko/spark/fabric/FabricPlayerPingProvider.java

Lines changed: 0 additions & 45 deletions
This file was deleted.

spark-fabric/src/main/java/me/lucko/spark/fabric/FabricServerCommandSender.java

Lines changed: 8 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -20,76 +20,29 @@
2020

2121
package me.lucko.spark.fabric;
2222

23-
import com.google.gson.JsonParseException;
24-
import com.mojang.serialization.JsonOps;
2523
import me.lucko.fabric.api.permissions.v0.Permissions;
26-
import me.lucko.spark.common.command.sender.AbstractCommandSender;
27-
import net.kyori.adventure.text.Component;
28-
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
29-
import net.minecraft.entity.Entity;
30-
import net.minecraft.registry.DynamicRegistryManager;
24+
import me.lucko.spark.minecraft.sender.MinecraftServerCommandSender;
25+
import net.minecraft.commands.CommandSourceStack;
3126
import net.minecraft.server.MinecraftServer;
32-
import net.minecraft.server.command.ServerCommandSource;
33-
import net.minecraft.server.network.ServerPlayerEntity;
34-
import net.minecraft.text.Text;
35-
import net.minecraft.text.TextCodecs;
27+
import net.minecraft.server.level.ServerPlayer;
3628

37-
import java.util.UUID;
38-
39-
public class FabricServerCommandSender extends AbstractCommandSender<ServerCommandSource> {
40-
public FabricServerCommandSender(ServerCommandSource commandSource) {
29+
public class FabricServerCommandSender extends MinecraftServerCommandSender {
30+
public FabricServerCommandSender(CommandSourceStack commandSource) {
4131
super(commandSource);
4232
}
4333

44-
@Override
45-
public String getName() {
46-
String name = this.delegate.getName();
47-
if (this.delegate.getEntity() != null && name.equals("Server")) {
48-
return "Console";
49-
}
50-
return name;
51-
}
52-
53-
@Override
54-
public UUID getUniqueId() {
55-
Entity entity = this.delegate.getEntity();
56-
return entity != null ? entity.getUuid() : null;
57-
}
58-
59-
@Override
60-
public void sendMessage(Component message) {
61-
Text component = TextCodecs.CODEC.decode(
62-
DynamicRegistryManager.EMPTY.getOps(JsonOps.INSTANCE),
63-
GsonComponentSerializer.gson().serializeToTree(message)
64-
).getOrThrow(JsonParseException::new).getFirst();
65-
this.delegate.sendMessage(component);
66-
}
67-
6834
@Override
6935
public boolean hasPermission(String permission) {
7036
return Permissions.getPermissionValue(this.delegate, permission).orElseGet(() -> {
71-
ServerPlayerEntity player = this.delegate.getPlayer();
37+
ServerPlayer player = this.delegate.getPlayer();
7238
MinecraftServer server = this.delegate.getServer();
7339
if (player != null) {
74-
if (server != null && server.isHost(player.getPlayerConfigEntry())) {
40+
if (server != null && server.isSingleplayerOwner(player.nameAndId())) {
7541
return true;
7642
}
77-
return player.hasPermissionLevel(4);
43+
return player.hasPermissions(4);
7844
}
7945
return true;
8046
});
8147
}
82-
83-
@Override
84-
protected Object getObjectForComparison() {
85-
UUID uniqueId = getUniqueId();
86-
if (uniqueId != null) {
87-
return uniqueId;
88-
}
89-
Entity entity = this.delegate.getEntity();
90-
if (entity != null) {
91-
return entity;
92-
}
93-
return getName();
94-
}
9548
}

spark-fabric/src/main/java/me/lucko/spark/fabric/FabricServerConfigProvider.java

Lines changed: 0 additions & 52 deletions
This file was deleted.

spark-fabric/src/main/java/me/lucko/spark/fabric/FabricSparkMod.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,22 @@
2323
import com.mojang.brigadier.CommandDispatcher;
2424
import me.lucko.spark.fabric.plugin.FabricClientSparkPlugin;
2525
import me.lucko.spark.fabric.plugin.FabricServerSparkPlugin;
26+
import me.lucko.spark.minecraft.SparkMinecraftMod;
2627
import net.fabricmc.api.ModInitializer;
2728
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
2829
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
2930
import net.fabricmc.loader.api.FabricLoader;
3031
import net.fabricmc.loader.api.ModContainer;
31-
import net.minecraft.client.MinecraftClient;
32-
import net.minecraft.command.CommandRegistryAccess;
32+
import net.minecraft.client.Minecraft;
33+
import net.minecraft.commands.CommandBuildContext;
34+
import net.minecraft.commands.CommandSourceStack;
35+
import net.minecraft.commands.Commands.CommandSelection;
3336
import net.minecraft.server.MinecraftServer;
34-
import net.minecraft.server.command.CommandManager.RegistrationEnvironment;
35-
import net.minecraft.server.command.ServerCommandSource;
3637

3738
import java.nio.file.Path;
3839
import java.util.Objects;
3940

40-
public class FabricSparkMod implements ModInitializer {
41+
public class FabricSparkMod implements ModInitializer, SparkMinecraftMod {
4142
private static FabricSparkMod mod;
4243

4344
private ModContainer container;
@@ -63,12 +64,12 @@ public void onInitialize() {
6364
// client (called by entrypoint defined in fabric.mod.json)
6465
public static void initializeClient() {
6566
Objects.requireNonNull(FabricSparkMod.mod, "mod");
66-
FabricClientSparkPlugin.register(FabricSparkMod.mod, MinecraftClient.getInstance());
67+
FabricClientSparkPlugin.init(FabricSparkMod.mod, Minecraft.getInstance());
6768
}
6869

6970
// server
7071
public void initializeServer(MinecraftServer server) {
71-
this.activeServerPlugin = FabricServerSparkPlugin.register(this, server);
72+
this.activeServerPlugin = FabricServerSparkPlugin.init(this, server);
7273
}
7374

7475
public void onServerStopping(MinecraftServer stoppingServer) {
@@ -78,16 +79,18 @@ public void onServerStopping(MinecraftServer stoppingServer) {
7879
}
7980
}
8081

81-
public void onServerCommandRegister(CommandDispatcher<ServerCommandSource> dispatcher, CommandRegistryAccess access, RegistrationEnvironment env) {
82+
public void onServerCommandRegister(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext ctx, CommandSelection env) {
8283
if (this.activeServerPlugin != null) {
8384
this.activeServerPlugin.registerCommands(dispatcher);
8485
}
8586
}
8687

88+
@Override
8789
public String getVersion() {
8890
return this.container.getMetadata().getVersion().getFriendlyString();
8991
}
9092

93+
@Override
9194
public Path getConfigDirectory() {
9295
if (this.configDirectory == null) {
9396
throw new IllegalStateException("Config directory not set");

0 commit comments

Comments
 (0)