diff --git a/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java new file mode 100644 index 0000000..b8f7fb1 --- /dev/null +++ b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerBleedOutEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java new file mode 100644 index 0000000..909de16 --- /dev/null +++ b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerRevivedEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java new file mode 100644 index 0000000..21c30dc --- /dev/null +++ b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java @@ -0,0 +1,26 @@ +package com.hypherionmc.craterlib.api.events.server; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +public class WhitelistChangedEvent { + + @RequiredArgsConstructor + @Getter + public static final class EntryAdded extends CraterEvent { + + private final BridgedGameProfile profile; + + } + + @RequiredArgsConstructor + @Getter + public static final class EntryRemoved extends CraterEvent { + + private final BridgedGameProfile profile; + + } + +} diff --git a/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java index fb745fc..015cebe 100644 --- a/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java +++ b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java @@ -9,5 +9,8 @@ public interface CompatUtils { boolean isPlayerActive(BridgedPlayer player); String getSkinUUID(BridgedPlayer player); + boolean isPlayerBleeding(BridgedPlayer player); + boolean playerBledOut(BridgedPlayer player); + boolean playerRevived(BridgedPlayer player); } diff --git a/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java new file mode 100644 index 0000000..28ff343 --- /dev/null +++ b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java @@ -0,0 +1,14 @@ +package com.hypherionmc.craterlib.mixin.events; + +import net.minecraft.server.players.StoredUserEntry; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StoredUserEntry.class) +public interface StoredUserEntryAccessor { + + @Accessor("user") + @Nullable T getUser(); + +} diff --git a/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java new file mode 100644 index 0000000..f2e7d06 --- /dev/null +++ b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java @@ -0,0 +1,46 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.events.server.WhitelistChangedEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import com.mojang.authlib.GameProfile; +import net.minecraft.server.players.StoredUserEntry; +import net.minecraft.server.players.StoredUserList; +import net.minecraft.server.players.UserWhiteListEntry; +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; + +@SuppressWarnings({"unchecked", "rawtypes"}) +@Mixin(StoredUserList.class) +public abstract class WhitelistMixin> { + + @Shadow protected abstract boolean contains(K k0); + + @Inject(method = "add", at = @At("HEAD")) + private void injectAddEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && !contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryAdded(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + + @Inject(method = "remove(Lnet/minecraft/server/players/StoredUserEntry;)V", at = @At("HEAD")) + private void injectRemoveEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryRemoved(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + +} diff --git a/1.18.2/Common/src/main/resources/craterlib.mixins.json b/1.18.2/Common/src/main/resources/craterlib.mixins.json index 1462775..4e5e3be 100644 --- a/1.18.2/Common/src/main/resources/craterlib.mixins.json +++ b/1.18.2/Common/src/main/resources/craterlib.mixins.json @@ -4,6 +4,8 @@ "package": "com.hypherionmc.craterlib.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "events.StoredUserEntryAccessor", + "events.WhitelistMixin" ], "client": [ "ChatInputSuggestorMixin", diff --git a/1.18.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java b/1.18.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java index ce16da7..fa369b5 100644 --- a/1.18.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java +++ b/1.18.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java @@ -20,4 +20,19 @@ public class FabricCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return FabricTailor.getTailorSkin(player.toMojangServerPlayer()); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.18.2/Forge/build.gradle b/1.18.2/Forge/build.gradle index 9f27438..3dc70cc 100644 --- a/1.18.2/Forge/build.gradle +++ b/1.18.2/Forge/build.gradle @@ -6,6 +6,8 @@ dependencies { modImplementation("maven.modrinth:vanishmod:${vanishmod}") modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") + modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") + modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") // Do not edit or remove implementation project(":Common") diff --git a/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java b/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java index 968da05..1a445fc 100644 --- a/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java @@ -2,6 +2,7 @@ package com.hypherionmc.craterlib; import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.ForgeServerEvents; +import com.hypherionmc.craterlib.compat.PlayerReviveEvents; import com.hypherionmc.craterlib.compat.Vanish; import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; @@ -37,5 +38,9 @@ public class CraterLib { if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { MinecraftForge.EVENT_BUS.register(new Vanish()); } + + if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { + MinecraftForge.EVENT_BUS.register(new PlayerReviveEvents()); + } } } diff --git a/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java b/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java index 7c4795b..bd006cd 100644 --- a/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ b/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java @@ -3,6 +3,8 @@ 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 team.creative.playerrevive.api.IBleeding; +import team.creative.playerrevive.server.PlayerReviveServer; import redstonedubstep.mods.vanishmod.VanishUtil; public class ForgeCompatHelper implements CompatUtils { @@ -19,4 +21,30 @@ public class ForgeCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return player.getStringUUID(); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.bledOut(); + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.revived(); + } } diff --git a/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java b/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java new file mode 100644 index 0000000..2b8d86a --- /dev/null +++ b/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java @@ -0,0 +1,23 @@ +package com.hypherionmc.craterlib.compat; + +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.NoArgsConstructor; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import team.creative.playerrevive.api.event.PlayerBleedOutEvent; +import team.creative.playerrevive.api.event.PlayerRevivedEvent; + +@NoArgsConstructor +public class PlayerReviveEvents { + + @SubscribeEvent + public void playerRevived(PlayerRevivedEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getPlayer()))); + } + + @SubscribeEvent + public void playerBledOutEvent(PlayerBleedOutEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getPlayer()))); + } + +} \ No newline at end of file diff --git a/1.18.2/NeoForge/src/main/resources/craterlib_logo.png b/1.18.2/NeoForge/src/main/resources/craterlib_logo.png deleted file mode 100644 index ce0159c..0000000 Binary files a/1.18.2/NeoForge/src/main/resources/craterlib_logo.png and /dev/null differ diff --git a/1.18.2/build.gradle b/1.18.2/build.gradle index a911062..2b72022 100644 --- a/1.18.2/build.gradle +++ b/1.18.2/build.gradle @@ -49,6 +49,10 @@ subprojects { includeGroup "maven.modrinth" } } + + maven { + url = "https://unimaven.cc" + } } configurations { diff --git a/1.18.2/changelog.md b/1.18.2/changelog.md index c4a47e5..1e6ff6e 100644 --- a/1.18.2/changelog.md +++ b/1.18.2/changelog.md @@ -6,4 +6,7 @@ **New Features**: - Swapped Built In Config screen for a Cloth Config System, so client side mods can have in-game configs -- Added new APIs for Simple RPC (V4 rewrite) \ No newline at end of file +- Added new APIs for Simple RPC (V4 rewrite) +- Added new APIs for getting player information from Commands +- Added Compat API for Player Revive Mod +- Added new APIs to know when the Minecraft Whitelist changes \ No newline at end of file diff --git a/1.18.2/gradle.properties b/1.18.2/gradle.properties index 41be151..3b3329f 100644 --- a/1.18.2/gradle.properties +++ b/1.18.2/gradle.properties @@ -2,7 +2,7 @@ version_major=2 version_minor=1 version_patch=3 -version_build=0 +version_build=1 #Mod mod_author=HypherionSA @@ -29,6 +29,8 @@ discord_formatter=2.0.0 cloth_config=6.5.102 # Mod Dependencies +player_revive=5335413 +creative_core=5335387 ftb_ranks=1802.1.11-build.71 ftb_essentials=1802.2.2-build.83 fabrictailor=1.9.0+1.18.2 diff --git a/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java new file mode 100644 index 0000000..b8f7fb1 --- /dev/null +++ b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerBleedOutEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java new file mode 100644 index 0000000..909de16 --- /dev/null +++ b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerRevivedEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java new file mode 100644 index 0000000..21c30dc --- /dev/null +++ b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java @@ -0,0 +1,26 @@ +package com.hypherionmc.craterlib.api.events.server; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +public class WhitelistChangedEvent { + + @RequiredArgsConstructor + @Getter + public static final class EntryAdded extends CraterEvent { + + private final BridgedGameProfile profile; + + } + + @RequiredArgsConstructor + @Getter + public static final class EntryRemoved extends CraterEvent { + + private final BridgedGameProfile profile; + + } + +} diff --git a/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java index fb745fc..015cebe 100644 --- a/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java +++ b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java @@ -9,5 +9,8 @@ public interface CompatUtils { boolean isPlayerActive(BridgedPlayer player); String getSkinUUID(BridgedPlayer player); + boolean isPlayerBleeding(BridgedPlayer player); + boolean playerBledOut(BridgedPlayer player); + boolean playerRevived(BridgedPlayer player); } diff --git a/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java new file mode 100644 index 0000000..28ff343 --- /dev/null +++ b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java @@ -0,0 +1,14 @@ +package com.hypherionmc.craterlib.mixin.events; + +import net.minecraft.server.players.StoredUserEntry; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StoredUserEntry.class) +public interface StoredUserEntryAccessor { + + @Accessor("user") + @Nullable T getUser(); + +} diff --git a/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java new file mode 100644 index 0000000..f2e7d06 --- /dev/null +++ b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java @@ -0,0 +1,46 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.events.server.WhitelistChangedEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import com.mojang.authlib.GameProfile; +import net.minecraft.server.players.StoredUserEntry; +import net.minecraft.server.players.StoredUserList; +import net.minecraft.server.players.UserWhiteListEntry; +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; + +@SuppressWarnings({"unchecked", "rawtypes"}) +@Mixin(StoredUserList.class) +public abstract class WhitelistMixin> { + + @Shadow protected abstract boolean contains(K k0); + + @Inject(method = "add", at = @At("HEAD")) + private void injectAddEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && !contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryAdded(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + + @Inject(method = "remove(Lnet/minecraft/server/players/StoredUserEntry;)V", at = @At("HEAD")) + private void injectRemoveEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryRemoved(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + +} diff --git a/1.19.2/Common/src/main/resources/craterlib.mixins.json b/1.19.2/Common/src/main/resources/craterlib.mixins.json index 1462775..4e5e3be 100644 --- a/1.19.2/Common/src/main/resources/craterlib.mixins.json +++ b/1.19.2/Common/src/main/resources/craterlib.mixins.json @@ -4,6 +4,8 @@ "package": "com.hypherionmc.craterlib.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "events.StoredUserEntryAccessor", + "events.WhitelistMixin" ], "client": [ "ChatInputSuggestorMixin", diff --git a/1.19.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java b/1.19.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java index ce16da7..fa369b5 100644 --- a/1.19.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java +++ b/1.19.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java @@ -20,4 +20,19 @@ public class FabricCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return FabricTailor.getTailorSkin(player.toMojangServerPlayer()); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.19.2/Forge/build.gradle b/1.19.2/Forge/build.gradle index b5214b6..424cbde 100644 --- a/1.19.2/Forge/build.gradle +++ b/1.19.2/Forge/build.gradle @@ -9,6 +9,8 @@ dependencies { stupidRemapArch("dev.ftb.mods:ftb-ranks-forge:${ftb_ranks}") modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") + modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") + modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") // Do not edit or remove implementation project(":Common") diff --git a/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java b/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java index 968da05..1a445fc 100644 --- a/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java @@ -2,6 +2,7 @@ package com.hypherionmc.craterlib; import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.ForgeServerEvents; +import com.hypherionmc.craterlib.compat.PlayerReviveEvents; import com.hypherionmc.craterlib.compat.Vanish; import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; @@ -37,5 +38,9 @@ public class CraterLib { if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { MinecraftForge.EVENT_BUS.register(new Vanish()); } + + if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { + MinecraftForge.EVENT_BUS.register(new PlayerReviveEvents()); + } } } diff --git a/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java b/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java index 7c4795b..bd006cd 100644 --- a/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ b/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java @@ -3,6 +3,8 @@ 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 team.creative.playerrevive.api.IBleeding; +import team.creative.playerrevive.server.PlayerReviveServer; import redstonedubstep.mods.vanishmod.VanishUtil; public class ForgeCompatHelper implements CompatUtils { @@ -19,4 +21,30 @@ public class ForgeCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return player.getStringUUID(); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.bledOut(); + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.revived(); + } } diff --git a/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java b/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java new file mode 100644 index 0000000..574efcb --- /dev/null +++ b/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java @@ -0,0 +1,23 @@ +package com.hypherionmc.craterlib.compat; + +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.NoArgsConstructor; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import team.creative.playerrevive.api.event.PlayerBleedOutEvent; +import team.creative.playerrevive.api.event.PlayerRevivedEvent; + +@NoArgsConstructor +public class PlayerReviveEvents { + + @SubscribeEvent + public void playerRevived(PlayerRevivedEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + + @SubscribeEvent + public void playerBledOutEvent(PlayerBleedOutEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + +} \ No newline at end of file diff --git a/1.19.2/NeoForge/src/main/resources/craterlib_logo.png b/1.19.2/NeoForge/src/main/resources/craterlib_logo.png deleted file mode 100644 index ce0159c..0000000 Binary files a/1.19.2/NeoForge/src/main/resources/craterlib_logo.png and /dev/null differ diff --git a/1.19.2/build.gradle b/1.19.2/build.gradle index 74ae41e..7196c71 100644 --- a/1.19.2/build.gradle +++ b/1.19.2/build.gradle @@ -49,6 +49,10 @@ subprojects { includeGroup "maven.modrinth" } } + + maven { + url = "https://unimaven.cc" + } } configurations { diff --git a/1.19.2/changelog.md b/1.19.2/changelog.md index c4a47e5..1e6ff6e 100644 --- a/1.19.2/changelog.md +++ b/1.19.2/changelog.md @@ -6,4 +6,7 @@ **New Features**: - Swapped Built In Config screen for a Cloth Config System, so client side mods can have in-game configs -- Added new APIs for Simple RPC (V4 rewrite) \ No newline at end of file +- Added new APIs for Simple RPC (V4 rewrite) +- Added new APIs for getting player information from Commands +- Added Compat API for Player Revive Mod +- Added new APIs to know when the Minecraft Whitelist changes \ No newline at end of file diff --git a/1.19.2/gradle.properties b/1.19.2/gradle.properties index fb4946a..a97f913 100644 --- a/1.19.2/gradle.properties +++ b/1.19.2/gradle.properties @@ -2,7 +2,7 @@ version_major=2 version_minor=1 version_patch=3 -version_build=0 +version_build=1 #Mod mod_author=HypherionSA @@ -29,6 +29,8 @@ discord_formatter=2.0.0 cloth_config=8.3.134 # Mod Dependencies +player_revive=5491953 +creative_core=5491926 ftb_ranks=1902.1.16-build.114 ftb_essentials=1902.3.5-build.135 fabrictailor=2.0.1 diff --git a/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java new file mode 100644 index 0000000..b8f7fb1 --- /dev/null +++ b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerBleedOutEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java new file mode 100644 index 0000000..909de16 --- /dev/null +++ b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerRevivedEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java new file mode 100644 index 0000000..21c30dc --- /dev/null +++ b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java @@ -0,0 +1,26 @@ +package com.hypherionmc.craterlib.api.events.server; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +public class WhitelistChangedEvent { + + @RequiredArgsConstructor + @Getter + public static final class EntryAdded extends CraterEvent { + + private final BridgedGameProfile profile; + + } + + @RequiredArgsConstructor + @Getter + public static final class EntryRemoved extends CraterEvent { + + private final BridgedGameProfile profile; + + } + +} diff --git a/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java index fb745fc..015cebe 100644 --- a/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java +++ b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java @@ -9,5 +9,8 @@ public interface CompatUtils { boolean isPlayerActive(BridgedPlayer player); String getSkinUUID(BridgedPlayer player); + boolean isPlayerBleeding(BridgedPlayer player); + boolean playerBledOut(BridgedPlayer player); + boolean playerRevived(BridgedPlayer player); } diff --git a/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java new file mode 100644 index 0000000..28ff343 --- /dev/null +++ b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java @@ -0,0 +1,14 @@ +package com.hypherionmc.craterlib.mixin.events; + +import net.minecraft.server.players.StoredUserEntry; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StoredUserEntry.class) +public interface StoredUserEntryAccessor { + + @Accessor("user") + @Nullable T getUser(); + +} diff --git a/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java new file mode 100644 index 0000000..f2e7d06 --- /dev/null +++ b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java @@ -0,0 +1,46 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.events.server.WhitelistChangedEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import com.mojang.authlib.GameProfile; +import net.minecraft.server.players.StoredUserEntry; +import net.minecraft.server.players.StoredUserList; +import net.minecraft.server.players.UserWhiteListEntry; +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; + +@SuppressWarnings({"unchecked", "rawtypes"}) +@Mixin(StoredUserList.class) +public abstract class WhitelistMixin> { + + @Shadow protected abstract boolean contains(K k0); + + @Inject(method = "add", at = @At("HEAD")) + private void injectAddEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && !contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryAdded(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + + @Inject(method = "remove(Lnet/minecraft/server/players/StoredUserEntry;)V", at = @At("HEAD")) + private void injectRemoveEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryRemoved(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + +} diff --git a/1.19.3/Common/src/main/resources/craterlib.mixins.json b/1.19.3/Common/src/main/resources/craterlib.mixins.json index c910ed2..704d796 100644 --- a/1.19.3/Common/src/main/resources/craterlib.mixins.json +++ b/1.19.3/Common/src/main/resources/craterlib.mixins.json @@ -4,6 +4,8 @@ "package": "com.hypherionmc.craterlib.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "events.StoredUserEntryAccessor", + "events.WhitelistMixin" ], "client": [ "ChatInputSuggestorMixin", diff --git a/1.19.3/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java b/1.19.3/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java index ce16da7..fa369b5 100644 --- a/1.19.3/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java +++ b/1.19.3/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java @@ -20,4 +20,19 @@ public class FabricCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return FabricTailor.getTailorSkin(player.toMojangServerPlayer()); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.19.3/Forge/build.gradle b/1.19.3/Forge/build.gradle index da35ce4..8f18a13 100644 --- a/1.19.3/Forge/build.gradle +++ b/1.19.3/Forge/build.gradle @@ -9,6 +9,8 @@ dependencies { stupidRemapArch("dev.ftb.mods:ftb-ranks-forge:${ftb_ranks}") modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") + modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") + modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") // Do not edit or remove implementation project(":Common") diff --git a/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java b/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java index 968da05..1a445fc 100644 --- a/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java @@ -2,6 +2,7 @@ package com.hypherionmc.craterlib; import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.ForgeServerEvents; +import com.hypherionmc.craterlib.compat.PlayerReviveEvents; import com.hypherionmc.craterlib.compat.Vanish; import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; @@ -37,5 +38,9 @@ public class CraterLib { if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { MinecraftForge.EVENT_BUS.register(new Vanish()); } + + if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { + MinecraftForge.EVENT_BUS.register(new PlayerReviveEvents()); + } } } diff --git a/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java b/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java index 7c4795b..bd006cd 100644 --- a/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ b/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java @@ -3,6 +3,8 @@ 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 team.creative.playerrevive.api.IBleeding; +import team.creative.playerrevive.server.PlayerReviveServer; import redstonedubstep.mods.vanishmod.VanishUtil; public class ForgeCompatHelper implements CompatUtils { @@ -19,4 +21,30 @@ public class ForgeCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return player.getStringUUID(); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.bledOut(); + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.revived(); + } } diff --git a/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java b/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java new file mode 100644 index 0000000..574efcb --- /dev/null +++ b/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java @@ -0,0 +1,23 @@ +package com.hypherionmc.craterlib.compat; + +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.NoArgsConstructor; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import team.creative.playerrevive.api.event.PlayerBleedOutEvent; +import team.creative.playerrevive.api.event.PlayerRevivedEvent; + +@NoArgsConstructor +public class PlayerReviveEvents { + + @SubscribeEvent + public void playerRevived(PlayerRevivedEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + + @SubscribeEvent + public void playerBledOutEvent(PlayerBleedOutEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + +} \ No newline at end of file diff --git a/1.19.3/NeoForge/src/main/resources/craterlib_logo.png b/1.19.3/NeoForge/src/main/resources/craterlib_logo.png deleted file mode 100644 index ce0159c..0000000 Binary files a/1.19.3/NeoForge/src/main/resources/craterlib_logo.png and /dev/null differ diff --git a/1.19.3/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java b/1.19.3/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java index 484a849..bc3a2b2 100644 --- a/1.19.3/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java +++ b/1.19.3/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java @@ -75,4 +75,18 @@ public class PaperCompatHelper implements CompatUtils { return false; } + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.19.3/build.gradle b/1.19.3/build.gradle index 74ae41e..7196c71 100644 --- a/1.19.3/build.gradle +++ b/1.19.3/build.gradle @@ -49,6 +49,10 @@ subprojects { includeGroup "maven.modrinth" } } + + maven { + url = "https://unimaven.cc" + } } configurations { diff --git a/1.19.3/changelog.md b/1.19.3/changelog.md index c4a47e5..1e6ff6e 100644 --- a/1.19.3/changelog.md +++ b/1.19.3/changelog.md @@ -6,4 +6,7 @@ **New Features**: - Swapped Built In Config screen for a Cloth Config System, so client side mods can have in-game configs -- Added new APIs for Simple RPC (V4 rewrite) \ No newline at end of file +- Added new APIs for Simple RPC (V4 rewrite) +- Added new APIs for getting player information from Commands +- Added Compat API for Player Revive Mod +- Added new APIs to know when the Minecraft Whitelist changes \ No newline at end of file diff --git a/1.19.3/gradle.properties b/1.19.3/gradle.properties index 4925d03..982f32b 100644 --- a/1.19.3/gradle.properties +++ b/1.19.3/gradle.properties @@ -2,7 +2,7 @@ version_major=2 version_minor=1 version_patch=3 -version_build=0 +version_build=1 #Mod mod_author=HypherionSA @@ -29,6 +29,8 @@ discord_formatter=2.0.0 cloth_config=9.1.104 # Mod Dependencies +player_revive=4353422 +creative_core=4407520 ftb_ranks=1904.1.1-build.82 ftb_essentials=1904.1.0-build.81-SNAPSHOT fabrictailor=2.0.2 diff --git a/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java new file mode 100644 index 0000000..b8f7fb1 --- /dev/null +++ b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerBleedOutEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java new file mode 100644 index 0000000..909de16 --- /dev/null +++ b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerRevivedEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java new file mode 100644 index 0000000..21c30dc --- /dev/null +++ b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java @@ -0,0 +1,26 @@ +package com.hypherionmc.craterlib.api.events.server; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +public class WhitelistChangedEvent { + + @RequiredArgsConstructor + @Getter + public static final class EntryAdded extends CraterEvent { + + private final BridgedGameProfile profile; + + } + + @RequiredArgsConstructor + @Getter + public static final class EntryRemoved extends CraterEvent { + + private final BridgedGameProfile profile; + + } + +} diff --git a/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java index fb745fc..015cebe 100644 --- a/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java +++ b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java @@ -9,5 +9,8 @@ public interface CompatUtils { boolean isPlayerActive(BridgedPlayer player); String getSkinUUID(BridgedPlayer player); + boolean isPlayerBleeding(BridgedPlayer player); + boolean playerBledOut(BridgedPlayer player); + boolean playerRevived(BridgedPlayer player); } diff --git a/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java new file mode 100644 index 0000000..28ff343 --- /dev/null +++ b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java @@ -0,0 +1,14 @@ +package com.hypherionmc.craterlib.mixin.events; + +import net.minecraft.server.players.StoredUserEntry; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StoredUserEntry.class) +public interface StoredUserEntryAccessor { + + @Accessor("user") + @Nullable T getUser(); + +} diff --git a/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java new file mode 100644 index 0000000..f2e7d06 --- /dev/null +++ b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java @@ -0,0 +1,46 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.events.server.WhitelistChangedEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import com.mojang.authlib.GameProfile; +import net.minecraft.server.players.StoredUserEntry; +import net.minecraft.server.players.StoredUserList; +import net.minecraft.server.players.UserWhiteListEntry; +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; + +@SuppressWarnings({"unchecked", "rawtypes"}) +@Mixin(StoredUserList.class) +public abstract class WhitelistMixin> { + + @Shadow protected abstract boolean contains(K k0); + + @Inject(method = "add", at = @At("HEAD")) + private void injectAddEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && !contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryAdded(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + + @Inject(method = "remove(Lnet/minecraft/server/players/StoredUserEntry;)V", at = @At("HEAD")) + private void injectRemoveEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryRemoved(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + +} diff --git a/1.20.2/Common/src/main/resources/craterlib.mixins.json b/1.20.2/Common/src/main/resources/craterlib.mixins.json index c910ed2..704d796 100644 --- a/1.20.2/Common/src/main/resources/craterlib.mixins.json +++ b/1.20.2/Common/src/main/resources/craterlib.mixins.json @@ -4,6 +4,8 @@ "package": "com.hypherionmc.craterlib.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "events.StoredUserEntryAccessor", + "events.WhitelistMixin" ], "client": [ "ChatInputSuggestorMixin", diff --git a/1.20.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java b/1.20.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java index ce16da7..fa369b5 100644 --- a/1.20.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java +++ b/1.20.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java @@ -20,4 +20,19 @@ public class FabricCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return FabricTailor.getTailorSkin(player.toMojangServerPlayer()); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.20.2/Forge/build.gradle b/1.20.2/Forge/build.gradle index a18efbf..485aac5 100644 --- a/1.20.2/Forge/build.gradle +++ b/1.20.2/Forge/build.gradle @@ -9,6 +9,8 @@ dependencies { stupidRemapArch("dev.ftb.mods:ftb-ranks-forge:${ftb_ranks}") modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") + modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") + modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") // Do not edit or remove implementation project(":Common") diff --git a/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java b/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java index 968da05..1a445fc 100644 --- a/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java @@ -2,6 +2,7 @@ package com.hypherionmc.craterlib; import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.ForgeServerEvents; +import com.hypherionmc.craterlib.compat.PlayerReviveEvents; import com.hypherionmc.craterlib.compat.Vanish; import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; @@ -37,5 +38,9 @@ public class CraterLib { if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { MinecraftForge.EVENT_BUS.register(new Vanish()); } + + if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { + MinecraftForge.EVENT_BUS.register(new PlayerReviveEvents()); + } } } diff --git a/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java b/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java index 7c4795b..bd006cd 100644 --- a/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ b/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java @@ -3,6 +3,8 @@ 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 team.creative.playerrevive.api.IBleeding; +import team.creative.playerrevive.server.PlayerReviveServer; import redstonedubstep.mods.vanishmod.VanishUtil; public class ForgeCompatHelper implements CompatUtils { @@ -19,4 +21,30 @@ public class ForgeCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return player.getStringUUID(); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.bledOut(); + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.revived(); + } } diff --git a/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java b/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java new file mode 100644 index 0000000..574efcb --- /dev/null +++ b/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java @@ -0,0 +1,23 @@ +package com.hypherionmc.craterlib.compat; + +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.NoArgsConstructor; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import team.creative.playerrevive.api.event.PlayerBleedOutEvent; +import team.creative.playerrevive.api.event.PlayerRevivedEvent; + +@NoArgsConstructor +public class PlayerReviveEvents { + + @SubscribeEvent + public void playerRevived(PlayerRevivedEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + + @SubscribeEvent + public void playerBledOutEvent(PlayerBleedOutEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + +} \ No newline at end of file diff --git a/1.20.2/NeoForge/src/main/resources/craterlib_logo.png b/1.20.2/NeoForge/src/main/resources/craterlib_logo.png deleted file mode 100644 index ce0159c..0000000 Binary files a/1.20.2/NeoForge/src/main/resources/craterlib_logo.png and /dev/null differ diff --git a/1.20.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java b/1.20.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java index 484a849..bc3a2b2 100644 --- a/1.20.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java +++ b/1.20.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java @@ -75,4 +75,18 @@ public class PaperCompatHelper implements CompatUtils { return false; } + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.20.2/build.gradle b/1.20.2/build.gradle index 74ae41e..7196c71 100644 --- a/1.20.2/build.gradle +++ b/1.20.2/build.gradle @@ -49,6 +49,10 @@ subprojects { includeGroup "maven.modrinth" } } + + maven { + url = "https://unimaven.cc" + } } configurations { diff --git a/1.20.2/changelog.md b/1.20.2/changelog.md index c4a47e5..1e6ff6e 100644 --- a/1.20.2/changelog.md +++ b/1.20.2/changelog.md @@ -6,4 +6,7 @@ **New Features**: - Swapped Built In Config screen for a Cloth Config System, so client side mods can have in-game configs -- Added new APIs for Simple RPC (V4 rewrite) \ No newline at end of file +- Added new APIs for Simple RPC (V4 rewrite) +- Added new APIs for getting player information from Commands +- Added Compat API for Player Revive Mod +- Added new APIs to know when the Minecraft Whitelist changes \ No newline at end of file diff --git a/1.20.2/gradle.properties b/1.20.2/gradle.properties index 87e934f..4a3cd89 100644 --- a/1.20.2/gradle.properties +++ b/1.20.2/gradle.properties @@ -2,7 +2,7 @@ version_major=2 version_minor=1 version_patch=3 -version_build=0 +version_build=1 #Mod mod_author=HypherionSA @@ -29,6 +29,8 @@ discord_formatter=2.0.0 cloth_config=12.0.137 # Mod Dependencies +player_revive=4785938 +creative_core=4796447 ftb_ranks=2001.1.3 ftb_essentials=2001.2.2 fabrictailor=2.2.1 diff --git a/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java new file mode 100644 index 0000000..b8f7fb1 --- /dev/null +++ b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerBleedOutEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java new file mode 100644 index 0000000..909de16 --- /dev/null +++ b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerRevivedEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java new file mode 100644 index 0000000..21c30dc --- /dev/null +++ b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java @@ -0,0 +1,26 @@ +package com.hypherionmc.craterlib.api.events.server; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +public class WhitelistChangedEvent { + + @RequiredArgsConstructor + @Getter + public static final class EntryAdded extends CraterEvent { + + private final BridgedGameProfile profile; + + } + + @RequiredArgsConstructor + @Getter + public static final class EntryRemoved extends CraterEvent { + + private final BridgedGameProfile profile; + + } + +} diff --git a/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java index fb745fc..015cebe 100644 --- a/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java +++ b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java @@ -9,5 +9,8 @@ public interface CompatUtils { boolean isPlayerActive(BridgedPlayer player); String getSkinUUID(BridgedPlayer player); + boolean isPlayerBleeding(BridgedPlayer player); + boolean playerBledOut(BridgedPlayer player); + boolean playerRevived(BridgedPlayer player); } diff --git a/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java new file mode 100644 index 0000000..28ff343 --- /dev/null +++ b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java @@ -0,0 +1,14 @@ +package com.hypherionmc.craterlib.mixin.events; + +import net.minecraft.server.players.StoredUserEntry; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StoredUserEntry.class) +public interface StoredUserEntryAccessor { + + @Accessor("user") + @Nullable T getUser(); + +} diff --git a/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java new file mode 100644 index 0000000..f2e7d06 --- /dev/null +++ b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java @@ -0,0 +1,46 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.events.server.WhitelistChangedEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import com.mojang.authlib.GameProfile; +import net.minecraft.server.players.StoredUserEntry; +import net.minecraft.server.players.StoredUserList; +import net.minecraft.server.players.UserWhiteListEntry; +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; + +@SuppressWarnings({"unchecked", "rawtypes"}) +@Mixin(StoredUserList.class) +public abstract class WhitelistMixin> { + + @Shadow protected abstract boolean contains(K k0); + + @Inject(method = "add", at = @At("HEAD")) + private void injectAddEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && !contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryAdded(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + + @Inject(method = "remove(Lnet/minecraft/server/players/StoredUserEntry;)V", at = @At("HEAD")) + private void injectRemoveEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryRemoved(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + +} diff --git a/1.20.4/Common/src/main/resources/craterlib.mixins.json b/1.20.4/Common/src/main/resources/craterlib.mixins.json index c910ed2..704d796 100644 --- a/1.20.4/Common/src/main/resources/craterlib.mixins.json +++ b/1.20.4/Common/src/main/resources/craterlib.mixins.json @@ -4,6 +4,8 @@ "package": "com.hypherionmc.craterlib.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "events.StoredUserEntryAccessor", + "events.WhitelistMixin" ], "client": [ "ChatInputSuggestorMixin", diff --git a/1.20.4/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java b/1.20.4/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java index ce16da7..fa369b5 100644 --- a/1.20.4/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java +++ b/1.20.4/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java @@ -20,4 +20,19 @@ public class FabricCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return FabricTailor.getTailorSkin(player.toMojangServerPlayer()); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.20.4/Forge/build.gradle b/1.20.4/Forge/build.gradle index b2cfb8c..8303cb5 100644 --- a/1.20.4/Forge/build.gradle +++ b/1.20.4/Forge/build.gradle @@ -10,6 +10,10 @@ dependencies { modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") + // NOT AVAILABLE FOR FORGE + //modImplementation("unimaven.curseforge:playerrevive-266890:5019850") + //modImplementation("unimaven.curseforge:creativecore-257814:5140174") + // Do not edit or remove implementation project(":Common") } diff --git a/1.20.4/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java b/1.20.4/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java index 7c4795b..93a4da6 100644 --- a/1.20.4/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ b/1.20.4/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java @@ -19,4 +19,23 @@ public class ForgeCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return player.getStringUUID(); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.revived(); + } } diff --git a/1.20.4/NeoForge/build.gradle b/1.20.4/NeoForge/build.gradle index bede94c..1bf6340 100644 --- a/1.20.4/NeoForge/build.gradle +++ b/1.20.4/NeoForge/build.gradle @@ -8,6 +8,8 @@ dependencies { stupidRemapArch("dev.ftb.mods:ftb-ranks-neoforge:${ftb_ranks}") modImplementation("me.shedaniel.cloth:cloth-config-neoforge:${cloth_config}") + modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") + modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") // Do not edit or remove implementation project(":Common") diff --git a/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java b/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java index 6f8c155..cb2806b 100644 --- a/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java @@ -2,6 +2,7 @@ package com.hypherionmc.craterlib; import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.NeoForgeServerEvents; +import com.hypherionmc.craterlib.compat.PlayerReviveEvents; import com.hypherionmc.craterlib.compat.Vanish; import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; @@ -32,6 +33,10 @@ public class CraterLib { if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { NeoForge.EVENT_BUS.register(new Vanish()); } + + if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { + NeoForge.EVENT_BUS.register(new PlayerReviveEvents()); + } } public void commonSetup(FMLCommonSetupEvent evt) { diff --git a/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java b/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java index a39412c..268e797 100644 --- a/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java +++ b/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java @@ -4,6 +4,8 @@ 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; +import team.creative.playerrevive.api.IBleeding; +import team.creative.playerrevive.server.PlayerReviveServer; public class NeoForgeCompatHelper implements CompatUtils { @@ -19,4 +21,30 @@ public class NeoForgeCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return player.getStringUUID(); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.bledOut(); + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.revived(); + } } diff --git a/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java b/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java new file mode 100644 index 0000000..ffe9623 --- /dev/null +++ b/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java @@ -0,0 +1,23 @@ +package com.hypherionmc.craterlib.compat; + +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.NoArgsConstructor; +import net.neoforged.bus.api.SubscribeEvent; +import team.creative.playerrevive.api.event.PlayerBleedOutEvent; +import team.creative.playerrevive.api.event.PlayerRevivedEvent; + +@NoArgsConstructor +public class PlayerReviveEvents { + + @SubscribeEvent + public void playerRevived(PlayerRevivedEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + + @SubscribeEvent + public void playerBledOutEvent(PlayerBleedOutEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + +} diff --git a/1.20.4/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java b/1.20.4/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java index 484a849..bc3a2b2 100644 --- a/1.20.4/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java +++ b/1.20.4/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java @@ -75,4 +75,18 @@ public class PaperCompatHelper implements CompatUtils { return false; } + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.20.4/build.gradle b/1.20.4/build.gradle index d5286cd..a3f3964 100644 --- a/1.20.4/build.gradle +++ b/1.20.4/build.gradle @@ -49,6 +49,10 @@ subprojects { includeGroup "maven.modrinth" } } + + maven { + url = "https://unimaven.cc" + } } configurations { diff --git a/1.20.4/changelog.md b/1.20.4/changelog.md index c4a47e5..1e6ff6e 100644 --- a/1.20.4/changelog.md +++ b/1.20.4/changelog.md @@ -6,4 +6,7 @@ **New Features**: - Swapped Built In Config screen for a Cloth Config System, so client side mods can have in-game configs -- Added new APIs for Simple RPC (V4 rewrite) \ No newline at end of file +- Added new APIs for Simple RPC (V4 rewrite) +- Added new APIs for getting player information from Commands +- Added Compat API for Player Revive Mod +- Added new APIs to know when the Minecraft Whitelist changes \ No newline at end of file diff --git a/1.20.4/gradle.properties b/1.20.4/gradle.properties index 0232cd0..4ccc0f9 100644 --- a/1.20.4/gradle.properties +++ b/1.20.4/gradle.properties @@ -2,7 +2,7 @@ version_major=2 version_minor=1 version_patch=3 -version_build=0 +version_build=1 #Mod mod_author=HypherionSA @@ -37,6 +37,8 @@ vanish=1.5.4+1.20.4 mod_menu_version=9.2.0-beta.2 vanishmod=1.1.15 vanishmod_neo=puxrKAMr +player_revive=5019850 +creative_core=5140174 ftb_ranks=2004.2.0 ftb_essentials=2004.1.3 diff --git a/1.20/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java b/1.20/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java new file mode 100644 index 0000000..b8f7fb1 --- /dev/null +++ b/1.20/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerBleedOutEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.20/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java b/1.20/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java new file mode 100644 index 0000000..909de16 --- /dev/null +++ b/1.20/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerRevivedEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.20/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java b/1.20/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java new file mode 100644 index 0000000..21c30dc --- /dev/null +++ b/1.20/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java @@ -0,0 +1,26 @@ +package com.hypherionmc.craterlib.api.events.server; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +public class WhitelistChangedEvent { + + @RequiredArgsConstructor + @Getter + public static final class EntryAdded extends CraterEvent { + + private final BridgedGameProfile profile; + + } + + @RequiredArgsConstructor + @Getter + public static final class EntryRemoved extends CraterEvent { + + private final BridgedGameProfile profile; + + } + +} diff --git a/1.20/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java b/1.20/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java index fb745fc..015cebe 100644 --- a/1.20/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java +++ b/1.20/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java @@ -9,5 +9,8 @@ public interface CompatUtils { boolean isPlayerActive(BridgedPlayer player); String getSkinUUID(BridgedPlayer player); + boolean isPlayerBleeding(BridgedPlayer player); + boolean playerBledOut(BridgedPlayer player); + boolean playerRevived(BridgedPlayer player); } diff --git a/1.20/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java b/1.20/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java new file mode 100644 index 0000000..28ff343 --- /dev/null +++ b/1.20/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java @@ -0,0 +1,14 @@ +package com.hypherionmc.craterlib.mixin.events; + +import net.minecraft.server.players.StoredUserEntry; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StoredUserEntry.class) +public interface StoredUserEntryAccessor { + + @Accessor("user") + @Nullable T getUser(); + +} diff --git a/1.20/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java b/1.20/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java new file mode 100644 index 0000000..f2e7d06 --- /dev/null +++ b/1.20/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java @@ -0,0 +1,46 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.events.server.WhitelistChangedEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import com.mojang.authlib.GameProfile; +import net.minecraft.server.players.StoredUserEntry; +import net.minecraft.server.players.StoredUserList; +import net.minecraft.server.players.UserWhiteListEntry; +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; + +@SuppressWarnings({"unchecked", "rawtypes"}) +@Mixin(StoredUserList.class) +public abstract class WhitelistMixin> { + + @Shadow protected abstract boolean contains(K k0); + + @Inject(method = "add", at = @At("HEAD")) + private void injectAddEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && !contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryAdded(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + + @Inject(method = "remove(Lnet/minecraft/server/players/StoredUserEntry;)V", at = @At("HEAD")) + private void injectRemoveEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryRemoved(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + +} diff --git a/1.20/Common/src/main/resources/craterlib.mixins.json b/1.20/Common/src/main/resources/craterlib.mixins.json index c910ed2..704d796 100644 --- a/1.20/Common/src/main/resources/craterlib.mixins.json +++ b/1.20/Common/src/main/resources/craterlib.mixins.json @@ -4,6 +4,8 @@ "package": "com.hypherionmc.craterlib.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "events.StoredUserEntryAccessor", + "events.WhitelistMixin" ], "client": [ "ChatInputSuggestorMixin", diff --git a/1.20/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java b/1.20/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java index ce16da7..fa369b5 100644 --- a/1.20/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java +++ b/1.20/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java @@ -20,4 +20,19 @@ public class FabricCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return FabricTailor.getTailorSkin(player.toMojangServerPlayer()); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.20/Forge/build.gradle b/1.20/Forge/build.gradle index 7b774ab..bca4b9d 100644 --- a/1.20/Forge/build.gradle +++ b/1.20/Forge/build.gradle @@ -9,6 +9,8 @@ dependencies { stupidRemapArch("dev.ftb.mods:ftb-ranks-forge:${ftb_ranks}") modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") + modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") + modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") // Do not edit or remove implementation project(":Common") diff --git a/1.20/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java b/1.20/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java index 968da05..1a445fc 100644 --- a/1.20/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/1.20/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java @@ -2,6 +2,7 @@ package com.hypherionmc.craterlib; import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.ForgeServerEvents; +import com.hypherionmc.craterlib.compat.PlayerReviveEvents; import com.hypherionmc.craterlib.compat.Vanish; import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; @@ -37,5 +38,9 @@ public class CraterLib { if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { MinecraftForge.EVENT_BUS.register(new Vanish()); } + + if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { + MinecraftForge.EVENT_BUS.register(new PlayerReviveEvents()); + } } } diff --git a/1.20/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java b/1.20/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java index 7c4795b..bd006cd 100644 --- a/1.20/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ b/1.20/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java @@ -3,6 +3,8 @@ 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 team.creative.playerrevive.api.IBleeding; +import team.creative.playerrevive.server.PlayerReviveServer; import redstonedubstep.mods.vanishmod.VanishUtil; public class ForgeCompatHelper implements CompatUtils { @@ -19,4 +21,30 @@ public class ForgeCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return player.getStringUUID(); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.bledOut(); + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.revived(); + } } diff --git a/1.20/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java b/1.20/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java new file mode 100644 index 0000000..574efcb --- /dev/null +++ b/1.20/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java @@ -0,0 +1,23 @@ +package com.hypherionmc.craterlib.compat; + +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.NoArgsConstructor; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import team.creative.playerrevive.api.event.PlayerBleedOutEvent; +import team.creative.playerrevive.api.event.PlayerRevivedEvent; + +@NoArgsConstructor +public class PlayerReviveEvents { + + @SubscribeEvent + public void playerRevived(PlayerRevivedEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + + @SubscribeEvent + public void playerBledOutEvent(PlayerBleedOutEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + +} \ No newline at end of file diff --git a/1.20/NeoForge/src/main/resources/craterlib_logo.png b/1.20/NeoForge/src/main/resources/craterlib_logo.png deleted file mode 100644 index ce0159c..0000000 Binary files a/1.20/NeoForge/src/main/resources/craterlib_logo.png and /dev/null differ diff --git a/1.20/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java b/1.20/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java index 484a849..bc3a2b2 100644 --- a/1.20/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java +++ b/1.20/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java @@ -75,4 +75,18 @@ public class PaperCompatHelper implements CompatUtils { return false; } + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.20/build.gradle b/1.20/build.gradle index 5f08a9f..c34a862 100644 --- a/1.20/build.gradle +++ b/1.20/build.gradle @@ -48,6 +48,10 @@ subprojects { includeGroup "maven.modrinth" } } + + maven { + url = "https://unimaven.cc" + } } configurations { diff --git a/1.20/changelog.md b/1.20/changelog.md index c4a47e5..1e6ff6e 100644 --- a/1.20/changelog.md +++ b/1.20/changelog.md @@ -6,4 +6,7 @@ **New Features**: - Swapped Built In Config screen for a Cloth Config System, so client side mods can have in-game configs -- Added new APIs for Simple RPC (V4 rewrite) \ No newline at end of file +- Added new APIs for Simple RPC (V4 rewrite) +- Added new APIs for getting player information from Commands +- Added Compat API for Player Revive Mod +- Added new APIs to know when the Minecraft Whitelist changes \ No newline at end of file diff --git a/1.20/gradle.properties b/1.20/gradle.properties index 7ea99ae..52f1fea 100644 --- a/1.20/gradle.properties +++ b/1.20/gradle.properties @@ -2,7 +2,7 @@ version_major=2 version_minor=1 version_patch=3 -version_build=0 +version_build=1 #Mod mod_author=HypherionSA @@ -29,6 +29,8 @@ discord_formatter=2.0.0 cloth_config=11.1.136 # Mod Dependencies +player_revive=4798215 +creative_core=4798202 ftb_ranks=2001.1.3 ftb_essentials=2001.2.2 fabrictailor=2.2.1 diff --git a/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java new file mode 100644 index 0000000..b8f7fb1 --- /dev/null +++ b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerBleedOutEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java new file mode 100644 index 0000000..909de16 --- /dev/null +++ b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerRevivedEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java new file mode 100644 index 0000000..21c30dc --- /dev/null +++ b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java @@ -0,0 +1,26 @@ +package com.hypherionmc.craterlib.api.events.server; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +public class WhitelistChangedEvent { + + @RequiredArgsConstructor + @Getter + public static final class EntryAdded extends CraterEvent { + + private final BridgedGameProfile profile; + + } + + @RequiredArgsConstructor + @Getter + public static final class EntryRemoved extends CraterEvent { + + private final BridgedGameProfile profile; + + } + +} diff --git a/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java index fb745fc..015cebe 100644 --- a/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java +++ b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java @@ -9,5 +9,8 @@ public interface CompatUtils { boolean isPlayerActive(BridgedPlayer player); String getSkinUUID(BridgedPlayer player); + boolean isPlayerBleeding(BridgedPlayer player); + boolean playerBledOut(BridgedPlayer player); + boolean playerRevived(BridgedPlayer player); } diff --git a/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java new file mode 100644 index 0000000..28ff343 --- /dev/null +++ b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java @@ -0,0 +1,14 @@ +package com.hypherionmc.craterlib.mixin.events; + +import net.minecraft.server.players.StoredUserEntry; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StoredUserEntry.class) +public interface StoredUserEntryAccessor { + + @Accessor("user") + @Nullable T getUser(); + +} diff --git a/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java new file mode 100644 index 0000000..f2e7d06 --- /dev/null +++ b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java @@ -0,0 +1,46 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.events.server.WhitelistChangedEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import com.mojang.authlib.GameProfile; +import net.minecraft.server.players.StoredUserEntry; +import net.minecraft.server.players.StoredUserList; +import net.minecraft.server.players.UserWhiteListEntry; +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; + +@SuppressWarnings({"unchecked", "rawtypes"}) +@Mixin(StoredUserList.class) +public abstract class WhitelistMixin> { + + @Shadow protected abstract boolean contains(K k0); + + @Inject(method = "add", at = @At("HEAD")) + private void injectAddEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && !contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryAdded(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + + @Inject(method = "remove(Lnet/minecraft/server/players/StoredUserEntry;)V", at = @At("HEAD")) + private void injectRemoveEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryRemoved(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + +} diff --git a/1.21.2/Common/src/main/resources/craterlib.mixins.json b/1.21.2/Common/src/main/resources/craterlib.mixins.json index c910ed2..704d796 100644 --- a/1.21.2/Common/src/main/resources/craterlib.mixins.json +++ b/1.21.2/Common/src/main/resources/craterlib.mixins.json @@ -4,6 +4,8 @@ "package": "com.hypherionmc.craterlib.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "events.StoredUserEntryAccessor", + "events.WhitelistMixin" ], "client": [ "ChatInputSuggestorMixin", diff --git a/1.21.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java b/1.21.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java index ce16da7..fa369b5 100644 --- a/1.21.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java +++ b/1.21.2/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java @@ -20,4 +20,19 @@ public class FabricCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return FabricTailor.getTailorSkin(player.toMojangServerPlayer()); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.21.2/NeoForge/build.gradle b/1.21.2/NeoForge/build.gradle index f6d78e2..405939f 100644 --- a/1.21.2/NeoForge/build.gradle +++ b/1.21.2/NeoForge/build.gradle @@ -8,6 +8,8 @@ dependencies { stupidRemapArch("dev.ftb.mods:ftb-ranks-neoforge:${ftb_ranks}") modImplementation("me.shedaniel.cloth:cloth-config-neoforge:${cloth_config}") + modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") + modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") // Do not edit or remove implementation project(":Common") diff --git a/1.21.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java b/1.21.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java index 566e4bf..bc95bce 100644 --- a/1.21.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/1.21.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java @@ -2,6 +2,7 @@ package com.hypherionmc.craterlib; import com.hypherionmc.craterlib.client.NeoForgeClientHelper; import com.hypherionmc.craterlib.common.NeoForgeServerEvents; +import com.hypherionmc.craterlib.compat.PlayerReviveEvents; import com.hypherionmc.craterlib.compat.Vanish; import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; import com.hypherionmc.craterlib.core.networking.PacketRegistry; @@ -29,6 +30,10 @@ public class CraterLib { if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { NeoForge.EVENT_BUS.register(new Vanish()); } + + if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { + NeoForge.EVENT_BUS.register(new PlayerReviveEvents()); + } } public void commonSetup(FMLCommonSetupEvent evt) { diff --git a/1.21.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java b/1.21.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java index a39412c..268e797 100644 --- a/1.21.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java +++ b/1.21.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java @@ -4,6 +4,8 @@ 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; +import team.creative.playerrevive.api.IBleeding; +import team.creative.playerrevive.server.PlayerReviveServer; public class NeoForgeCompatHelper implements CompatUtils { @@ -19,4 +21,30 @@ public class NeoForgeCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return player.getStringUUID(); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.bledOut(); + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.revived(); + } } diff --git a/1.21.2/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java b/1.21.2/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java new file mode 100644 index 0000000..ffe9623 --- /dev/null +++ b/1.21.2/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java @@ -0,0 +1,23 @@ +package com.hypherionmc.craterlib.compat; + +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.NoArgsConstructor; +import net.neoforged.bus.api.SubscribeEvent; +import team.creative.playerrevive.api.event.PlayerBleedOutEvent; +import team.creative.playerrevive.api.event.PlayerRevivedEvent; + +@NoArgsConstructor +public class PlayerReviveEvents { + + @SubscribeEvent + public void playerRevived(PlayerRevivedEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + + @SubscribeEvent + public void playerBledOutEvent(PlayerBleedOutEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + +} diff --git a/1.21.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java b/1.21.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java index 484a849..bc3a2b2 100644 --- a/1.21.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java +++ b/1.21.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java @@ -75,4 +75,18 @@ public class PaperCompatHelper implements CompatUtils { return false; } + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.21.2/build.gradle b/1.21.2/build.gradle index e42c10c..a2e9bda 100644 --- a/1.21.2/build.gradle +++ b/1.21.2/build.gradle @@ -51,6 +51,10 @@ subprojects { includeGroup "maven.modrinth" } } + + maven { + url = "https://unimaven.cc" + } } configurations { diff --git a/1.21.2/changelog.md b/1.21.2/changelog.md index c4a47e5..1e6ff6e 100644 --- a/1.21.2/changelog.md +++ b/1.21.2/changelog.md @@ -6,4 +6,7 @@ **New Features**: - Swapped Built In Config screen for a Cloth Config System, so client side mods can have in-game configs -- Added new APIs for Simple RPC (V4 rewrite) \ No newline at end of file +- Added new APIs for Simple RPC (V4 rewrite) +- Added new APIs for getting player information from Commands +- Added Compat API for Player Revive Mod +- Added new APIs to know when the Minecraft Whitelist changes \ No newline at end of file diff --git a/1.21.2/gradle.properties b/1.21.2/gradle.properties index bbb060d..859a70f 100644 --- a/1.21.2/gradle.properties +++ b/1.21.2/gradle.properties @@ -2,7 +2,7 @@ version_major=2 version_minor=1 version_patch=3 -version_build=0 +version_build=1 #Mod mod_author=HypherionSA @@ -39,6 +39,8 @@ vanishmod=1.1.12.1 vanishmod_neo=puxrKAMr ftb_essentials=2101.1.0 ftb_ranks=2101.1.1 +player_revive=5886329 +creative_core=5886272 # Publishing curse_id=867099 diff --git a/1.21/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java b/1.21/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java new file mode 100644 index 0000000..b8f7fb1 --- /dev/null +++ b/1.21/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerBleedOutEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerBleedOutEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.21/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java b/1.21/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java new file mode 100644 index 0000000..909de16 --- /dev/null +++ b/1.21/Common/src/main/java/com/hypherionmc/craterlib/api/events/compat/PlayerRevivedEvent.java @@ -0,0 +1,12 @@ +package com.hypherionmc.craterlib.api.events.compat; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor(staticName = "of") +@Getter +public class PlayerRevivedEvent extends CraterEvent { + private final BridgedPlayer player; +} diff --git a/1.21/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java b/1.21/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java new file mode 100644 index 0000000..21c30dc --- /dev/null +++ b/1.21/Common/src/main/java/com/hypherionmc/craterlib/api/events/server/WhitelistChangedEvent.java @@ -0,0 +1,26 @@ +package com.hypherionmc.craterlib.api.events.server; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +public class WhitelistChangedEvent { + + @RequiredArgsConstructor + @Getter + public static final class EntryAdded extends CraterEvent { + + private final BridgedGameProfile profile; + + } + + @RequiredArgsConstructor + @Getter + public static final class EntryRemoved extends CraterEvent { + + private final BridgedGameProfile profile; + + } + +} diff --git a/1.21/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java b/1.21/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java index fb745fc..015cebe 100644 --- a/1.21/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java +++ b/1.21/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CompatUtils.java @@ -9,5 +9,8 @@ public interface CompatUtils { boolean isPlayerActive(BridgedPlayer player); String getSkinUUID(BridgedPlayer player); + boolean isPlayerBleeding(BridgedPlayer player); + boolean playerBledOut(BridgedPlayer player); + boolean playerRevived(BridgedPlayer player); } diff --git a/1.21/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java b/1.21/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java new file mode 100644 index 0000000..28ff343 --- /dev/null +++ b/1.21/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/StoredUserEntryAccessor.java @@ -0,0 +1,14 @@ +package com.hypherionmc.craterlib.mixin.events; + +import net.minecraft.server.players.StoredUserEntry; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StoredUserEntry.class) +public interface StoredUserEntryAccessor { + + @Accessor("user") + @Nullable T getUser(); + +} diff --git a/1.21/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java b/1.21/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java new file mode 100644 index 0000000..f2e7d06 --- /dev/null +++ b/1.21/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/WhitelistMixin.java @@ -0,0 +1,46 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.events.server.WhitelistChangedEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.authlib.BridgedGameProfile; +import com.mojang.authlib.GameProfile; +import net.minecraft.server.players.StoredUserEntry; +import net.minecraft.server.players.StoredUserList; +import net.minecraft.server.players.UserWhiteListEntry; +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; + +@SuppressWarnings({"unchecked", "rawtypes"}) +@Mixin(StoredUserList.class) +public abstract class WhitelistMixin> { + + @Shadow protected abstract boolean contains(K k0); + + @Inject(method = "add", at = @At("HEAD")) + private void injectAddEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && !contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryAdded(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + + @Inject(method = "remove(Lnet/minecraft/server/players/StoredUserEntry;)V", at = @At("HEAD")) + private void injectRemoveEvent(V arg, CallbackInfo ci) { + try { + if (arg instanceof UserWhiteListEntry entry) { + StoredUserEntryAccessor entryAccessor = (StoredUserEntryAccessor) entry; + if (entryAccessor.getUser() != null && contains((K) entryAccessor.getUser())) { + CraterEventBus.INSTANCE.postEvent(new WhitelistChangedEvent.EntryRemoved(BridgedGameProfile.of((GameProfile) entryAccessor.getUser()))); + } + } + } catch (Exception ignored) {} + } + +} diff --git a/1.21/Common/src/main/resources/craterlib.mixins.json b/1.21/Common/src/main/resources/craterlib.mixins.json index c910ed2..704d796 100644 --- a/1.21/Common/src/main/resources/craterlib.mixins.json +++ b/1.21/Common/src/main/resources/craterlib.mixins.json @@ -4,6 +4,8 @@ "package": "com.hypherionmc.craterlib.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "events.StoredUserEntryAccessor", + "events.WhitelistMixin" ], "client": [ "ChatInputSuggestorMixin", diff --git a/1.21/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java b/1.21/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java index ce16da7..fa369b5 100644 --- a/1.21/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java +++ b/1.21/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCompatHelper.java @@ -20,4 +20,19 @@ public class FabricCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return FabricTailor.getTailorSkin(player.toMojangServerPlayer()); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.21/NeoForge/build.gradle b/1.21/NeoForge/build.gradle index cdc92d8..5f98ae1 100644 --- a/1.21/NeoForge/build.gradle +++ b/1.21/NeoForge/build.gradle @@ -8,6 +8,8 @@ dependencies { stupidRemapArch("dev.ftb.mods:ftb-ranks-neoforge:${ftb_ranks}") modImplementation("me.shedaniel.cloth:cloth-config-neoforge:${cloth_config}") + modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") + modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") // Do not edit or remove implementation project(":Common") diff --git a/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java b/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java index 566e4bf..bc95bce 100644 --- a/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java @@ -2,6 +2,7 @@ package com.hypherionmc.craterlib; import com.hypherionmc.craterlib.client.NeoForgeClientHelper; import com.hypherionmc.craterlib.common.NeoForgeServerEvents; +import com.hypherionmc.craterlib.compat.PlayerReviveEvents; import com.hypherionmc.craterlib.compat.Vanish; import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; import com.hypherionmc.craterlib.core.networking.PacketRegistry; @@ -29,6 +30,10 @@ public class CraterLib { if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { NeoForge.EVENT_BUS.register(new Vanish()); } + + if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { + NeoForge.EVENT_BUS.register(new PlayerReviveEvents()); + } } public void commonSetup(FMLCommonSetupEvent evt) { diff --git a/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java b/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java index a39412c..268e797 100644 --- a/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java +++ b/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java @@ -4,6 +4,8 @@ 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; +import team.creative.playerrevive.api.IBleeding; +import team.creative.playerrevive.server.PlayerReviveServer; public class NeoForgeCompatHelper implements CompatUtils { @@ -19,4 +21,30 @@ public class NeoForgeCompatHelper implements CompatUtils { public String getSkinUUID(BridgedPlayer player) { return player.getStringUUID(); } + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.bledOut(); + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) + return false; + + IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); + return bleeding != null && bleeding.revived(); + } } diff --git a/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java b/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java new file mode 100644 index 0000000..ffe9623 --- /dev/null +++ b/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java @@ -0,0 +1,23 @@ +package com.hypherionmc.craterlib.compat; + +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import lombok.NoArgsConstructor; +import net.neoforged.bus.api.SubscribeEvent; +import team.creative.playerrevive.api.event.PlayerBleedOutEvent; +import team.creative.playerrevive.api.event.PlayerRevivedEvent; + +@NoArgsConstructor +public class PlayerReviveEvents { + + @SubscribeEvent + public void playerRevived(PlayerRevivedEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + + @SubscribeEvent + public void playerBledOutEvent(PlayerBleedOutEvent event) { + CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); + } + +} diff --git a/1.21/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java b/1.21/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java index 484a849..bc3a2b2 100644 --- a/1.21/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java +++ b/1.21/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java @@ -75,4 +75,18 @@ public class PaperCompatHelper implements CompatUtils { return false; } + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { + return false; + } + + @Override + public boolean playerRevived(BridgedPlayer player) { + return false; + } } diff --git a/1.21/build.gradle b/1.21/build.gradle index 08e2213..c222b97 100644 --- a/1.21/build.gradle +++ b/1.21/build.gradle @@ -49,6 +49,10 @@ subprojects { includeGroup "maven.modrinth" } } + + maven { + url = "https://unimaven.cc" + } } configurations { diff --git a/1.21/changelog.md b/1.21/changelog.md index c4a47e5..1e6ff6e 100644 --- a/1.21/changelog.md +++ b/1.21/changelog.md @@ -6,4 +6,7 @@ **New Features**: - Swapped Built In Config screen for a Cloth Config System, so client side mods can have in-game configs -- Added new APIs for Simple RPC (V4 rewrite) \ No newline at end of file +- Added new APIs for Simple RPC (V4 rewrite) +- Added new APIs for getting player information from Commands +- Added Compat API for Player Revive Mod +- Added new APIs to know when the Minecraft Whitelist changes \ No newline at end of file diff --git a/1.21/gradle.properties b/1.21/gradle.properties index fb932bf..8160605 100644 --- a/1.21/gradle.properties +++ b/1.21/gradle.properties @@ -2,7 +2,7 @@ version_major=2 version_minor=1 version_patch=3 -version_build=0 +version_build=1 #Mod mod_author=HypherionSA @@ -39,6 +39,8 @@ vanishmod=1.1.12.1 vanishmod_neo=puxrKAMr ftb_essentials=2101.1.0 ftb_ranks=2101.1.1 +player_revive=6130248 +creative_core=6109912 # Publishing curse_id=867099 diff --git a/commit.sha b/commit.sha index d50d284..8052469 100644 --- a/commit.sha +++ b/commit.sha @@ -1 +1 @@ -4c3cc6b034dd6d3b78254d4cdea18a5634b13cbc \ No newline at end of file +7f9ff38768686f25acef284357ebeee1f011e156 \ No newline at end of file diff --git a/patches/1.18.2/Common/src/main/resources/craterlib.mixins.json.patch b/patches/1.18.2/Common/src/main/resources/craterlib.mixins.json.patch index 30e41c2..5a0982c 100644 --- a/patches/1.18.2/Common/src/main/resources/craterlib.mixins.json.patch +++ b/patches/1.18.2/Common/src/main/resources/craterlib.mixins.json.patch @@ -1,6 +1,6 @@ --- a/Common/src/main/resources/craterlib.mixins.json +++ b/Common/src/main/resources/craterlib.mixins.json -@@ -17,7 +17,8 @@ +@@ -19,7 +19,8 @@ "events.PlayerAdvancementsMixin", "events.PlayerListMixin", "events.ServerPlayerMixin", diff --git a/patches/1.18.2/Forge/build.gradle.patch b/patches/1.18.2/Forge/build.gradle.patch index efde3e9..fca94c4 100644 --- a/patches/1.18.2/Forge/build.gradle.patch +++ b/patches/1.18.2/Forge/build.gradle.patch @@ -8,8 +8,8 @@ + modImplementation("maven.modrinth:vanishmod:${vanishmod}") modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") - -@@ -109,8 +109,8 @@ + modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") +@@ -111,8 +111,8 @@ setVersionType("release") setChangelog(rootProject.file("changelog.md")) setProjectVersion("${minecraft_version}-${project.version}") diff --git a/patches/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch b/patches/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch index fd38e13..cde315c 100644 --- a/patches/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch +++ b/patches/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch @@ -1,20 +1,25 @@ --- a/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java -@@ -2,6 +2,7 @@ +@@ -2,6 +2,8 @@ import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.ForgeServerEvents; ++import com.hypherionmc.craterlib.compat.PlayerReviveEvents; +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; -@@ -32,5 +33,9 @@ +@@ -32,5 +34,13 @@ 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()); ++ } ++ ++ if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { ++ MinecraftForge.EVENT_BUS.register(new PlayerReviveEvents()); + } } } diff --git a/patches/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch b/patches/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch index 0081213..f0b2eec 100644 --- a/patches/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch +++ b/patches/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch @@ -1,11 +1,13 @@ --- a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java -@@ -1,13 +1,18 @@ +@@ -1,15 +1,20 @@ 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 team.creative.playerrevive.api.IBleeding; + import team.creative.playerrevive.server.PlayerReviveServer; +import redstonedubstep.mods.vanishmod.VanishUtil; public class ForgeCompatHelper implements CompatUtils { diff --git a/patches/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch b/patches/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch new file mode 100644 index 0000000..43f6d7d --- /dev/null +++ b/patches/1.18.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch @@ -0,0 +1,26 @@ +--- /dev/null ++++ b/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java +@@ -1,0 +1,23 @@ ++package com.hypherionmc.craterlib.compat; ++ ++import com.hypherionmc.craterlib.core.event.CraterEventBus; ++import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; ++import lombok.NoArgsConstructor; ++import net.minecraftforge.eventbus.api.SubscribeEvent; ++import team.creative.playerrevive.api.event.PlayerBleedOutEvent; ++import team.creative.playerrevive.api.event.PlayerRevivedEvent; ++ ++@NoArgsConstructor ++public class PlayerReviveEvents { ++ ++ @SubscribeEvent ++ public void playerRevived(PlayerRevivedEvent event) { ++ CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getPlayer()))); ++ } ++ ++ @SubscribeEvent ++ public void playerBledOutEvent(PlayerBleedOutEvent event) { ++ CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getPlayer()))); ++ } ++ ++} diff --git a/patches/1.18.2/NeoForge/build.gradle.patch b/patches/1.18.2/NeoForge/build.gradle.patch index 39e2d95..87d718d 100644 --- a/patches/1.18.2/NeoForge/build.gradle.patch +++ b/patches/1.18.2/NeoForge/build.gradle.patch @@ -1,6 +1,6 @@ --- a/NeoForge/build.gradle +++ /dev/null -@@ -1,133 +1,0 @@ +@@ -1,135 +1,0 @@ -archivesBaseName = "${mod_name.replace(" ", "")}-NeoForge-${minecraft_version}" - -dependencies { @@ -11,6 +11,8 @@ - stupidRemapArch("dev.ftb.mods:ftb-ranks-neoforge:${ftb_ranks}") - - modImplementation("me.shedaniel.cloth:cloth-config-neoforge:${cloth_config}") +- modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") +- modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") - - // Do not edit or remove - implementation project(":Common") diff --git a/patches/1.18.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch b/patches/1.18.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch index 0dd9521..5b658fa 100644 --- a/patches/1.18.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch +++ b/patches/1.18.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch @@ -1,10 +1,11 @@ --- a/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ /dev/null -@@ -1,41 +1,0 @@ +@@ -1,46 +1,0 @@ -package com.hypherionmc.craterlib; - -import com.hypherionmc.craterlib.client.NeoForgeClientHelper; -import com.hypherionmc.craterlib.common.NeoForgeServerEvents; +-import com.hypherionmc.craterlib.compat.PlayerReviveEvents; -import com.hypherionmc.craterlib.compat.Vanish; -import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; -import com.hypherionmc.craterlib.core.networking.PacketRegistry; @@ -32,6 +33,10 @@ - if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { - NeoForge.EVENT_BUS.register(new Vanish()); - } +- +- if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { +- NeoForge.EVENT_BUS.register(new PlayerReviveEvents()); +- } - } - - public void commonSetup(FMLCommonSetupEvent evt) { diff --git a/patches/1.18.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch b/patches/1.18.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch index 8885834..93153d5 100644 --- a/patches/1.18.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch +++ b/patches/1.18.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch @@ -1,12 +1,14 @@ --- a/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java +++ /dev/null -@@ -1,22 +1,0 @@ +@@ -1,50 +1,0 @@ -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; +-import team.creative.playerrevive.api.IBleeding; +-import team.creative.playerrevive.server.PlayerReviveServer; - -public class NeoForgeCompatHelper implements CompatUtils { - @@ -22,4 +24,30 @@ - public String getSkinUUID(BridgedPlayer player) { - return player.getStringUUID(); - } +- +- @Override +- public boolean isPlayerBleeding(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); +- } +- +- @Override +- public boolean playerBledOut(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.bledOut(); +- } +- +- @Override +- public boolean playerRevived(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.revived(); +- } -} diff --git a/patches/1.18.2/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch b/patches/1.18.2/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch new file mode 100644 index 0000000..feb878f --- /dev/null +++ b/patches/1.18.2/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch @@ -0,0 +1,26 @@ +--- a/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java ++++ /dev/null +@@ -1,23 +1,0 @@ +-package com.hypherionmc.craterlib.compat; +- +-import com.hypherionmc.craterlib.core.event.CraterEventBus; +-import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +-import lombok.NoArgsConstructor; +-import net.neoforged.bus.api.SubscribeEvent; +-import team.creative.playerrevive.api.event.PlayerBleedOutEvent; +-import team.creative.playerrevive.api.event.PlayerRevivedEvent; +- +-@NoArgsConstructor +-public class PlayerReviveEvents { +- +- @SubscribeEvent +- public void playerRevived(PlayerRevivedEvent event) { +- CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); +- } +- +- @SubscribeEvent +- public void playerBledOutEvent(PlayerBleedOutEvent event) { +- CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); +- } +- +-} diff --git a/patches/1.18.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java.patch b/patches/1.18.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java.patch index 45dcd94..a5e12b3 100644 --- a/patches/1.18.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java.patch +++ b/patches/1.18.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java.patch @@ -1,6 +1,6 @@ --- a/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java +++ /dev/null -@@ -1,78 +1,0 @@ +@@ -1,92 +1,0 @@ -package com.hypherionmc.craterlib.common; - -import com.hypherionmc.craterlib.core.platform.CompatUtils; @@ -78,4 +78,18 @@ - return false; - } - +- @Override +- public boolean isPlayerBleeding(BridgedPlayer player) { +- return false; +- } +- +- @Override +- public boolean playerBledOut(BridgedPlayer player) { +- return false; +- } +- +- @Override +- public boolean playerRevived(BridgedPlayer player) { +- return false; +- } -} diff --git a/patches/1.18.2/build.gradle.patch b/patches/1.18.2/build.gradle.patch index 738c4ad..b3b53cb 100644 --- a/patches/1.18.2/build.gradle.patch +++ b/patches/1.18.2/build.gradle.patch @@ -40,7 +40,7 @@ maven { name = "Modrinth" -@@ -73,11 +66,14 @@ +@@ -77,11 +70,14 @@ shade "me.hypherionmc.moon-config:toml:${moon_config}" shade "me.hypherionmc.moon-config:json:${moon_config}" shade "com.hypherionmc:rpcsdk:${rpc_sdk}" @@ -56,7 +56,7 @@ compileOnly 'net.luckperms:api:5.4' compileOnly("org.projectlombok:lombok:${lombok}") annotationProcessor("org.projectlombok:lombok:${lombok}") -@@ -124,7 +120,7 @@ +@@ -128,7 +124,7 @@ tasks.withType(JavaCompile).configureEach { it.options.encoding = 'UTF-8' diff --git a/patches/1.18.2/gradle.properties.patch b/patches/1.18.2/gradle.properties.patch index c147293..c352866 100644 --- a/patches/1.18.2/gradle.properties.patch +++ b/patches/1.18.2/gradle.properties.patch @@ -23,7 +23,7 @@ # Dependencies moon_config=1.0.10 -@@ -29,21 +26,20 @@ +@@ -29,23 +26,22 @@ adventure=4.17.0 rpc_sdk=1.0 discord_formatter=2.0.0 @@ -38,6 +38,10 @@ -vanishmod_neo=puxrKAMr -ftb_essentials=2101.1.0 -ftb_ranks=2101.1.1 +-player_revive=6119534 +-creative_core=6113754 ++player_revive=5335413 ++creative_core=5335387 +ftb_ranks=1802.1.11-build.71 +ftb_essentials=1802.2.2-build.83 +fabrictailor=1.9.0+1.18.2 diff --git a/patches/1.19.2/Common/src/main/resources/craterlib.mixins.json.patch b/patches/1.19.2/Common/src/main/resources/craterlib.mixins.json.patch index 30e41c2..5a0982c 100644 --- a/patches/1.19.2/Common/src/main/resources/craterlib.mixins.json.patch +++ b/patches/1.19.2/Common/src/main/resources/craterlib.mixins.json.patch @@ -1,6 +1,6 @@ --- a/Common/src/main/resources/craterlib.mixins.json +++ b/Common/src/main/resources/craterlib.mixins.json -@@ -17,7 +17,8 @@ +@@ -19,7 +19,8 @@ "events.PlayerAdvancementsMixin", "events.PlayerListMixin", "events.ServerPlayerMixin", diff --git a/patches/1.19.2/Forge/build.gradle.patch b/patches/1.19.2/Forge/build.gradle.patch index 6d521bd..2643912 100644 --- a/patches/1.19.2/Forge/build.gradle.patch +++ b/patches/1.19.2/Forge/build.gradle.patch @@ -11,8 +11,8 @@ + stupidRemapArch("dev.ftb.mods:ftb-ranks-forge:${ftb_ranks}") modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") - -@@ -109,8 +112,8 @@ + modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") +@@ -111,8 +114,8 @@ setVersionType("release") setChangelog(rootProject.file("changelog.md")) setProjectVersion("${minecraft_version}-${project.version}") diff --git a/patches/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch b/patches/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch index fd38e13..cde315c 100644 --- a/patches/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch +++ b/patches/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch @@ -1,20 +1,25 @@ --- a/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java -@@ -2,6 +2,7 @@ +@@ -2,6 +2,8 @@ import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.ForgeServerEvents; ++import com.hypherionmc.craterlib.compat.PlayerReviveEvents; +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; -@@ -32,5 +33,9 @@ +@@ -32,5 +34,13 @@ 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()); ++ } ++ ++ if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { ++ MinecraftForge.EVENT_BUS.register(new PlayerReviveEvents()); + } } } diff --git a/patches/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch b/patches/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch index 0081213..f0b2eec 100644 --- a/patches/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch +++ b/patches/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch @@ -1,11 +1,13 @@ --- a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java -@@ -1,13 +1,18 @@ +@@ -1,15 +1,20 @@ 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 team.creative.playerrevive.api.IBleeding; + import team.creative.playerrevive.server.PlayerReviveServer; +import redstonedubstep.mods.vanishmod.VanishUtil; public class ForgeCompatHelper implements CompatUtils { diff --git a/patches/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch b/patches/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch new file mode 100644 index 0000000..72af255 --- /dev/null +++ b/patches/1.19.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch @@ -0,0 +1,26 @@ +--- /dev/null ++++ b/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java +@@ -1,0 +1,23 @@ ++package com.hypherionmc.craterlib.compat; ++ ++import com.hypherionmc.craterlib.core.event.CraterEventBus; ++import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; ++import lombok.NoArgsConstructor; ++import net.minecraftforge.eventbus.api.SubscribeEvent; ++import team.creative.playerrevive.api.event.PlayerBleedOutEvent; ++import team.creative.playerrevive.api.event.PlayerRevivedEvent; ++ ++@NoArgsConstructor ++public class PlayerReviveEvents { ++ ++ @SubscribeEvent ++ public void playerRevived(PlayerRevivedEvent event) { ++ CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); ++ } ++ ++ @SubscribeEvent ++ public void playerBledOutEvent(PlayerBleedOutEvent event) { ++ CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); ++ } ++ ++} diff --git a/patches/1.19.2/NeoForge/build.gradle.patch b/patches/1.19.2/NeoForge/build.gradle.patch index 39e2d95..87d718d 100644 --- a/patches/1.19.2/NeoForge/build.gradle.patch +++ b/patches/1.19.2/NeoForge/build.gradle.patch @@ -1,6 +1,6 @@ --- a/NeoForge/build.gradle +++ /dev/null -@@ -1,133 +1,0 @@ +@@ -1,135 +1,0 @@ -archivesBaseName = "${mod_name.replace(" ", "")}-NeoForge-${minecraft_version}" - -dependencies { @@ -11,6 +11,8 @@ - stupidRemapArch("dev.ftb.mods:ftb-ranks-neoforge:${ftb_ranks}") - - modImplementation("me.shedaniel.cloth:cloth-config-neoforge:${cloth_config}") +- modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") +- modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") - - // Do not edit or remove - implementation project(":Common") diff --git a/patches/1.19.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch b/patches/1.19.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch index 0dd9521..5b658fa 100644 --- a/patches/1.19.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch +++ b/patches/1.19.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch @@ -1,10 +1,11 @@ --- a/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ /dev/null -@@ -1,41 +1,0 @@ +@@ -1,46 +1,0 @@ -package com.hypherionmc.craterlib; - -import com.hypherionmc.craterlib.client.NeoForgeClientHelper; -import com.hypherionmc.craterlib.common.NeoForgeServerEvents; +-import com.hypherionmc.craterlib.compat.PlayerReviveEvents; -import com.hypherionmc.craterlib.compat.Vanish; -import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; -import com.hypherionmc.craterlib.core.networking.PacketRegistry; @@ -32,6 +33,10 @@ - if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { - NeoForge.EVENT_BUS.register(new Vanish()); - } +- +- if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { +- NeoForge.EVENT_BUS.register(new PlayerReviveEvents()); +- } - } - - public void commonSetup(FMLCommonSetupEvent evt) { diff --git a/patches/1.19.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch b/patches/1.19.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch index 8885834..93153d5 100644 --- a/patches/1.19.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch +++ b/patches/1.19.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch @@ -1,12 +1,14 @@ --- a/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java +++ /dev/null -@@ -1,22 +1,0 @@ +@@ -1,50 +1,0 @@ -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; +-import team.creative.playerrevive.api.IBleeding; +-import team.creative.playerrevive.server.PlayerReviveServer; - -public class NeoForgeCompatHelper implements CompatUtils { - @@ -22,4 +24,30 @@ - public String getSkinUUID(BridgedPlayer player) { - return player.getStringUUID(); - } +- +- @Override +- public boolean isPlayerBleeding(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); +- } +- +- @Override +- public boolean playerBledOut(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.bledOut(); +- } +- +- @Override +- public boolean playerRevived(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.revived(); +- } -} diff --git a/patches/1.19.2/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch b/patches/1.19.2/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch new file mode 100644 index 0000000..feb878f --- /dev/null +++ b/patches/1.19.2/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch @@ -0,0 +1,26 @@ +--- a/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java ++++ /dev/null +@@ -1,23 +1,0 @@ +-package com.hypherionmc.craterlib.compat; +- +-import com.hypherionmc.craterlib.core.event.CraterEventBus; +-import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +-import lombok.NoArgsConstructor; +-import net.neoforged.bus.api.SubscribeEvent; +-import team.creative.playerrevive.api.event.PlayerBleedOutEvent; +-import team.creative.playerrevive.api.event.PlayerRevivedEvent; +- +-@NoArgsConstructor +-public class PlayerReviveEvents { +- +- @SubscribeEvent +- public void playerRevived(PlayerRevivedEvent event) { +- CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); +- } +- +- @SubscribeEvent +- public void playerBledOutEvent(PlayerBleedOutEvent event) { +- CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); +- } +- +-} diff --git a/patches/1.19.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java.patch b/patches/1.19.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java.patch index 45dcd94..a5e12b3 100644 --- a/patches/1.19.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java.patch +++ b/patches/1.19.2/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java.patch @@ -1,6 +1,6 @@ --- a/Paper/src/main/java/com/hypherionmc/craterlib/common/PaperCompatHelper.java +++ /dev/null -@@ -1,78 +1,0 @@ +@@ -1,92 +1,0 @@ -package com.hypherionmc.craterlib.common; - -import com.hypherionmc.craterlib.core.platform.CompatUtils; @@ -78,4 +78,18 @@ - return false; - } - +- @Override +- public boolean isPlayerBleeding(BridgedPlayer player) { +- return false; +- } +- +- @Override +- public boolean playerBledOut(BridgedPlayer player) { +- return false; +- } +- +- @Override +- public boolean playerRevived(BridgedPlayer player) { +- return false; +- } -} diff --git a/patches/1.19.2/build.gradle.patch b/patches/1.19.2/build.gradle.patch index d162486..6dd59ab 100644 --- a/patches/1.19.2/build.gradle.patch +++ b/patches/1.19.2/build.gradle.patch @@ -40,7 +40,7 @@ maven { name = "Modrinth" -@@ -73,7 +66,7 @@ +@@ -77,7 +70,7 @@ shade "me.hypherionmc.moon-config:toml:${moon_config}" shade "me.hypherionmc.moon-config:json:${moon_config}" shade "com.hypherionmc:rpcsdk:${rpc_sdk}" @@ -49,7 +49,7 @@ shade "net.kyori:adventure-api:${adventure}" shade "net.kyori:adventure-text-serializer-gson:${adventure}" shade "net.kyori:adventure-text-minimessage:${adventure}" -@@ -124,7 +117,7 @@ +@@ -128,7 +121,7 @@ tasks.withType(JavaCompile).configureEach { it.options.encoding = 'UTF-8' diff --git a/patches/1.19.2/gradle.properties.patch b/patches/1.19.2/gradle.properties.patch index 75fd708..abcced5 100644 --- a/patches/1.19.2/gradle.properties.patch +++ b/patches/1.19.2/gradle.properties.patch @@ -23,7 +23,7 @@ # Dependencies moon_config=1.0.10 -@@ -29,21 +26,20 @@ +@@ -29,23 +26,22 @@ adventure=4.17.0 rpc_sdk=1.0 discord_formatter=2.0.0 @@ -38,6 +38,10 @@ -vanishmod_neo=puxrKAMr -ftb_essentials=2101.1.0 -ftb_ranks=2101.1.1 +-player_revive=6119534 +-creative_core=6113754 ++player_revive=5491953 ++creative_core=5491926 +ftb_ranks=1902.1.16-build.114 +ftb_essentials=1902.3.5-build.135 +fabrictailor=2.0.1 diff --git a/patches/1.19.3/Forge/build.gradle.patch b/patches/1.19.3/Forge/build.gradle.patch index a50952b..cb0eed7 100644 --- a/patches/1.19.3/Forge/build.gradle.patch +++ b/patches/1.19.3/Forge/build.gradle.patch @@ -11,8 +11,8 @@ + stupidRemapArch("dev.ftb.mods:ftb-ranks-forge:${ftb_ranks}") modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") - -@@ -109,8 +112,8 @@ + modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") +@@ -111,8 +114,8 @@ setVersionType("release") setChangelog(rootProject.file("changelog.md")) setProjectVersion("${minecraft_version}-${project.version}") diff --git a/patches/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch b/patches/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch index fd38e13..cde315c 100644 --- a/patches/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch +++ b/patches/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch @@ -1,20 +1,25 @@ --- a/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java -@@ -2,6 +2,7 @@ +@@ -2,6 +2,8 @@ import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.ForgeServerEvents; ++import com.hypherionmc.craterlib.compat.PlayerReviveEvents; +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; -@@ -32,5 +33,9 @@ +@@ -32,5 +34,13 @@ 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()); ++ } ++ ++ if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { ++ MinecraftForge.EVENT_BUS.register(new PlayerReviveEvents()); + } } } diff --git a/patches/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch b/patches/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch index 0081213..f0b2eec 100644 --- a/patches/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch +++ b/patches/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch @@ -1,11 +1,13 @@ --- a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java -@@ -1,13 +1,18 @@ +@@ -1,15 +1,20 @@ 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 team.creative.playerrevive.api.IBleeding; + import team.creative.playerrevive.server.PlayerReviveServer; +import redstonedubstep.mods.vanishmod.VanishUtil; public class ForgeCompatHelper implements CompatUtils { diff --git a/patches/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch b/patches/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch new file mode 100644 index 0000000..72af255 --- /dev/null +++ b/patches/1.19.3/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch @@ -0,0 +1,26 @@ +--- /dev/null ++++ b/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java +@@ -1,0 +1,23 @@ ++package com.hypherionmc.craterlib.compat; ++ ++import com.hypherionmc.craterlib.core.event.CraterEventBus; ++import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; ++import lombok.NoArgsConstructor; ++import net.minecraftforge.eventbus.api.SubscribeEvent; ++import team.creative.playerrevive.api.event.PlayerBleedOutEvent; ++import team.creative.playerrevive.api.event.PlayerRevivedEvent; ++ ++@NoArgsConstructor ++public class PlayerReviveEvents { ++ ++ @SubscribeEvent ++ public void playerRevived(PlayerRevivedEvent event) { ++ CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); ++ } ++ ++ @SubscribeEvent ++ public void playerBledOutEvent(PlayerBleedOutEvent event) { ++ CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); ++ } ++ ++} diff --git a/patches/1.19.3/NeoForge/build.gradle.patch b/patches/1.19.3/NeoForge/build.gradle.patch index 39e2d95..87d718d 100644 --- a/patches/1.19.3/NeoForge/build.gradle.patch +++ b/patches/1.19.3/NeoForge/build.gradle.patch @@ -1,6 +1,6 @@ --- a/NeoForge/build.gradle +++ /dev/null -@@ -1,133 +1,0 @@ +@@ -1,135 +1,0 @@ -archivesBaseName = "${mod_name.replace(" ", "")}-NeoForge-${minecraft_version}" - -dependencies { @@ -11,6 +11,8 @@ - stupidRemapArch("dev.ftb.mods:ftb-ranks-neoforge:${ftb_ranks}") - - modImplementation("me.shedaniel.cloth:cloth-config-neoforge:${cloth_config}") +- modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") +- modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") - - // Do not edit or remove - implementation project(":Common") diff --git a/patches/1.19.3/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch b/patches/1.19.3/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch index 0dd9521..5b658fa 100644 --- a/patches/1.19.3/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch +++ b/patches/1.19.3/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch @@ -1,10 +1,11 @@ --- a/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ /dev/null -@@ -1,41 +1,0 @@ +@@ -1,46 +1,0 @@ -package com.hypherionmc.craterlib; - -import com.hypherionmc.craterlib.client.NeoForgeClientHelper; -import com.hypherionmc.craterlib.common.NeoForgeServerEvents; +-import com.hypherionmc.craterlib.compat.PlayerReviveEvents; -import com.hypherionmc.craterlib.compat.Vanish; -import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; -import com.hypherionmc.craterlib.core.networking.PacketRegistry; @@ -32,6 +33,10 @@ - if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { - NeoForge.EVENT_BUS.register(new Vanish()); - } +- +- if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { +- NeoForge.EVENT_BUS.register(new PlayerReviveEvents()); +- } - } - - public void commonSetup(FMLCommonSetupEvent evt) { diff --git a/patches/1.19.3/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch b/patches/1.19.3/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch index 8885834..93153d5 100644 --- a/patches/1.19.3/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch +++ b/patches/1.19.3/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch @@ -1,12 +1,14 @@ --- a/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java +++ /dev/null -@@ -1,22 +1,0 @@ +@@ -1,50 +1,0 @@ -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; +-import team.creative.playerrevive.api.IBleeding; +-import team.creative.playerrevive.server.PlayerReviveServer; - -public class NeoForgeCompatHelper implements CompatUtils { - @@ -22,4 +24,30 @@ - public String getSkinUUID(BridgedPlayer player) { - return player.getStringUUID(); - } +- +- @Override +- public boolean isPlayerBleeding(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); +- } +- +- @Override +- public boolean playerBledOut(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.bledOut(); +- } +- +- @Override +- public boolean playerRevived(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.revived(); +- } -} diff --git a/patches/1.19.3/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch b/patches/1.19.3/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch new file mode 100644 index 0000000..feb878f --- /dev/null +++ b/patches/1.19.3/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch @@ -0,0 +1,26 @@ +--- a/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java ++++ /dev/null +@@ -1,23 +1,0 @@ +-package com.hypherionmc.craterlib.compat; +- +-import com.hypherionmc.craterlib.core.event.CraterEventBus; +-import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +-import lombok.NoArgsConstructor; +-import net.neoforged.bus.api.SubscribeEvent; +-import team.creative.playerrevive.api.event.PlayerBleedOutEvent; +-import team.creative.playerrevive.api.event.PlayerRevivedEvent; +- +-@NoArgsConstructor +-public class PlayerReviveEvents { +- +- @SubscribeEvent +- public void playerRevived(PlayerRevivedEvent event) { +- CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); +- } +- +- @SubscribeEvent +- public void playerBledOutEvent(PlayerBleedOutEvent event) { +- CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); +- } +- +-} diff --git a/patches/1.19.3/build.gradle.patch b/patches/1.19.3/build.gradle.patch index d162486..6dd59ab 100644 --- a/patches/1.19.3/build.gradle.patch +++ b/patches/1.19.3/build.gradle.patch @@ -40,7 +40,7 @@ maven { name = "Modrinth" -@@ -73,7 +66,7 @@ +@@ -77,7 +70,7 @@ shade "me.hypherionmc.moon-config:toml:${moon_config}" shade "me.hypherionmc.moon-config:json:${moon_config}" shade "com.hypherionmc:rpcsdk:${rpc_sdk}" @@ -49,7 +49,7 @@ shade "net.kyori:adventure-api:${adventure}" shade "net.kyori:adventure-text-serializer-gson:${adventure}" shade "net.kyori:adventure-text-minimessage:${adventure}" -@@ -124,7 +117,7 @@ +@@ -128,7 +121,7 @@ tasks.withType(JavaCompile).configureEach { it.options.encoding = 'UTF-8' diff --git a/patches/1.19.3/gradle.properties.patch b/patches/1.19.3/gradle.properties.patch index 36fcfc0..b7464e9 100644 --- a/patches/1.19.3/gradle.properties.patch +++ b/patches/1.19.3/gradle.properties.patch @@ -23,7 +23,7 @@ # Dependencies moon_config=1.0.10 -@@ -29,21 +26,20 @@ +@@ -29,23 +26,22 @@ adventure=4.17.0 rpc_sdk=1.0 discord_formatter=2.0.0 @@ -38,6 +38,10 @@ -vanishmod_neo=puxrKAMr -ftb_essentials=2101.1.0 -ftb_ranks=2101.1.1 +-player_revive=6119534 +-creative_core=6113754 ++player_revive=4353422 ++creative_core=4407520 +ftb_ranks=1904.1.1-build.82 +ftb_essentials=1904.1.0-build.81-SNAPSHOT +fabrictailor=2.0.2 diff --git a/patches/1.20.2/Forge/build.gradle.patch b/patches/1.20.2/Forge/build.gradle.patch index c1ccd3b..bf3d8a1 100644 --- a/patches/1.20.2/Forge/build.gradle.patch +++ b/patches/1.20.2/Forge/build.gradle.patch @@ -11,8 +11,8 @@ + stupidRemapArch("dev.ftb.mods:ftb-ranks-forge:${ftb_ranks}") modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") - -@@ -109,8 +112,8 @@ + modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") +@@ -111,8 +114,8 @@ setVersionType("release") setChangelog(rootProject.file("changelog.md")) setProjectVersion("${minecraft_version}-${project.version}") diff --git a/patches/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch b/patches/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch index fd38e13..cde315c 100644 --- a/patches/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch +++ b/patches/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch @@ -1,20 +1,25 @@ --- a/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java -@@ -2,6 +2,7 @@ +@@ -2,6 +2,8 @@ import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.ForgeServerEvents; ++import com.hypherionmc.craterlib.compat.PlayerReviveEvents; +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; -@@ -32,5 +33,9 @@ +@@ -32,5 +34,13 @@ 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()); ++ } ++ ++ if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { ++ MinecraftForge.EVENT_BUS.register(new PlayerReviveEvents()); + } } } diff --git a/patches/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch b/patches/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch index 0081213..f0b2eec 100644 --- a/patches/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch +++ b/patches/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch @@ -1,11 +1,13 @@ --- a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java -@@ -1,13 +1,18 @@ +@@ -1,15 +1,20 @@ 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 team.creative.playerrevive.api.IBleeding; + import team.creative.playerrevive.server.PlayerReviveServer; +import redstonedubstep.mods.vanishmod.VanishUtil; public class ForgeCompatHelper implements CompatUtils { diff --git a/patches/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch b/patches/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch new file mode 100644 index 0000000..72af255 --- /dev/null +++ b/patches/1.20.2/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch @@ -0,0 +1,26 @@ +--- /dev/null ++++ b/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java +@@ -1,0 +1,23 @@ ++package com.hypherionmc.craterlib.compat; ++ ++import com.hypherionmc.craterlib.core.event.CraterEventBus; ++import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; ++import lombok.NoArgsConstructor; ++import net.minecraftforge.eventbus.api.SubscribeEvent; ++import team.creative.playerrevive.api.event.PlayerBleedOutEvent; ++import team.creative.playerrevive.api.event.PlayerRevivedEvent; ++ ++@NoArgsConstructor ++public class PlayerReviveEvents { ++ ++ @SubscribeEvent ++ public void playerRevived(PlayerRevivedEvent event) { ++ CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); ++ } ++ ++ @SubscribeEvent ++ public void playerBledOutEvent(PlayerBleedOutEvent event) { ++ CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); ++ } ++ ++} diff --git a/patches/1.20.2/NeoForge/build.gradle.patch b/patches/1.20.2/NeoForge/build.gradle.patch index 39e2d95..87d718d 100644 --- a/patches/1.20.2/NeoForge/build.gradle.patch +++ b/patches/1.20.2/NeoForge/build.gradle.patch @@ -1,6 +1,6 @@ --- a/NeoForge/build.gradle +++ /dev/null -@@ -1,133 +1,0 @@ +@@ -1,135 +1,0 @@ -archivesBaseName = "${mod_name.replace(" ", "")}-NeoForge-${minecraft_version}" - -dependencies { @@ -11,6 +11,8 @@ - stupidRemapArch("dev.ftb.mods:ftb-ranks-neoforge:${ftb_ranks}") - - modImplementation("me.shedaniel.cloth:cloth-config-neoforge:${cloth_config}") +- modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") +- modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") - - // Do not edit or remove - implementation project(":Common") diff --git a/patches/1.20.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch b/patches/1.20.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch index 0dd9521..5b658fa 100644 --- a/patches/1.20.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch +++ b/patches/1.20.2/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch @@ -1,10 +1,11 @@ --- a/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ /dev/null -@@ -1,41 +1,0 @@ +@@ -1,46 +1,0 @@ -package com.hypherionmc.craterlib; - -import com.hypherionmc.craterlib.client.NeoForgeClientHelper; -import com.hypherionmc.craterlib.common.NeoForgeServerEvents; +-import com.hypherionmc.craterlib.compat.PlayerReviveEvents; -import com.hypherionmc.craterlib.compat.Vanish; -import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; -import com.hypherionmc.craterlib.core.networking.PacketRegistry; @@ -32,6 +33,10 @@ - if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { - NeoForge.EVENT_BUS.register(new Vanish()); - } +- +- if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { +- NeoForge.EVENT_BUS.register(new PlayerReviveEvents()); +- } - } - - public void commonSetup(FMLCommonSetupEvent evt) { diff --git a/patches/1.20.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch b/patches/1.20.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch index 8885834..93153d5 100644 --- a/patches/1.20.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch +++ b/patches/1.20.2/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch @@ -1,12 +1,14 @@ --- a/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java +++ /dev/null -@@ -1,22 +1,0 @@ +@@ -1,50 +1,0 @@ -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; +-import team.creative.playerrevive.api.IBleeding; +-import team.creative.playerrevive.server.PlayerReviveServer; - -public class NeoForgeCompatHelper implements CompatUtils { - @@ -22,4 +24,30 @@ - public String getSkinUUID(BridgedPlayer player) { - return player.getStringUUID(); - } +- +- @Override +- public boolean isPlayerBleeding(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); +- } +- +- @Override +- public boolean playerBledOut(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.bledOut(); +- } +- +- @Override +- public boolean playerRevived(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.revived(); +- } -} diff --git a/patches/1.20.2/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch b/patches/1.20.2/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch new file mode 100644 index 0000000..feb878f --- /dev/null +++ b/patches/1.20.2/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch @@ -0,0 +1,26 @@ +--- a/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java ++++ /dev/null +@@ -1,23 +1,0 @@ +-package com.hypherionmc.craterlib.compat; +- +-import com.hypherionmc.craterlib.core.event.CraterEventBus; +-import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +-import lombok.NoArgsConstructor; +-import net.neoforged.bus.api.SubscribeEvent; +-import team.creative.playerrevive.api.event.PlayerBleedOutEvent; +-import team.creative.playerrevive.api.event.PlayerRevivedEvent; +- +-@NoArgsConstructor +-public class PlayerReviveEvents { +- +- @SubscribeEvent +- public void playerRevived(PlayerRevivedEvent event) { +- CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); +- } +- +- @SubscribeEvent +- public void playerBledOutEvent(PlayerBleedOutEvent event) { +- CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); +- } +- +-} diff --git a/patches/1.20.2/build.gradle.patch b/patches/1.20.2/build.gradle.patch index d162486..6dd59ab 100644 --- a/patches/1.20.2/build.gradle.patch +++ b/patches/1.20.2/build.gradle.patch @@ -40,7 +40,7 @@ maven { name = "Modrinth" -@@ -73,7 +66,7 @@ +@@ -77,7 +70,7 @@ shade "me.hypherionmc.moon-config:toml:${moon_config}" shade "me.hypherionmc.moon-config:json:${moon_config}" shade "com.hypherionmc:rpcsdk:${rpc_sdk}" @@ -49,7 +49,7 @@ shade "net.kyori:adventure-api:${adventure}" shade "net.kyori:adventure-text-serializer-gson:${adventure}" shade "net.kyori:adventure-text-minimessage:${adventure}" -@@ -124,7 +117,7 @@ +@@ -128,7 +121,7 @@ tasks.withType(JavaCompile).configureEach { it.options.encoding = 'UTF-8' diff --git a/patches/1.20.2/gradle.properties.patch b/patches/1.20.2/gradle.properties.patch index f30ff9c..9b80aee 100644 --- a/patches/1.20.2/gradle.properties.patch +++ b/patches/1.20.2/gradle.properties.patch @@ -23,7 +23,7 @@ # Dependencies moon_config=1.0.10 -@@ -29,21 +26,20 @@ +@@ -29,23 +26,22 @@ adventure=4.17.0 rpc_sdk=1.0 discord_formatter=2.0.0 @@ -38,6 +38,10 @@ -vanishmod_neo=puxrKAMr -ftb_essentials=2101.1.0 -ftb_ranks=2101.1.1 +-player_revive=6119534 +-creative_core=6113754 ++player_revive=4785938 ++creative_core=4796447 +ftb_ranks=2001.1.3 +ftb_essentials=2001.2.2 +fabrictailor=2.2.1 diff --git a/patches/1.20.4/Forge/build.gradle.patch b/patches/1.20.4/Forge/build.gradle.patch index 0f49000..2339cd8 100644 --- a/patches/1.20.4/Forge/build.gradle.patch +++ b/patches/1.20.4/Forge/build.gradle.patch @@ -1,6 +1,6 @@ --- a/Forge/build.gradle +++ b/Forge/build.gradle -@@ -3,7 +3,10 @@ +@@ -3,11 +3,16 @@ dependencies { // Compat @@ -11,8 +11,16 @@ + stupidRemapArch("dev.ftb.mods:ftb-ranks-forge:${ftb_ranks}") modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") +- modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") +- modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") ++ ++ // NOT AVAILABLE FOR FORGE ++ //modImplementation("unimaven.curseforge:playerrevive-266890:5019850") ++ //modImplementation("unimaven.curseforge:creativecore-257814:5140174") -@@ -109,8 +112,8 @@ + // Do not edit or remove + implementation project(":Common") +@@ -111,8 +116,8 @@ setVersionType("release") setChangelog(rootProject.file("changelog.md")) setProjectVersion("${minecraft_version}-${project.version}") diff --git a/patches/1.20.4/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch b/patches/1.20.4/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch index 0081213..20f0e0e 100644 --- a/patches/1.20.4/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch +++ b/patches/1.20.4/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch @@ -1,11 +1,13 @@ --- a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java -@@ -1,13 +1,18 @@ +@@ -1,15 +1,18 @@ 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 team.creative.playerrevive.api.IBleeding; +-import team.creative.playerrevive.server.PlayerReviveServer; +import redstonedubstep.mods.vanishmod.VanishUtil; public class ForgeCompatHelper implements CompatUtils { @@ -19,4 +21,26 @@ + return !VanishUtil.isVanished(player.toMojangServerPlayer()); } + @Override +@@ -19,19 +22,12 @@ + + @Override + public boolean isPlayerBleeding(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); ++ return false; + } + + @Override + public boolean playerBledOut(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.bledOut(); ++ return false; + } + @Override diff --git a/patches/1.20.4/NeoForge/build.gradle.patch b/patches/1.20.4/NeoForge/build.gradle.patch index 482ccc2..f1485d7 100644 --- a/patches/1.20.4/NeoForge/build.gradle.patch +++ b/patches/1.20.4/NeoForge/build.gradle.patch @@ -1,6 +1,6 @@ --- a/NeoForge/build.gradle +++ b/NeoForge/build.gradle -@@ -37,12 +37,7 @@ +@@ -39,12 +39,7 @@ unimined.minecraft { neoForged { @@ -14,7 +14,7 @@ mixinConfig("${mod_id}.mixins.json", "${mod_id}.neoforge.mixins.json") } } -@@ -61,7 +56,7 @@ +@@ -63,7 +58,7 @@ from project(":Common").sourceSets.main.resources def buildProps = project.properties.clone() @@ -23,7 +23,7 @@ expand buildProps } } -@@ -116,8 +111,8 @@ +@@ -118,8 +113,8 @@ setVersionType("release") setChangelog(rootProject.file("changelog.md")) setProjectVersion("${minecraft_version}-${project.version}") diff --git a/patches/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch b/patches/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch index ce47d0b..5841294 100644 --- a/patches/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch +++ b/patches/1.20.4/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch @@ -1,11 +1,12 @@ --- a/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java -@@ -1,17 +1,21 @@ +@@ -1,18 +1,22 @@ package com.hypherionmc.craterlib; -import com.hypherionmc.craterlib.client.NeoForgeClientHelper; +import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.NeoForgeServerEvents; + import com.hypherionmc.craterlib.compat.PlayerReviveEvents; import com.hypherionmc.craterlib.compat.Vanish; +import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; @@ -24,7 +25,7 @@ import net.neoforged.fml.loading.FMLLoader; import net.neoforged.neoforge.common.NeoForge; -@@ -23,7 +27,6 @@ +@@ -24,7 +28,6 @@ public CraterLib(IEventBus eventBus) { NeoForge.EVENT_BUS.register(new NeoForgeServerEvents()); eventBus.addListener(this::commonSetup); @@ -32,7 +33,7 @@ handler = new CraterNeoForgeNetworkHandler(FMLLoader.getDist().isClient() ? PacketSide.CLIENT : PacketSide.SERVER); if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { -@@ -33,9 +36,9 @@ +@@ -38,9 +41,9 @@ public void commonSetup(FMLCommonSetupEvent evt) { new CraterPacketNetwork(handler); diff --git a/patches/1.20.4/build.gradle.patch b/patches/1.20.4/build.gradle.patch index 765d594..e17aa38 100644 --- a/patches/1.20.4/build.gradle.patch +++ b/patches/1.20.4/build.gradle.patch @@ -40,7 +40,7 @@ maven { name = "Modrinth" -@@ -124,7 +117,7 @@ +@@ -128,7 +121,7 @@ tasks.withType(JavaCompile).configureEach { it.options.encoding = 'UTF-8' diff --git a/patches/1.20.4/gradle.properties.patch b/patches/1.20.4/gradle.properties.patch index f67cabb..a2ef59f 100644 --- a/patches/1.20.4/gradle.properties.patch +++ b/patches/1.20.4/gradle.properties.patch @@ -24,7 +24,7 @@ # Dependencies moon_config=1.0.10 -@@ -29,21 +29,21 @@ +@@ -29,23 +29,23 @@ adventure=4.17.0 rpc_sdk=1.0 discord_formatter=2.0.0 @@ -42,6 +42,10 @@ vanishmod_neo=puxrKAMr -ftb_essentials=2101.1.0 -ftb_ranks=2101.1.1 +-player_revive=6119534 +-creative_core=6113754 ++player_revive=5019850 ++creative_core=5140174 +ftb_ranks=2004.2.0 +ftb_essentials=2004.1.3 diff --git a/patches/1.20/Forge/build.gradle.patch b/patches/1.20/Forge/build.gradle.patch index c892690..b6887d5 100644 --- a/patches/1.20/Forge/build.gradle.patch +++ b/patches/1.20/Forge/build.gradle.patch @@ -11,8 +11,8 @@ + stupidRemapArch("dev.ftb.mods:ftb-ranks-forge:${ftb_ranks}") modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") - -@@ -109,8 +112,8 @@ + modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") +@@ -111,8 +114,8 @@ setVersionType("release") setChangelog(rootProject.file("changelog.md")) setProjectVersion("${minecraft_version}-${project.version}") diff --git a/patches/1.20/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch b/patches/1.20/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch index fd38e13..cde315c 100644 --- a/patches/1.20/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch +++ b/patches/1.20/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch @@ -1,20 +1,25 @@ --- a/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java -@@ -2,6 +2,7 @@ +@@ -2,6 +2,8 @@ import com.hypherionmc.craterlib.api.events.client.LateInitEvent; import com.hypherionmc.craterlib.common.ForgeServerEvents; ++import com.hypherionmc.craterlib.compat.PlayerReviveEvents; +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; -@@ -32,5 +33,9 @@ +@@ -32,5 +34,13 @@ 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()); ++ } ++ ++ if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { ++ MinecraftForge.EVENT_BUS.register(new PlayerReviveEvents()); + } } } diff --git a/patches/1.20/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch b/patches/1.20/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch index 0081213..f0b2eec 100644 --- a/patches/1.20/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch +++ b/patches/1.20/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch @@ -1,11 +1,13 @@ --- a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java -@@ -1,13 +1,18 @@ +@@ -1,15 +1,20 @@ 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 team.creative.playerrevive.api.IBleeding; + import team.creative.playerrevive.server.PlayerReviveServer; +import redstonedubstep.mods.vanishmod.VanishUtil; public class ForgeCompatHelper implements CompatUtils { diff --git a/patches/1.20/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch b/patches/1.20/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch new file mode 100644 index 0000000..72af255 --- /dev/null +++ b/patches/1.20/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch @@ -0,0 +1,26 @@ +--- /dev/null ++++ b/Forge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java +@@ -1,0 +1,23 @@ ++package com.hypherionmc.craterlib.compat; ++ ++import com.hypherionmc.craterlib.core.event.CraterEventBus; ++import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; ++import lombok.NoArgsConstructor; ++import net.minecraftforge.eventbus.api.SubscribeEvent; ++import team.creative.playerrevive.api.event.PlayerBleedOutEvent; ++import team.creative.playerrevive.api.event.PlayerRevivedEvent; ++ ++@NoArgsConstructor ++public class PlayerReviveEvents { ++ ++ @SubscribeEvent ++ public void playerRevived(PlayerRevivedEvent event) { ++ CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); ++ } ++ ++ @SubscribeEvent ++ public void playerBledOutEvent(PlayerBleedOutEvent event) { ++ CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); ++ } ++ ++} diff --git a/patches/1.20/NeoForge/build.gradle.patch b/patches/1.20/NeoForge/build.gradle.patch index 39e2d95..87d718d 100644 --- a/patches/1.20/NeoForge/build.gradle.patch +++ b/patches/1.20/NeoForge/build.gradle.patch @@ -1,6 +1,6 @@ --- a/NeoForge/build.gradle +++ /dev/null -@@ -1,133 +1,0 @@ +@@ -1,135 +1,0 @@ -archivesBaseName = "${mod_name.replace(" ", "")}-NeoForge-${minecraft_version}" - -dependencies { @@ -11,6 +11,8 @@ - stupidRemapArch("dev.ftb.mods:ftb-ranks-neoforge:${ftb_ranks}") - - modImplementation("me.shedaniel.cloth:cloth-config-neoforge:${cloth_config}") +- modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") +- modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") - - // Do not edit or remove - implementation project(":Common") diff --git a/patches/1.20/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch b/patches/1.20/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch index 0dd9521..5b658fa 100644 --- a/patches/1.20/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch +++ b/patches/1.20/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch @@ -1,10 +1,11 @@ --- a/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ /dev/null -@@ -1,41 +1,0 @@ +@@ -1,46 +1,0 @@ -package com.hypherionmc.craterlib; - -import com.hypherionmc.craterlib.client.NeoForgeClientHelper; -import com.hypherionmc.craterlib.common.NeoForgeServerEvents; +-import com.hypherionmc.craterlib.compat.PlayerReviveEvents; -import com.hypherionmc.craterlib.compat.Vanish; -import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; -import com.hypherionmc.craterlib.core.networking.PacketRegistry; @@ -32,6 +33,10 @@ - if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { - NeoForge.EVENT_BUS.register(new Vanish()); - } +- +- if (ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) { +- NeoForge.EVENT_BUS.register(new PlayerReviveEvents()); +- } - } - - public void commonSetup(FMLCommonSetupEvent evt) { diff --git a/patches/1.20/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch b/patches/1.20/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch index 8885834..93153d5 100644 --- a/patches/1.20/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch +++ b/patches/1.20/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java.patch @@ -1,12 +1,14 @@ --- a/NeoForge/src/main/java/com/hypherionmc/craterlib/common/NeoForgeCompatHelper.java +++ /dev/null -@@ -1,22 +1,0 @@ +@@ -1,50 +1,0 @@ -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; +-import team.creative.playerrevive.api.IBleeding; +-import team.creative.playerrevive.server.PlayerReviveServer; - -public class NeoForgeCompatHelper implements CompatUtils { - @@ -22,4 +24,30 @@ - public String getSkinUUID(BridgedPlayer player) { - return player.getStringUUID(); - } +- +- @Override +- public boolean isPlayerBleeding(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); +- } +- +- @Override +- public boolean playerBledOut(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.bledOut(); +- } +- +- @Override +- public boolean playerRevived(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.revived(); +- } -} diff --git a/patches/1.20/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch b/patches/1.20/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch new file mode 100644 index 0000000..feb878f --- /dev/null +++ b/patches/1.20/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java.patch @@ -0,0 +1,26 @@ +--- a/NeoForge/src/main/java/com/hypherionmc/craterlib/compat/PlayerReviveEvents.java ++++ /dev/null +@@ -1,23 +1,0 @@ +-package com.hypherionmc.craterlib.compat; +- +-import com.hypherionmc.craterlib.core.event.CraterEventBus; +-import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +-import lombok.NoArgsConstructor; +-import net.neoforged.bus.api.SubscribeEvent; +-import team.creative.playerrevive.api.event.PlayerBleedOutEvent; +-import team.creative.playerrevive.api.event.PlayerRevivedEvent; +- +-@NoArgsConstructor +-public class PlayerReviveEvents { +- +- @SubscribeEvent +- public void playerRevived(PlayerRevivedEvent event) { +- CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); +- } +- +- @SubscribeEvent +- public void playerBledOutEvent(PlayerBleedOutEvent event) { +- CraterEventBus.INSTANCE.postEvent(com.hypherionmc.craterlib.api.events.compat.PlayerRevivedEvent.of(BridgedPlayer.of(event.getEntity()))); +- } +- +-} diff --git a/patches/1.20/build.gradle.patch b/patches/1.20/build.gradle.patch index c8b3ea8..7f73098 100644 --- a/patches/1.20/build.gradle.patch +++ b/patches/1.20/build.gradle.patch @@ -40,7 +40,7 @@ maven { name = "Modrinth" -@@ -73,7 +65,7 @@ +@@ -77,7 +69,7 @@ shade "me.hypherionmc.moon-config:toml:${moon_config}" shade "me.hypherionmc.moon-config:json:${moon_config}" shade "com.hypherionmc:rpcsdk:${rpc_sdk}" @@ -49,7 +49,7 @@ shade "net.kyori:adventure-api:${adventure}" shade "net.kyori:adventure-text-serializer-gson:${adventure}" shade "net.kyori:adventure-text-minimessage:${adventure}" -@@ -124,7 +116,7 @@ +@@ -128,7 +120,7 @@ tasks.withType(JavaCompile).configureEach { it.options.encoding = 'UTF-8' diff --git a/patches/1.20/gradle.properties.patch b/patches/1.20/gradle.properties.patch index 8239a20..7ff761e 100644 --- a/patches/1.20/gradle.properties.patch +++ b/patches/1.20/gradle.properties.patch @@ -23,7 +23,7 @@ # Dependencies moon_config=1.0.10 -@@ -29,21 +26,20 @@ +@@ -29,23 +26,22 @@ adventure=4.17.0 rpc_sdk=1.0 discord_formatter=2.0.0 @@ -38,6 +38,10 @@ -vanishmod_neo=puxrKAMr -ftb_essentials=2101.1.0 -ftb_ranks=2101.1.1 +-player_revive=6119534 +-creative_core=6113754 ++player_revive=4798215 ++creative_core=4798202 +ftb_ranks=2001.1.3 +ftb_essentials=2001.2.2 +fabrictailor=2.2.1 diff --git a/patches/1.21.2/Forge/build.gradle.patch b/patches/1.21.2/Forge/build.gradle.patch index 2146827..c395825 100644 --- a/patches/1.21.2/Forge/build.gradle.patch +++ b/patches/1.21.2/Forge/build.gradle.patch @@ -1,6 +1,6 @@ --- a/Forge/build.gradle +++ /dev/null -@@ -1,126 +1,0 @@ +@@ -1,128 +1,0 @@ -// Adjust the output jar name here -archivesBaseName = "${mod_name.replace(" ", "")}-Forge-${minecraft_version}" - @@ -9,6 +9,8 @@ - // NOT AVAILABLE ON FORGE modImplementation("maven.modrinth:vanishmod:${vanishmod}") - - modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") +- modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") +- modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") - - // Do not edit or remove - implementation project(":Common") diff --git a/patches/1.21.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch b/patches/1.21.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch index 38a40e8..513b8d1 100644 --- a/patches/1.21.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch +++ b/patches/1.21.2/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch @@ -1,10 +1,12 @@ --- a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ /dev/null -@@ -1,17 +1,0 @@ +@@ -1,45 +1,0 @@ -package com.hypherionmc.craterlib.common; - -import com.hypherionmc.craterlib.core.platform.CompatUtils; -import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +-import team.creative.playerrevive.api.IBleeding; +-import team.creative.playerrevive.server.PlayerReviveServer; - -public class ForgeCompatHelper implements CompatUtils { - @@ -17,4 +19,30 @@ - public String getSkinUUID(BridgedPlayer player) { - return player.getStringUUID(); - } +- +- @Override +- public boolean isPlayerBleeding(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); +- } +- +- @Override +- public boolean playerBledOut(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.bledOut(); +- } +- +- @Override +- public boolean playerRevived(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.revived(); +- } -} diff --git a/patches/1.21.2/NeoForge/build.gradle.patch b/patches/1.21.2/NeoForge/build.gradle.patch index 4cea4ad..8d54b9a 100644 --- a/patches/1.21.2/NeoForge/build.gradle.patch +++ b/patches/1.21.2/NeoForge/build.gradle.patch @@ -1,6 +1,6 @@ --- a/NeoForge/build.gradle +++ b/NeoForge/build.gradle -@@ -37,12 +37,7 @@ +@@ -39,12 +39,7 @@ unimined.minecraft { neoForged { diff --git a/patches/1.21.2/gradle.properties.patch b/patches/1.21.2/gradle.properties.patch index 958caab..316e7fb 100644 --- a/patches/1.21.2/gradle.properties.patch +++ b/patches/1.21.2/gradle.properties.patch @@ -1,6 +1,14 @@ --- a/gradle.properties +++ b/gradle.properties -@@ -43,7 +43,7 @@ +@@ -39,13 +39,13 @@ + vanishmod_neo=puxrKAMr + ftb_essentials=2101.1.0 + ftb_ranks=2101.1.1 +-player_revive=6119534 +-creative_core=6113754 ++player_revive=5886329 ++creative_core=5886272 + # Publishing curse_id=867099 modrinth_id=Nn8Wasaq diff --git a/patches/1.21/Forge/build.gradle.patch b/patches/1.21/Forge/build.gradle.patch index 2146827..c395825 100644 --- a/patches/1.21/Forge/build.gradle.patch +++ b/patches/1.21/Forge/build.gradle.patch @@ -1,6 +1,6 @@ --- a/Forge/build.gradle +++ /dev/null -@@ -1,126 +1,0 @@ +@@ -1,128 +1,0 @@ -// Adjust the output jar name here -archivesBaseName = "${mod_name.replace(" ", "")}-Forge-${minecraft_version}" - @@ -9,6 +9,8 @@ - // NOT AVAILABLE ON FORGE modImplementation("maven.modrinth:vanishmod:${vanishmod}") - - modImplementation("me.shedaniel.cloth:cloth-config-forge:${cloth_config}") +- modImplementation("unimaven.curseforge:playerrevive-266890:${player_revive}") +- modImplementation("unimaven.curseforge:creativecore-257814:${creative_core}") - - // Do not edit or remove - implementation project(":Common") diff --git a/patches/1.21/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch b/patches/1.21/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch index 38a40e8..513b8d1 100644 --- a/patches/1.21/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch +++ b/patches/1.21/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java.patch @@ -1,10 +1,12 @@ --- a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCompatHelper.java +++ /dev/null -@@ -1,17 +1,0 @@ +@@ -1,45 +1,0 @@ -package com.hypherionmc.craterlib.common; - -import com.hypherionmc.craterlib.core.platform.CompatUtils; -import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +-import team.creative.playerrevive.api.IBleeding; +-import team.creative.playerrevive.server.PlayerReviveServer; - -public class ForgeCompatHelper implements CompatUtils { - @@ -17,4 +19,30 @@ - public String getSkinUUID(BridgedPlayer player) { - return player.getStringUUID(); - } +- +- @Override +- public boolean isPlayerBleeding(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- return PlayerReviveServer.isBleeding(player.toMojangServerPlayer()); +- } +- +- @Override +- public boolean playerBledOut(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.bledOut(); +- } +- +- @Override +- public boolean playerRevived(BridgedPlayer player) { +- if (!ModloaderEnvironment.INSTANCE.isModLoaded("playerrevive")) +- return false; +- +- IBleeding bleeding = PlayerReviveServer.getBleeding(player.toMojangServerPlayer()); +- return bleeding != null && bleeding.revived(); +- } -} diff --git a/patches/1.21/NeoForge/build.gradle.patch b/patches/1.21/NeoForge/build.gradle.patch index 9f152d8..1bb3769 100644 --- a/patches/1.21/NeoForge/build.gradle.patch +++ b/patches/1.21/NeoForge/build.gradle.patch @@ -1,6 +1,6 @@ --- a/NeoForge/build.gradle +++ b/NeoForge/build.gradle -@@ -37,12 +37,7 @@ +@@ -39,12 +39,7 @@ unimined.minecraft { neoForged { @@ -14,7 +14,7 @@ mixinConfig("${mod_id}.mixins.json", "${mod_id}.neoforge.mixins.json") } } -@@ -116,8 +111,8 @@ +@@ -118,8 +113,8 @@ setVersionType("release") setChangelog(rootProject.file("changelog.md")) setProjectVersion("${minecraft_version}-${project.version}") diff --git a/patches/1.21/gradle.properties.patch b/patches/1.21/gradle.properties.patch index 5319df1..3a3eef1 100644 --- a/patches/1.21/gradle.properties.patch +++ b/patches/1.21/gradle.properties.patch @@ -25,7 +25,15 @@ # Mod Dependencies fabrictailor=2.3.1 -@@ -43,7 +43,7 @@ +@@ -39,13 +39,13 @@ + vanishmod_neo=puxrKAMr + ftb_essentials=2101.1.0 + ftb_ranks=2101.1.1 +-player_revive=6119534 +-creative_core=6113754 ++player_revive=6130248 ++creative_core=6109912 + # Publishing curse_id=867099 modrinth_id=Nn8Wasaq