[NO-ORBIT] Unified Porting Branch

This commit is contained in:
2024-05-19 19:08:42 +02:00
parent f64efbd228
commit be3fc20246
277 changed files with 8174 additions and 128 deletions

View File

@@ -0,0 +1,22 @@
--- a/Forge/build.gradle
+++ b/Forge/build.gradle
@@ -3,7 +3,7 @@
dependencies {
// Compat
- // NOT AVAILABLE ON FORGE modImplementation("maven.modrinth:vanishmod:${vanishmod}")
+ modImplementation("maven.modrinth:vanishmod:${vanishmod}")
// Do not edit or remove
implementation project(":Common")
@@ -104,8 +104,8 @@
setVersionType("release")
setChangelog("https://raw.githubusercontent.com/hypherionmc/changelogs/main/craterlib/changelog-forge.md")
setProjectVersion("${minecraft_version}-${project.version}")
- setDisplayName("[Forge 1.20.6] CraterLib - ${project.version}")
- setGameVersions("1.20.6")
+ setDisplayName("[Forge 1.18.2] CraterLib - ${project.version}")
+ setGameVersions("1.18.2")
setLoaders("forge")
setArtifact(remapJar)
setCurseEnvironment("both")

View File

@@ -0,0 +1,20 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java
+++ b/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java
@@ -3,6 +3,7 @@
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.compat.Vanish;
import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork;
import com.hypherionmc.craterlib.core.networking.data.PacketSide;
import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment;
@@ -32,5 +33,9 @@
LateInitEvent event = new LateInitEvent(new BridgedMinecraft(), BridgedOptions.of(Minecraft.getInstance().options));
CraterEventBus.INSTANCE.postEvent(event);
});
+
+ if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) {
+ MinecraftForge.EVENT_BUS.register(new Vanish());
+ }
}
}

View File

@@ -0,0 +1,11 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientEvents.java
+++ b/Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientEvents.java
@@ -14,7 +14,7 @@
public class ForgeClientEvents {
@SubscribeEvent
- public static void clientTick(TickEvent.LevelTickEvent event) {
+ public static void clientTick(TickEvent.WorldTickEvent event) {
if (Minecraft.getInstance().level == null)
return;

View File

@@ -0,0 +1,30 @@
--- /dev/null
+++ b/Forge/src/main/java/com/hypherionmc/craterlib/compat/Vanish.java
@@ -1,0 +1,27 @@
+package com.hypherionmc.craterlib.compat;
+
+import com.hypherionmc.craterlib.api.events.server.CraterPlayerEvent;
+import com.hypherionmc.craterlib.core.event.CraterEventBus;
+import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer;
+import net.minecraft.world.entity.player.Player;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
+import redstonedubstep.mods.vanishmod.api.PlayerVanishEvent;
+
+public class Vanish {
+
+ public Vanish() {
+
+ }
+
+ @SubscribeEvent
+ public void vanishevent(PlayerVanishEvent event) {
+ if (event.getEntity() instanceof Player p) {
+ if (event.isVanished()) {
+ CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedOut(BridgedPlayer.of(p)));
+ } else {
+ CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedIn(BridgedPlayer.of(p)));
+ }
+ }
+ }
+
+}

View File

@@ -0,0 +1,28 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java
+++ b/Forge/src/main/java/com/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java
@@ -6,7 +6,7 @@
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.client.ConfigGuiHandler;
import net.minecraftforge.forgespi.language.IModInfo;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@@ -19,14 +19,14 @@
/**
* @author HypherionSA
*/
-@Mixin(ConfigScreenHandler.class)
+@Mixin(ConfigGuiHandler.class)
public class ConfigScreenHandlerMixin {
/**
* Inject Auto Generated config Screens into forge
*
*/
- @Inject(at = @At("RETURN"), method = "getScreenFactoryFor", cancellable = true, remap = false)
+ @Inject(at = @At("RETURN"), method = "getGuiFactoryFor", 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)) {

View File

@@ -0,0 +1,36 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/mixin/ServerGamePacketListenerImplMixin.java
+++ b/Forge/src/main/java/com/hypherionmc/craterlib/mixin/ServerGamePacketListenerImplMixin.java
@@ -5,10 +5,10 @@
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.network.chat.TextComponent;
import net.minecraft.server.level.ServerPlayer;
-import net.minecraft.server.network.FilteredText;
import net.minecraft.server.network.ServerGamePacketListenerImpl;
+import net.minecraft.server.network.TextFilter;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@@ -22,12 +22,16 @@
public ServerPlayer player;
@Inject(
- method = "lambda$handleChat$5",
- at = @At("HEAD"),
+ method = "handleChat(Lnet/minecraft/server/network/TextFilter$FilteredText;)V",
+ at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/TextFilter$FilteredText;getFiltered()Ljava/lang/String;"),
cancellable = true
)
- private void injectChatEvent(Component component, PlayerChatMessage arg, FilteredText p_296589_, CallbackInfo ci) {
- CraterServerChatEvent event = new CraterServerChatEvent(BridgedPlayer.of(this.player), arg.decoratedContent().getString(), ChatUtils.mojangToAdventure(arg.decoratedContent()));
+ private void injectChatEvent(TextFilter.FilteredText arg, CallbackInfo ci) {
+ Component message = new TextComponent(arg.getRaw());
+ if (message.getString().startsWith("/"))
+ return;
+
+ CraterServerChatEvent event = new CraterServerChatEvent(BridgedPlayer.of(this.player), arg.getFiltered(), ChatUtils.mojangToAdventure(message));
CraterEventBus.INSTANCE.postEvent(event);
if (event.wasCancelled())
ci.cancel();

View File

@@ -0,0 +1,94 @@
--- a/Forge/src/main/java/com/hypherionmc/craterlib/network/CraterForgeNetworkHandler.java
+++ b/Forge/src/main/java/com/hypherionmc/craterlib/network/CraterForgeNetworkHandler.java
@@ -12,16 +12,17 @@
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 net.minecraftforge.network.NetworkDirection;
+import net.minecraftforge.network.NetworkEvent;
+import net.minecraftforge.network.NetworkRegistry;
+import net.minecraftforge.network.simple.SimpleChannel;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
+import java.util.function.Supplier;
/**
* Based on https://github.com/mysticdrew/common-networking/tree/1.20.4
@@ -35,18 +36,19 @@
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 = NetworkRegistry.ChannelBuilder
+ .named(holder.type().toMojang())
+ .clientAcceptedVersions((a) -> true)
+ .serverAcceptedVersions((a) -> true)
+ .networkProtocolVersion(() -> "1")
.simpleChannel();
- channel.messageBuilder(holder.messageType())
- .decoder(mojangDecoder(holder.decoder()))
- .encoder(mojangEncoder(holder.encoder()))
- .consumerNetworkThread(buildHandler(holder.handler()))
- .add();
+ channel.registerMessage(
+ 0,
+ holder.messageType(),
+ mojangEncoder(holder.encoder()),
+ mojangDecoder(holder.decoder()),
+ buildHandler(holder.handler()));
CHANNELS.put(holder.messageType(), channel);
} else {
@@ -62,7 +64,7 @@
SimpleChannel channel = CHANNELS.get(packet.getClass());
Connection connection = Minecraft.getInstance().getConnection().getConnection();
if (channel.isRemotePresent(connection) || ignoreCheck) {
- channel.send(packet, PacketDistributor.SERVER.noArg());
+ channel.sendToServer(packet);
}
}
@@ -72,8 +74,8 @@
if (connection == null)
return;
- if (channel.isRemotePresent(connection.getConnection())) {
- channel.send(packet, PacketDistributor.PLAYER.with(player.toMojangServerPlayer()));
+ if (channel.isRemotePresent(connection.connection)) {
+ channel.sendTo(packet, player.getConnection().connection, NetworkDirection.PLAY_TO_CLIENT);
}
}
@@ -85,14 +87,14 @@
return ((t, byteBuf) -> handler.accept(t, BridgedFriendlyByteBuf.of(byteBuf)));
}
- private <T> BiConsumer<T, CustomPayloadEvent.Context> buildHandler(Consumer<PacketContext<T>> handler) {
+ private <T> BiConsumer<T, Supplier<NetworkEvent.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();
+ ctx.get().enqueueWork(() -> {
+ PacketSide side = ctx.get().getDirection().getReceptionSide().isServer() ? PacketSide.SERVER : PacketSide.CLIENT;
+ ServerPlayer player = ctx.get().getSender();
handler.accept(new PacketContext<>(BridgedPlayer.of(player), message, side));
});
- ctx.setPacketHandled(true);
+ ctx.get().setPacketHandled(true);
};
}
}

View File

@@ -0,0 +1,25 @@
--- a/Forge/src/main/resources/META-INF/mods.toml
+++ b/Forge/src/main/resources/META-INF/mods.toml
@@ -1,5 +1,5 @@
modLoader = "javafml"
-loaderVersion = "[50,)"
+loaderVersion = "[40,)"
license = "MIT"
issueTrackerURL = "https://github.com/firstdarkdev/craterLib/issues"
@@ -19,13 +19,13 @@
[[dependencies.${ mod_id }]]
modId = "forge"
mandatory = true
- versionRange = "[50,)"
+ versionRange = "[40,)"
ordering = "NONE"
side = "BOTH"
[[dependencies.${ mod_id }]]
modId = "minecraft"
mandatory = true
- versionRange = "[1.20.6,1.21)"
+ versionRange = "[1.18.2,1.19)"
ordering = "NONE"
side = "BOTH"