diff --git a/Common/build.gradle b/Common/build.gradle index f0b4907..843d62a 100644 --- a/Common/build.gradle +++ b/Common/build.gradle @@ -9,8 +9,11 @@ shadowJar { 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") } @@ -43,9 +46,7 @@ processResources { publishing { publications { mavenCommon(MavenPublication) { - groupId project.group artifactId project.archivesBaseName - version project.version from components.java pom.withXml { diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/commands/CraterCommand.java b/Common/src/main/java/com/hypherionmc/craterlib/api/commands/CraterCommand.java index bef5990..463d774 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/api/commands/CraterCommand.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/commands/CraterCommand.java @@ -6,8 +6,8 @@ import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; import com.mojang.brigadier.arguments.ArgumentType; import lombok.Getter; import net.minecraft.commands.arguments.GameProfileArgument; +import org.apache.commons.lang3.function.TriConsumer; import org.apache.commons.lang3.tuple.Pair; -import org.apache.logging.log4j.util.TriConsumer; import java.util.HashMap; import java.util.LinkedHashMap; diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java new file mode 100644 index 0000000..fb745fc --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java @@ -0,0 +1,13 @@ +package com.hypherionmc.craterlib.core.platform; + +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import com.hypherionmc.craterlib.utils.InternalServiceUtil; + +public interface CompatUtils { + + public static final CompatUtils INSTANCE = InternalServiceUtil.load(CompatUtils.class); + + boolean isPlayerActive(BridgedPlayer player); + String getSkinUUID(BridgedPlayer player); + +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedFakePlayer.java b/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedFakePlayer.java new file mode 100644 index 0000000..42b65cb --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedFakePlayer.java @@ -0,0 +1,55 @@ +package com.hypherionmc.craterlib.nojang.commands; + +import com.hypherionmc.craterlib.nojang.server.BridgedMinecraftServer; +import com.hypherionmc.craterlib.utils.ChatUtils; +import net.minecraft.commands.CommandSource; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.network.chat.Component; +import net.minecraft.server.MinecraftServer; +import net.minecraft.world.phys.Vec2; +import net.minecraft.world.phys.Vec3; + +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Supplier; + +public abstract class BridgedFakePlayer { + + final MojangBridge internal; + + public BridgedFakePlayer(BridgedMinecraftServer server, int perm, String name) { + internal = new MojangBridge(server.toMojang(), perm, name, this::onSuccess, this::onError); + } + + public abstract void onSuccess(Supplier supplier, Boolean aBoolean); + + public void onError(net.kyori.adventure.text.Component component) { + this.onSuccess(() -> component, false); + } + + public CommandSourceStack toMojang() { + return internal; + } + + static class MojangBridge extends CommandSourceStack { + + private final BiConsumer, Boolean> successCallback; + public final Consumer errorCallback; + + MojangBridge(MinecraftServer server, int perm, String name, BiConsumer, Boolean> successCallback, Consumer errorCallback) { + super(CommandSource.NULL, Vec3.ZERO, Vec2.ZERO, server.overworld(), perm, name, Component.literal(name), server, null); + this.successCallback = successCallback; + this.errorCallback = errorCallback; + } + + @Override + public void sendSuccess(Supplier supplier, boolean bl) { + successCallback.accept(() -> ChatUtils.mojangToAdventure(supplier.get()), bl); + } + + @Override + public void sendFailure(Component arg) { + errorCallback.accept(ChatUtils.mojangToAdventure(arg)); + } + } +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/CommandsRegistry.java b/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/CommandsRegistry.java index 3912ba3..3244a93 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/CommandsRegistry.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/CommandsRegistry.java @@ -47,6 +47,8 @@ public class CommandsRegistry { cmd.getExecutor().accept(BridgedCommandSourceStack.of(context.getSource())); return 1; }); + + dispatcher.register(command); } } @@ -74,6 +76,8 @@ public class CommandsRegistry { return 1; }))); + + dispatcher.register(command); } } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/nojang/server/BridgedMinecraftServer.java b/Common/src/main/java/com/hypherionmc/craterlib/nojang/server/BridgedMinecraftServer.java index 97227f8..cb818b7 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/nojang/server/BridgedMinecraftServer.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/nojang/server/BridgedMinecraftServer.java @@ -1,6 +1,7 @@ package com.hypherionmc.craterlib.nojang.server; import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import com.hypherionmc.craterlib.nojang.commands.BridgedFakePlayer; import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.RequiredArgsConstructor; @@ -79,6 +80,10 @@ public class BridgedMinecraftServer { internal.getPlayerList().getBans().add(new UserBanListEntry(profile.toMojang())); } + public void executeCommand(BridgedMinecraftServer server, BridgedFakePlayer player, String command) { + internal.getCommands().performPrefixedCommand(player.toMojang(), command); + } + public MinecraftServer toMojang() { return internal; } diff --git a/Fabric/build.gradle b/Fabric/build.gradle index cbeddd6..557c74d 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -4,10 +4,14 @@ dependencies { // Core modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric_api}" + // Compat modImplementation("com.terraformersmc:modmenu:${mod_menu_version}") { exclude(group: "net.fabricmc.fabric-api") } + modImplementation "maven.modrinth:fabrictailor:2.1.2" + modImplementation "maven.modrinth:vanish:1.4.2+1.20" + // Do not edit or remove implementation project(":Common") } @@ -17,8 +21,11 @@ shadowJar { 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') @@ -49,6 +56,7 @@ jar { processResources { from project(":Common").sourceSets.main.resources def buildProps = project.properties.clone() + println(project.version) filesMatching(['fabric.mod.json']) { expand buildProps @@ -67,9 +75,7 @@ tasks.withType(JavaCompile).configureEach { publishing { publications { mavenJava(MavenPublication) { - groupId project.group artifactId project.archivesBaseName - version project.version from components.java artifact(remapJar) { diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java b/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java index a807e81..c66c210 100644 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java @@ -3,9 +3,11 @@ package com.hypherionmc.craterlib; import com.hypherionmc.craterlib.api.events.server.CraterRegisterCommandEvent; import com.hypherionmc.craterlib.api.events.server.CraterServerLifecycleEvent; import com.hypherionmc.craterlib.common.FabricCommonPlatform; +import com.hypherionmc.craterlib.compat.Vanish; 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.CraterFabricNetworkHandler; import com.hypherionmc.craterlib.nojang.commands.CommandsRegistry; import com.hypherionmc.craterlib.nojang.server.BridgedMinecraftServer; @@ -32,5 +34,9 @@ public class CraterLibInitializer implements ModInitializer { ServerLifecycleEvents.SERVER_STARTED.register(li -> CraterEventBus.INSTANCE.postEvent(new CraterServerLifecycleEvent.Started(BridgedMinecraftServer.of(li)))); ServerLifecycleEvents.SERVER_STOPPING.register(server -> CraterEventBus.INSTANCE.postEvent(new CraterServerLifecycleEvent.Stopping(BridgedMinecraftServer.of(server)))); ServerLifecycleEvents.SERVER_STOPPED.register(server -> CraterEventBus.INSTANCE.postEvent(new CraterServerLifecycleEvent.Stopped(BridgedMinecraftServer.of(server)))); + + if (ModloaderEnvironment.INSTANCE.isModLoaded("melius-vanish")) { + Vanish.register(); + } } } diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java new file mode 100644 index 0000000..dbcaf63 --- /dev/null +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java @@ -0,0 +1,23 @@ +package com.hypherionmc.craterlib.common; + +import com.hypherionmc.craterlib.compat.FabricTailor; +import com.hypherionmc.craterlib.compat.Vanish; +import com.hypherionmc.craterlib.core.platform.CompatUtils; +import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; + +public class FabricCompatHelper implements CompatUtils { + + @Override + public boolean isPlayerActive(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("melius-vanish")) + return true; + + return Vanish.isPlayerVanished(player.toMojangServerPlayer()); + } + + @Override + public String getSkinUUID(BridgedPlayer player) { + return FabricTailor.getTailorSkin(player.toMojangServerPlayer()); + } +} diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/compat/FabricTailor.java b/Fabric/src/main/java/com/hypherionmc/craterlib/compat/FabricTailor.java new file mode 100644 index 0000000..b95a7d7 --- /dev/null +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/compat/FabricTailor.java @@ -0,0 +1,23 @@ +package com.hypherionmc.craterlib.compat; + +import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; +import net.minecraft.server.level.ServerPlayer; +import org.samo_lego.fabrictailor.casts.TailoredPlayer; +public class FabricTailor { + + public static String getTailorSkin(ServerPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("fabrictailor")) + return player.getStringUUID(); + + try { + if (player instanceof TailoredPlayer tp) { + return tp.getSkinId(); + } + } catch (Exception e) { + e.printStackTrace(); + } + + return player.getStringUUID(); + } + +} \ No newline at end of file diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/compat/Vanish.java b/Fabric/src/main/java/com/hypherionmc/craterlib/compat/Vanish.java new file mode 100644 index 0000000..cc6c1e0 --- /dev/null +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/compat/Vanish.java @@ -0,0 +1,25 @@ +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 me.drex.vanish.api.VanishAPI; +import me.drex.vanish.api.VanishEvents; +import net.minecraft.server.level.ServerPlayer; + +public class Vanish { + + public static void register() { + VanishEvents.VANISH_EVENT.register((serverPlayer, b) -> { + if (b) { + CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedOut(BridgedPlayer.of(serverPlayer))); + } else { + CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedIn(BridgedPlayer.of(serverPlayer))); + } + }); + } + + public static boolean isPlayerVanished(ServerPlayer player) { + return VanishAPI.isVanished(player); + } +} diff --git a/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CompatUtils b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CompatUtils new file mode 100644 index 0000000..62f79a8 --- /dev/null +++ b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CompatUtils @@ -0,0 +1 @@ +com.hypherionmc.craterlib.common.FabricCompatHelper \ No newline at end of file diff --git a/Forge/build.gradle b/Forge/build.gradle index 80e3256..7735814 100644 --- a/Forge/build.gradle +++ b/Forge/build.gradle @@ -2,6 +2,8 @@ archivesBaseName = "${mod_name.replace(" ", "")}-Forge-${minecraft_version}" dependencies { + // Compat + modImplementation("maven.modrinth:vanishmod:1.1.12.1") // Do not edit or remove implementation project(":Common") @@ -12,8 +14,11 @@ shadowJar { 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') @@ -63,9 +68,7 @@ tasks.withType(JavaCompile).configureEach { publishing { publications { mavenJava(MavenPublication) { - groupId project.group artifactId project.archivesBaseName - version project.version from components.java artifact(remapJar) { diff --git a/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java b/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java index c4708a8..968da05 100644 --- a/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java @@ -2,9 +2,11 @@ package com.hypherionmc.craterlib; import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.ForgeServerEvents; +import com.hypherionmc.craterlib.compat.Vanish; 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; @@ -31,5 +33,9 @@ public class CraterLib { 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()); + } } } diff --git a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java new file mode 100644 index 0000000..34d519d --- /dev/null +++ b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java @@ -0,0 +1,22 @@ +package com.hypherionmc.craterlib.common; + +import com.hypherionmc.craterlib.core.platform.CompatUtils; +import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import redstonedubstep.mods.vanishmod.VanishUtil; + +public class ForgeCompatHelper implements CompatUtils { + + @Override + public boolean isPlayerActive(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) + return true; + + return VanishUtil.isVanished(player.toMojangServerPlayer()); + } + + @Override + public String getSkinUUID(BridgedPlayer player) { + return player.getStringUUID(); + } +} diff --git a/Forge/src/main/java/com/hypherionmc/craterlib/compat/Vanish.java b/Forge/src/main/java/com/hypherionmc/craterlib/compat/Vanish.java new file mode 100644 index 0000000..1727255 --- /dev/null +++ b/Forge/src/main/java/com/hypherionmc/craterlib/compat/Vanish.java @@ -0,0 +1,24 @@ +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.minecraftforge.eventbus.api.SubscribeEvent; +import redstonedubstep.mods.vanishmod.api.PlayerVanishEvent; + +public class Vanish { + + public Vanish() { + + } + + @SubscribeEvent + public void vanishevent(PlayerVanishEvent event) { + if (event.isVanished()) { + CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedOut(BridgedPlayer.of(event.getEntity()))); + } else { + CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedIn(BridgedPlayer.of(event.getEntity()))); + } + } + +} diff --git a/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CompatUtils b/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CompatUtils new file mode 100644 index 0000000..a9f823d --- /dev/null +++ b/Forge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CompatUtils @@ -0,0 +1 @@ +com.hypherionmc.craterlib.common.ForgeCompatHelper \ No newline at end of file diff --git a/NeoForge/build.gradle b/NeoForge/build.gradle index 2bec474..90474ed 100644 --- a/NeoForge/build.gradle +++ b/NeoForge/build.gradle @@ -1,6 +1,8 @@ archivesBaseName = "${mod_name.replace(" ", "")}-NeoForge-${minecraft_version}" dependencies { + // Compat + modImplementation("maven.modrinth:vanishmod:puxrKAMr") // Do not edit or remove implementation project(":Common") @@ -11,8 +13,11 @@ shadowJar { 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') @@ -62,9 +67,7 @@ tasks.withType(JavaCompile).configureEach { publishing { publications { mavenJava(MavenPublication) { - groupId project.group artifactId project.archivesBaseName - version project.version from components.java artifact(remapJar) { diff --git a/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java b/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java index 1625ac7..2ae793b 100644 --- a/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java @@ -2,10 +2,12 @@ package com.hypherionmc.craterlib; import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.NeoForgeServerEvents; +import com.hypherionmc.craterlib.compat.Vanish; import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; import com.hypherionmc.craterlib.core.networking.PacketRegistry; import com.hypherionmc.craterlib.core.networking.data.PacketSide; +import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; import com.hypherionmc.craterlib.network.CraterNeoForgeNetworkHandler; import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft; import com.hypherionmc.craterlib.nojang.client.BridgedOptions; @@ -26,6 +28,10 @@ public class CraterLib { NeoForge.EVENT_BUS.register(new NeoForgeServerEvents()); eventBus.addListener(this::commonSetup); handler = new CraterNeoForgeNetworkHandler(FMLLoader.getDist().isClient() ? PacketSide.CLIENT : PacketSide.SERVER); + + if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { + eventBus.register(new Vanish()); + } } public void commonSetup(FMLCommonSetupEvent evt) { diff --git a/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java b/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java new file mode 100644 index 0000000..469c172 --- /dev/null +++ b/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java @@ -0,0 +1,22 @@ +package com.hypherionmc.craterlib.common; + +import com.hypherionmc.craterlib.core.platform.CompatUtils; +import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import redstonedubstep.mods.vanishmod.VanishUtil; + +public class NeoForgeCompatHelper implements CompatUtils { + + @Override + public boolean isPlayerActive(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) + return true; + + return VanishUtil.isVanished(player.toMojangServerPlayer()); + } + + @Override + public String getSkinUUID(BridgedPlayer player) { + return player.getStringUUID(); + } +} diff --git a/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/Vanish.java b/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/Vanish.java new file mode 100644 index 0000000..0302e29 --- /dev/null +++ b/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/Vanish.java @@ -0,0 +1,24 @@ +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.neoforged.bus.api.SubscribeEvent; +import redstonedubstep.mods.vanishmod.api.PlayerVanishEvent; + +public class Vanish { + + public Vanish() { + + } + + @SubscribeEvent + public void vanishevent(PlayerVanishEvent event) { + if (event.isVanished()) { + CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedOut(BridgedPlayer.of(event.getEntity()))); + } else { + CraterEventBus.INSTANCE.postEvent(new CraterPlayerEvent.PlayerLoggedIn(BridgedPlayer.of(event.getEntity()))); + } + } + +} diff --git a/NeoForge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CompatUtils b/NeoForge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CompatUtils new file mode 100644 index 0000000..9475f11 --- /dev/null +++ b/NeoForge/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CompatUtils @@ -0,0 +1 @@ +com.hypherionmc.craterlib.common.NeoForgeCompatHelper \ No newline at end of file diff --git a/build.gradle b/build.gradle index 9f5613f..11c5bf6 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ plugins { id 'com.github.johnrengelman.shadow' version '8.1.1' apply false id "xyz.wagyourtail.unimined" version "1.1.0-SNAPSHOT" apply false id "me.hypherionmc.modutils.modpublisher" version "1.0.23+" - id "com.hypherionmc.modutils.orion" version "1.0.6" + id "com.hypherionmc.modutils.orion" version "1.0.7" id 'maven-publish' } @@ -33,6 +33,14 @@ subprojects { repositories { mavenCentral() + + maven { + name = "Modrinth" + url = "https://api.modrinth.com/maven" + content { + includeGroup "maven.modrinth" + } + } } configurations {