[FEAT] Paper Support

This commit is contained in:
2024-10-22 20:13:32 +02:00
parent 86149ace11
commit e0e37685e2
352 changed files with 5772 additions and 1588 deletions

View File

@@ -6,8 +6,8 @@
def JDK = "21";
-def majorMc = "1.21.2";
+def majorMc = "1.21";
def modLoaders = "neoforge|fabric|quilt";
-def supportedMc = "1.21.2";
def modLoaders = "neoforge|fabric|quilt|paper";
-def supportedMc = "1.21.3";
-def reltype = "port";
+def supportedMc = "1.21|1.21.1";
+def reltype = "snapshot";

View File

@@ -2,10 +2,10 @@
+++ b/Fabric/build.gradle
@@ -115,8 +115,8 @@
setVersionType("release")
setChangelog("https://raw.githubusercontent.com/hypherionmc/changelogs/main/craterlib/changelog-fabric.md")
setChangelog(rootProject.file("changelog.md"))
setProjectVersion("${minecraft_version}-${project.version}")
- setDisplayName("[FABRIC/QUILT 1.21.2] CraterLib - ${project.version}")
- setGameVersions("1.21.2")
- setDisplayName("[FABRIC/QUILT 1.21.3] CraterLib - ${project.version}")
- setGameVersions("1.21.3")
+ setDisplayName("[FABRIC/QUILT 1.21.x] CraterLib - ${project.version}")
+ setGameVersions("1.21", "1.21.1")
setLoaders("fabric", "quilt")

View File

@@ -0,0 +1,119 @@
--- a/Forge/build.gradle
+++ /dev/null
@@ -1,116 +1,0 @@
-// Adjust the output jar name here
-archivesBaseName = "${mod_name.replace(" ", "")}-Forge-${minecraft_version}"
-
-dependencies {
- // Compat
- // NOT AVAILABLE ON FORGE modImplementation("maven.modrinth:vanishmod:${vanishmod}")
-
- // Do not edit or remove
- implementation project(":Common")
-}
-
-shadowJar {
- from sourceSets.main.output
- configurations = [project.configurations.shade]
-
- dependencies {
- exclude(dependency('com.google.code.gson:.*'))
-
- relocate 'me.hypherionmc.moonconfig', 'shadow.hypherionmc.moonconfig'
- relocate 'me.hypherionmc.mcdiscordformatter', 'shadow.hypherionmc.mcdiscordformatter'
- relocate 'net.kyori', 'shadow.kyori'
- }
-
- setArchiveClassifier('dev-shadow')
- mergeServiceFiles()
-}
-
-/**
- * ===============================================================================
- * = DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING =
- * ===============================================================================
- */
-
-unimined.minecraft {
- minecraftForge {
- loader forge_version
- mixinConfig("${mod_id}.mixins.json", "${mod_id}.forge.mixins.json")
- }
-}
-
-remapJar {
- inputFile.set shadowJar.archiveFile
- dependsOn shadowJar
- archiveClassifier.set null
-}
-
-jar {
- archiveClassifier.set "dev"
-}
-
-processResources {
- from project(":Common").sourceSets.main.resources
- def buildProps = project.properties.clone()
-
- filesMatching("META-INF/mods.toml") {
- expand buildProps
- }
-}
-
-compileTestJava.enabled = false
-
-tasks.withType(JavaCompile).configureEach {
- source(project(":Common").sourceSets.main.allSource)
-}
-
-/**
- * Publishing Config
- */
-publishing {
- publications {
- mavenJava(MavenPublication) {
- artifactId project.archivesBaseName
- from components.java
-
- artifact(remapJar) {
- builtBy remapJar
- }
-
- pom.withXml {
- Node pomNode = asNode()
- pomNode.dependencies.'*'.findAll() {
- it.artifactId.text() == 'regutils-joined-fabric' ||
- it.artifactId.text() == 'core' ||
- it.artifactId.text() == 'toml'
- }.each() {
- it.parent().remove(it)
- }
- }
- }
- }
-
- repositories {
- maven rootProject.orion.getPublishingMaven()
- }
-}
-
-publisher {
- apiKeys {
- modrinth(System.getenv("MODRINTH_TOKEN"))
- curseforge(System.getenv("CURSE_TOKEN"))
- nightbloom(System.getenv("PLATFORM_KEY"))
- }
-
- setCurseID(curse_id)
- setModrinthID(modrinth_id)
- setNightbloomID("craterlib")
- setVersionType("release")
- setChangelog(rootProject.file("changelog.md"))
- setProjectVersion("${minecraft_version}-${project.version}")
- setDisplayName("[Forge 1.20.6] CraterLib - ${project.version}")
- setGameVersions("1.20.6")
- setLoaders("forge")
- setArtifact(remapJar)
- setCurseEnvironment("both")
- setIsManualRelease(true)
-}

View File

@@ -0,0 +1,39 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java
+++ /dev/null
@@ -1,36 +1,0 @@
-package com.hypherionmc.craterlib;
-
-import com.hypherionmc.craterlib.api.events.client.LateInitEvent;
-import com.hypherionmc.craterlib.common.ForgeServerEvents;
-import com.hypherionmc.craterlib.core.event.CraterEventBus;
-import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork;
-import com.hypherionmc.craterlib.core.networking.data.PacketSide;
-import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment;
-import com.hypherionmc.craterlib.network.CraterForgeNetworkHandler;
-import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft;
-import com.hypherionmc.craterlib.nojang.client.BridgedOptions;
-import net.minecraft.client.Minecraft;
-import net.minecraftforge.api.distmarker.Dist;
-import net.minecraftforge.common.MinecraftForge;
-import net.minecraftforge.fml.DistExecutor;
-import net.minecraftforge.fml.common.Mod;
-import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
-import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
-import net.minecraftforge.fml.loading.FMLLoader;
-
-@Mod(CraterConstants.MOD_ID)
-public class CraterLib {
-
- public CraterLib() {
- MinecraftForge.EVENT_BUS.register(new ForgeServerEvents());
- FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup);
- }
-
- public void commonSetup(FMLCommonSetupEvent evt) {
- new CraterPacketNetwork(new CraterForgeNetworkHandler(FMLLoader.getDist().isClient() ? PacketSide.CLIENT : PacketSide.SERVER));
- DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> {
- LateInitEvent event = new LateInitEvent(new BridgedMinecraft(), BridgedOptions.of(Minecraft.getInstance().options));
- CraterEventBus.INSTANCE.postEvent(event);
- });
- }
-}

View File

@@ -0,0 +1,28 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientEvents.java
+++ /dev/null
@@ -1,25 +1,0 @@
-package com.hypherionmc.craterlib.client;
-
-import com.hypherionmc.craterlib.CraterConstants;
-import com.hypherionmc.craterlib.api.events.client.CraterClientTickEvent;
-import com.hypherionmc.craterlib.core.event.CraterEventBus;
-import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedClientLevel;
-import net.minecraft.client.Minecraft;
-import net.minecraftforge.api.distmarker.Dist;
-import net.minecraftforge.event.TickEvent;
-import net.minecraftforge.eventbus.api.SubscribeEvent;
-import net.minecraftforge.fml.common.Mod;
-
-@Mod.EventBusSubscriber(modid = CraterConstants.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT)
-public class ForgeClientEvents {
-
- @SubscribeEvent
- public static void clientTick(TickEvent.LevelTickEvent event) {
- if (Minecraft.getInstance().level == null)
- return;
-
- CraterClientTickEvent craterClientTickEvent = new CraterClientTickEvent(BridgedClientLevel.of(Minecraft.getInstance().level));
- CraterEventBus.INSTANCE.postEvent(craterClientTickEvent);
- }
-
-}

View File

@@ -0,0 +1,44 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientHelper.java
+++ /dev/null
@@ -1,41 +1,0 @@
-package com.hypherionmc.craterlib.client;
-
-import com.hypherionmc.craterlib.core.platform.ClientPlatform;
-import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft;
-import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedClientLevel;
-import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer;
-import net.minecraft.client.Minecraft;
-import net.minecraft.network.Connection;
-
-import java.util.Objects;
-
-/**
- * @author HypherionSA
- * @date 16/06/2022
- */
-public class ForgeClientHelper implements ClientPlatform {
-
- public ForgeClientHelper() {
- }
-
- @Override
- public BridgedMinecraft getClientInstance() {
- return new BridgedMinecraft();
- }
-
- @Override
- public BridgedPlayer getClientPlayer() {
- return BridgedPlayer.of(Minecraft.getInstance().player);
- }
-
- @Override
- public BridgedClientLevel getClientLevel() {
- return BridgedClientLevel.of(Minecraft.getInstance().level);
- }
-
- @Override
- public Connection getClientConnection() {
- Objects.requireNonNull(Minecraft.getInstance().getConnection(), "Cannot send packets when not in game!");
- return Minecraft.getInstance().getConnection().getConnection();
- }
-}

View File

@@ -0,0 +1,29 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCommonHelper.java
+++ /dev/null
@@ -1,26 +1,0 @@
-package com.hypherionmc.craterlib.common;
-
-import com.hypherionmc.craterlib.core.platform.CommonPlatform;
-import com.hypherionmc.craterlib.nojang.server.BridgedMinecraftServer;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.world.item.CreativeModeTab;
-import net.minecraftforge.server.ServerLifecycleHooks;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author HypherionSA
- */
-public class ForgeCommonHelper implements CommonPlatform {
-
- public static Map<ResourceLocation, CreativeModeTab> TABS = new HashMap<>();
-
- public ForgeCommonHelper() {
- }
-
- @Override
- public BridgedMinecraftServer getMCServer() {
- return BridgedMinecraftServer.of(ServerLifecycleHooks.getCurrentServer());
- }
-}

View File

@@ -0,0 +1,20 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java
+++ /dev/null
@@ -1,17 +1,0 @@
-package com.hypherionmc.craterlib.common;
-
-import com.hypherionmc.craterlib.core.platform.CompatUtils;
-import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer;
-
-public class ForgeCompatHelper implements CompatUtils {
-
- @Override
- public boolean isPlayerActive(BridgedPlayer player) {
- return true;
- }
-
- @Override
- public String getSkinUUID(BridgedPlayer player) {
- return player.getStringUUID();
- }
-}

View File

@@ -0,0 +1,82 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeLoaderHelper.java
+++ /dev/null
@@ -1,79 +1,0 @@
-package com.hypherionmc.craterlib.common;
-
-import com.hypherionmc.craterlib.core.platform.Environment;
-import com.hypherionmc.craterlib.core.platform.LoaderType;
-import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment;
-import net.minecraft.SharedConstants;
-import net.minecraft.client.Minecraft;
-import net.minecraftforge.fml.ModList;
-import net.minecraftforge.fml.loading.FMLLoader;
-import net.minecraftforge.fml.loading.FMLPaths;
-
-import java.io.File;
-
-/**
- * @author HypherionSA
- */
-public class ForgeLoaderHelper implements ModloaderEnvironment {
-
- public ForgeLoaderHelper() {
- }
-
- @Override
- public boolean isFabric() {
- return false;
- }
-
- @Override
- public LoaderType getLoaderType() {
- return LoaderType.FORGE;
- }
-
- @Override
- public String getGameVersion() {
- return SharedConstants.VERSION_STRING;
- }
-
- @Override
- public File getGameFolder() {
- return Minecraft.getInstance().gameDirectory;
- }
-
- @Override
- public File getConfigFolder() {
- return FMLPaths.CONFIGDIR.get().toFile();
- }
-
- @Override
- public File getModsFolder() {
- return FMLPaths.MODSDIR.get().toFile();
- }
-
- @Override
- public Environment getEnvironment() {
- switch (FMLLoader.getDist()) {
- case CLIENT -> {
- return Environment.CLIENT;
- }
- case DEDICATED_SERVER -> {
- return Environment.SERVER;
- }
- }
- return Environment.UNKNOWN;
- }
-
- @Override
- public boolean isModLoaded(String modid) {
- return ModList.get().isLoaded(modid);
- }
-
- @Override
- public boolean isDevEnv() {
- return !FMLLoader.isProduction();
- }
-
- @Override
- public int getModCount() {
- return ModList.get().size();
- }
-}

View File

@@ -0,0 +1,46 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeServerEvents.java
+++ /dev/null
@@ -1,43 +1,0 @@
-package com.hypherionmc.craterlib.common;
-
-import com.hypherionmc.craterlib.api.events.server.CraterRegisterCommandEvent;
-import com.hypherionmc.craterlib.api.events.server.CraterServerLifecycleEvent;
-import com.hypherionmc.craterlib.core.event.CraterEventBus;
-import com.hypherionmc.craterlib.nojang.commands.CommandsRegistry;
-import com.hypherionmc.craterlib.nojang.server.BridgedMinecraftServer;
-import net.minecraftforge.event.RegisterCommandsEvent;
-import net.minecraftforge.event.server.ServerStartedEvent;
-import net.minecraftforge.event.server.ServerStartingEvent;
-import net.minecraftforge.event.server.ServerStoppedEvent;
-import net.minecraftforge.event.server.ServerStoppingEvent;
-import net.minecraftforge.eventbus.api.SubscribeEvent;
-
-public class ForgeServerEvents {
-
- @SubscribeEvent
- public void serverStarting(ServerStartingEvent event) {
- CraterEventBus.INSTANCE.postEvent(new CraterServerLifecycleEvent.Starting(BridgedMinecraftServer.of(event.getServer())));
- }
-
- @SubscribeEvent
- public void serverStarted(ServerStartedEvent event) {
- CraterEventBus.INSTANCE.postEvent(new CraterServerLifecycleEvent.Started(BridgedMinecraftServer.of(event.getServer())));
- }
-
- @SubscribeEvent
- public void serverStopping(ServerStoppingEvent event) {
- CraterEventBus.INSTANCE.postEvent(new CraterServerLifecycleEvent.Stopping(BridgedMinecraftServer.of(event.getServer())));
- }
-
- @SubscribeEvent
- public void serverStopped(ServerStoppedEvent event) {
- CraterEventBus.INSTANCE.postEvent(new CraterServerLifecycleEvent.Stopped(BridgedMinecraftServer.of(event.getServer())));
- }
-
- @SubscribeEvent
- public void onCommandRegister(RegisterCommandsEvent event) {
- CraterEventBus.INSTANCE.postEvent(new CraterRegisterCommandEvent());
- CommandsRegistry.INSTANCE.registerCommands(event.getDispatcher());
- }
-
-}

View File

@@ -0,0 +1,46 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java
+++ /dev/null
@@ -1,43 +1,0 @@
-package com.hypherionmc.craterlib.mixin;
-
-import com.hypherionmc.craterlib.client.gui.config.CraterConfigScreen;
-import com.hypherionmc.craterlib.core.config.ConfigController;
-import com.hypherionmc.craterlib.core.config.ModuleConfig;
-import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.screens.Screen;
-import net.minecraftforge.client.ConfigScreenHandler;
-import net.minecraftforge.forgespi.language.IModInfo;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-
-import java.util.Optional;
-import java.util.function.BiFunction;
-
-/**
- * @author HypherionSA
- */
-@Mixin(ConfigScreenHandler.class)
-public class ConfigScreenHandlerMixin {
-
- /**
- * Inject Auto Generated config Screens into forge
- *
- */
- @Inject(at = @At("RETURN"), method = "getScreenFactoryFor", cancellable = true, remap = false)
- private static void injectConfigScreen(IModInfo selectedMod, CallbackInfoReturnable<Optional<BiFunction<Minecraft, Screen, Screen>>> cir) {
- ConfigController.getMonitoredConfigs().forEach((conf, watcher) -> {
- if (!conf.getClass().isAnnotationPresent(NoConfigScreen.class)) {
- ModuleConfig config = (ModuleConfig) conf;
- if (config.getModId().equals(selectedMod.getModId())) {
- cir.setReturnValue(
- Optional.of((minecraft, screen) -> new CraterConfigScreen(config, screen))
- );
- }
- }
- });
- }
-
-}

View File

@@ -0,0 +1,40 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/mixin/ServerGamePacketListenerImplMixin.java
+++ /dev/null
@@ -1,37 +1,0 @@
-package com.hypherionmc.craterlib.mixin;
-
-import com.hypherionmc.craterlib.api.events.server.CraterServerChatEvent;
-import com.hypherionmc.craterlib.core.event.CraterEventBus;
-import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer;
-import com.hypherionmc.craterlib.utils.ChatUtils;
-import net.minecraft.network.chat.Component;
-import net.minecraft.network.chat.PlayerChatMessage;
-import net.minecraft.server.level.ServerPlayer;
-import net.minecraft.server.network.FilteredText;
-import net.minecraft.server.network.ServerGamePacketListenerImpl;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(value = ServerGamePacketListenerImpl.class, priority = Integer.MIN_VALUE)
-public class ServerGamePacketListenerImplMixin {
-
- @Shadow
- public ServerPlayer player;
-
- @Inject(
- method = "lambda$handleChat$5",
- at = @At("HEAD"),
- cancellable = true
- )
- private void injectChatEvent(Component component, PlayerChatMessage arg, FilteredText p_296589_, CallbackInfo ci) {
- Component finalcomp = component == null ? arg.decoratedContent() : component;
- CraterServerChatEvent event = new CraterServerChatEvent(BridgedPlayer.of(this.player), finalcomp.getString(), ChatUtils.mojangToAdventure(finalcomp));
- CraterEventBus.INSTANCE.postEvent(event);
- if (event.wasCancelled())
- ci.cancel();
- }
-
-}

View File

@@ -0,0 +1,56 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/mixin/ServerStatusPacketListenerMixin.java
+++ /dev/null
@@ -1,53 +1,0 @@
-package com.hypherionmc.craterlib.mixin;
-
-import com.hypherionmc.craterlib.api.events.server.ServerStatusEvent;
-import com.hypherionmc.craterlib.core.event.CraterEventBus;
-import com.hypherionmc.craterlib.utils.ChatUtils;
-import net.minecraft.network.Connection;
-import net.minecraft.network.protocol.status.ClientboundStatusResponsePacket;
-import net.minecraft.network.protocol.status.ServerStatus;
-import net.minecraft.network.protocol.status.ServerboundStatusRequestPacket;
-import net.minecraft.server.network.ServerStatusPacketListenerImpl;
-import org.spongepowered.asm.mixin.Final;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(ServerStatusPacketListenerImpl.class)
-public class ServerStatusPacketListenerMixin {
-
- @Shadow
- @Final
- private ServerStatus status;
-
- @Shadow @Final private Connection connection;
-
- @Inject(method = "handleStatusRequest",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/network/Connection;send(Lnet/minecraft/network/protocol/Packet;)V",
- shift = At.Shift.BEFORE),
- cancellable = true
- )
- private void injectHandleStatusRequest(ServerboundStatusRequestPacket arg, CallbackInfo ci) {
- ServerStatusEvent.StatusRequestEvent event = new ServerStatusEvent.StatusRequestEvent(ChatUtils.mojangToAdventure(status.description()));
- CraterEventBus.INSTANCE.postEvent(event);
-
- if (event.getNewStatus() != null) {
- ci.cancel();
- this.connection.send(new ClientboundStatusResponsePacket(
- new ServerStatus(ChatUtils.adventureToMojang(
- event.getNewStatus()),
- status.players(),
- status.version(),
- status.favicon(),
- status.enforcesSecureChat(),
- status.isModded()
- )
- ));
- }
- }
-
-}

View File

@@ -0,0 +1,101 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/network/CraterForgeNetworkHandler.java
+++ /dev/null
@@ -1,98 +1,0 @@
-package com.hypherionmc.craterlib.network;
-
-import com.hypherionmc.craterlib.CraterConstants;
-import com.hypherionmc.craterlib.core.networking.PacketRegistry;
-import com.hypherionmc.craterlib.core.networking.data.PacketContext;
-import com.hypherionmc.craterlib.core.networking.data.PacketHolder;
-import com.hypherionmc.craterlib.core.networking.data.PacketSide;
-import com.hypherionmc.craterlib.nojang.network.BridgedFriendlyByteBuf;
-import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer;
-import net.minecraft.client.Minecraft;
-import net.minecraft.network.Connection;
-import net.minecraft.network.FriendlyByteBuf;
-import net.minecraft.server.level.ServerPlayer;
-import net.minecraft.server.network.ServerGamePacketListenerImpl;
-import net.minecraftforge.event.network.CustomPayloadEvent;
-import net.minecraftforge.network.ChannelBuilder;
-import net.minecraftforge.network.PacketDistributor;
-import net.minecraftforge.network.SimpleChannel;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.function.BiConsumer;
-import java.util.function.Consumer;
-import java.util.function.Function;
-
-/**
- * Based on https://github.com/mysticdrew/common-networking/tree/1.20.4
- */
-public class CraterForgeNetworkHandler extends PacketRegistry {
- private final Map<Class<?>, SimpleChannel> CHANNELS = new HashMap<>();
-
- public CraterForgeNetworkHandler(PacketSide side) {
- super(side);
- }
-
- protected <T> void registerPacket(PacketHolder<T> holder) {
- if (CHANNELS.get(holder.messageType()) == null) {
- SimpleChannel channel = ChannelBuilder
- .named(holder.type().id())
- .clientAcceptedVersions((a, b) -> true)
- .serverAcceptedVersions((a, b) -> true)
- .networkProtocolVersion(1)
- .simpleChannel();
-
- channel.messageBuilder(holder.messageType())
- .decoder(mojangDecoder(holder.decoder()))
- .encoder(mojangEncoder(holder.encoder()))
- .consumerNetworkThread(buildHandler(holder.handler()))
- .add();
-
- CHANNELS.put(holder.messageType(), channel);
- } else {
- CraterConstants.LOG.error("Trying to register duplicate packet for type {}", holder.messageType());
- }
- }
-
- public <T> void sendToServer(T packet) {
- this.sendToServer(packet, false);
- }
-
- public <T> void sendToServer(T packet, boolean ignoreCheck) {
- SimpleChannel channel = CHANNELS.get(packet.getClass());
- Connection connection = Minecraft.getInstance().getConnection().getConnection();
- if (channel.isRemotePresent(connection) || ignoreCheck) {
- channel.send(packet, PacketDistributor.SERVER.noArg());
- }
- }
-
- public <T> void sendToClient(T packet, BridgedPlayer player) {
- SimpleChannel channel = CHANNELS.get(packet.getClass());
- ServerGamePacketListenerImpl connection = player.getConnection();
- if (connection == null)
- return;
-
- if (channel.isRemotePresent(connection.getConnection())) {
- channel.send(packet, PacketDistributor.PLAYER.with(player.toMojangServerPlayer()));
- }
- }
-
- private <T> Function<FriendlyByteBuf, T> mojangDecoder(Function<BridgedFriendlyByteBuf, T> handler) {
- return byteBuf -> handler.apply(BridgedFriendlyByteBuf.of(byteBuf));
- }
-
- private <T> BiConsumer<T, FriendlyByteBuf> mojangEncoder(BiConsumer<T, BridgedFriendlyByteBuf> handler) {
- return ((t, byteBuf) -> handler.accept(t, BridgedFriendlyByteBuf.of(byteBuf)));
- }
-
- private <T> BiConsumer<T, CustomPayloadEvent.Context> buildHandler(Consumer<PacketContext<T>> handler) {
- return (message, ctx) -> {
- ctx.enqueueWork(() -> {
- PacketSide side = ctx.getDirection().getReceptionSide().isServer() ? PacketSide.SERVER : PacketSide.CLIENT;
- ServerPlayer player = ctx.getSender();
- handler.accept(new PacketContext<>(BridgedPlayer.of(player), message, side));
- });
- ctx.setPacketHandled(true);
- };
- }
-}

View File

@@ -0,0 +1,34 @@
--- a/Forge/src/main/resources/META-INF/mods.toml
+++ /dev/null
@@ -1,31 +1,0 @@
-modLoader = "javafml"
-loaderVersion = "[50,)"
-license = "MIT"
-issueTrackerURL = "https://github.com/firstdarkdev/craterLib/issues"
-
-[[mods]]
- modId = "${mod_id}"
- version = "${version}"
- displayName = "${mod_name}"
- displayURL = "https://modrinth.com/mod/craterlib"
- logoFile = "craterlib_logo.png"
- #credits="Thanks for this example mod goes to Java"
- authors = "${mod_author}, Zenith"
- description = '''
- A library mod used by First Dark Development and HypherionSA Mods
- '''
- displayTest = "NONE"
-
-[[dependencies.${ mod_id }]]
- modId = "forge"
- mandatory = true
- versionRange = "[50,)"
- ordering = "NONE"
- side = "BOTH"
-
-[[dependencies.${ mod_id }]]
- modId = "minecraft"
- mandatory = true
- versionRange = "[1.20.6,1.21)"
- ordering = "NONE"
- side = "BOTH"

View File

@@ -0,0 +1,4 @@
--- a/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.ClientPlatform
+++ /dev/null
@@ -1,1 +1,0 @@
-com.hypherionmc.craterlib.client.ForgeClientHelper

View File

@@ -0,0 +1,4 @@
--- a/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CommonPlatform
+++ /dev/null
@@ -1,1 +1,0 @@
-com.hypherionmc.craterlib.common.ForgeCommonHelper

View File

@@ -0,0 +1,4 @@
--- a/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CompatUtils
+++ /dev/null
@@ -1,1 +1,0 @@
-com.hypherionmc.craterlib.common.ForgeCompatHelper

View File

@@ -0,0 +1,4 @@
--- a/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.ModloaderEnvironment
+++ /dev/null
@@ -1,1 +1,0 @@
-com.hypherionmc.craterlib.common.ForgeLoaderHelper

View File

@@ -0,0 +1,21 @@
--- a/Forge/src/main/resources/craterlib.forge.mixins.json
+++ /dev/null
@@ -1,18 +1,0 @@
-{
- "required": true,
- "minVersion": "0.8",
- "package": "com.hypherionmc.craterlib.mixin",
- "compatibilityLevel": "JAVA_17",
- "mixins": [
- ],
- "client": [
- "ConfigScreenHandlerMixin"
- ],
- "server": [
- "ServerGamePacketListenerImplMixin",
- "ServerStatusPacketListenerMixin"
- ],
- "injectors": {
- "defaultRequire": 1
- }
-}

View File

@@ -16,10 +16,10 @@
}
@@ -113,8 +108,8 @@
setVersionType("release")
setChangelog("https://raw.githubusercontent.com/hypherionmc/changelogs/main/craterlib/changelog-forge.md")
setChangelog(rootProject.file("changelog.md"))
setProjectVersion("${minecraft_version}-${project.version}")
- setDisplayName("[NeoForge 1.21.2] CraterLib - ${project.version}")
- setGameVersions("1.21.2")
- setDisplayName("[NeoForge 1.21.3] CraterLib - ${project.version}")
- setGameVersions("1.21.3")
+ setDisplayName("[NeoForge 1.21.x] CraterLib - ${project.version}")
+ setGameVersions("1.21", "1.21.1")
setLoaders("neoforge")

View File

@@ -0,0 +1,13 @@
--- a/Paper/build.gradle
+++ b/Paper/build.gradle
@@ -70,8 +70,8 @@
setVersionType("alpha")
setChangelog(rootProject.file("changelog.md"))
setProjectVersion("${minecraft_version}-${project.version}")
- setDisplayName("[Paper 1.21.3] CraterLib - ${project.version}")
- setGameVersions("1.21.3")
+ setDisplayName("[Paper 1.21-1.21.1] CraterLib - ${project.version}")
+ setGameVersions("1.21", "1.21.1")
setLoaders("paper")
setArtifact(reobfJar.outputJar)
}

View File

@@ -0,0 +1,10 @@
--- a/Paper/src/main/resources/paper-plugin.yml
+++ b/Paper/src/main/resources/paper-plugin.yml
@@ -3,6 +3,6 @@
description: "A Modding API used to create 'universal' mods"
main: com.hypherionmc.craterlib.paper.CraterLibPlugin
author: HypherionSA
-api-version: '1.21.3'
+api-version: '1.21'
bootstrapper: com.hypherionmc.craterlib.paper.CraterLibBootstrap
load: STARTUP

View File

@@ -1,6 +1,6 @@
--- a/build.gradle
+++ b/build.gradle
@@ -7,21 +7,15 @@
@@ -8,21 +8,15 @@
id 'maven-publish'
}
@@ -23,7 +23,7 @@
identifier("${relType}")
}
}
@@ -42,7 +36,6 @@
@@ -47,7 +41,6 @@
repositories {
mavenCentral()

View File

@@ -4,13 +4,13 @@
mod_name=CraterLib
# Shared
-minecraft_version=1.21.2
-minecraft_version=1.21.3
+minecraft_version=1.21
project_group=com.hypherionmc.craterlib
# Fabric
-fabric_loader=0.16.7
-fabric_api=0.106.1+1.21.2
-fabric_api=0.107.3+1.21.3
+fabric_loader=0.15.11
+fabric_api=0.100.1+1.21