From e8aa4aade7fd5ade8499cfb80ed9503355fee83e Mon Sep 17 00:00:00 2001 From: HypherionMC Date: Sun, 28 May 2023 20:15:51 +0200 Subject: [PATCH] Implement events required by Simple Discord Link --- .../event/common/CraterLivingDeathEvent.java | 30 ++++++++++++ .../event/server/CraterAdvancementEvent.java | 29 ++++++++++++ .../api/event/server/CraterCommandEvent.java | 46 +++++++++++++++++++ .../api/event/server/CraterPlayerEvent.java | 42 +++++++++++++++++ .../event/server/CraterServerChatEvent.java | 44 ++++++++++++++++++ .../api/event/server/PlayerPreLoginEvent.java | 40 ++++++++++++++++ .../core/config/ConfigController.java | 4 +- .../craterlib/mixin/events/CommandMixin.java | 37 +++++++++++++++ .../mixin/events/LivingEntityMixin.java | 23 ++++++++++ .../mixin/events/PlayerAdvancementsMixin.java | 27 +++++++++++ .../mixin/events/PlayerListMixin.java | 42 +++++++++++++++++ .../craterlib/mixin/events/PlayerMixin.java | 23 ++++++++++ .../ServerGamePacketListenerImplMixin.java | 27 +++++++++++ .../mixin/events/ServerPlayerMixin.java | 23 ++++++++++ .../src/main/resources/craterlib.mixins.json | 9 +++- ...ftMixin.java => FabricMinecraftMixin.java} | 2 +- .../resources/craterlib.fabric.mixins.json | 2 +- 17 files changed, 446 insertions(+), 4 deletions(-) create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/api/event/common/CraterLivingDeathEvent.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterAdvancementEvent.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterCommandEvent.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterPlayerEvent.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterServerChatEvent.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/api/event/server/PlayerPreLoginEvent.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/mixin/events/CommandMixin.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/mixin/events/LivingEntityMixin.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerAdvancementsMixin.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerListMixin.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerMixin.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerGamePacketListenerImplMixin.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerPlayerMixin.java rename Fabric/src/main/java/com/hypherionmc/craterlib/mixin/{MinecraftMixin.java => FabricMinecraftMixin.java} (97%) diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/event/common/CraterLivingDeathEvent.java b/Common/src/main/java/com/hypherionmc/craterlib/api/event/common/CraterLivingDeathEvent.java new file mode 100644 index 0000000..8e0fadf --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/event/common/CraterLivingDeathEvent.java @@ -0,0 +1,30 @@ +package com.hypherionmc.craterlib.api.event.common; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.LivingEntity; + +public class CraterLivingDeathEvent extends CraterEvent { + + private final DamageSource damageSource; + private final LivingEntity entity; + + public CraterLivingDeathEvent(LivingEntity entity, DamageSource source) { + this.entity = entity; + this.damageSource = source; + } + + public LivingEntity getEntity() { + return entity; + } + + public DamageSource getDamageSource() { + return damageSource; + } + + @Override + public boolean canCancel() { + return true; + } +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterAdvancementEvent.java b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterAdvancementEvent.java new file mode 100644 index 0000000..c2f5fa8 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterAdvancementEvent.java @@ -0,0 +1,29 @@ +package com.hypherionmc.craterlib.api.event.server; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import net.minecraft.advancements.Advancement; +import net.minecraft.world.entity.player.Player; + +public class CraterAdvancementEvent extends CraterEvent { + + private final Advancement advancement; + private final Player player; + + public CraterAdvancementEvent(Player player, Advancement advancement) { + this.player = player; + this.advancement = advancement; + } + + public Advancement getAdvancement() { + return advancement; + } + + public Player getPlayer() { + return player; + } + + @Override + public boolean canCancel() { + return false; + } +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterCommandEvent.java b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterCommandEvent.java new file mode 100644 index 0000000..53604cc --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterCommandEvent.java @@ -0,0 +1,46 @@ +package com.hypherionmc.craterlib.api.event.server; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.mojang.brigadier.ParseResults; +import net.minecraft.commands.CommandSourceStack; + +public class CraterCommandEvent extends CraterEvent { + + private ParseResults parseResults; + private Throwable exception; + private String command; + + public CraterCommandEvent(ParseResults parseResults, String command) { + this.parseResults = parseResults; + this.command = command; + } + + public ParseResults getParseResults() { + return parseResults; + } + + public void setParseResults(ParseResults parseResults) { + this.parseResults = parseResults; + } + + public Throwable getException() { + return exception; + } + + public void setException(Throwable exception) { + this.exception = exception; + } + + public String getCommand() { + return command; + } + + public void setCommand(String command) { + this.command = command; + } + + @Override + public boolean canCancel() { + return true; + } +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterPlayerEvent.java b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterPlayerEvent.java new file mode 100644 index 0000000..c4b67d7 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterPlayerEvent.java @@ -0,0 +1,42 @@ +package com.hypherionmc.craterlib.api.event.server; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.mojang.authlib.GameProfile; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.player.Player; + +import java.net.SocketAddress; + +public class CraterPlayerEvent extends CraterEvent { + + private final Player player; + + public CraterPlayerEvent(Player player) { + this.player = player; + } + + public Player getPlayer() { + return player; + } + + @Override + public boolean canCancel() { + return false; + } + + public static class PlayerLoggedIn extends CraterPlayerEvent { + + public PlayerLoggedIn(Player player) { + super(player); + } + + } + + public static class PlayerLoggedOut extends CraterPlayerEvent { + + public PlayerLoggedOut(Player player) { + super(player); + } + + } +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterServerChatEvent.java b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterServerChatEvent.java new file mode 100644 index 0000000..5b1d371 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/CraterServerChatEvent.java @@ -0,0 +1,44 @@ +package com.hypherionmc.craterlib.api.event.server; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; + +public class CraterServerChatEvent extends CraterEvent { + + private final String message, username; + private final ServerPlayer player; + private Component component; + + public CraterServerChatEvent(ServerPlayer player, String message, Component component) { + this.message = message; + this.player = player; + this.username = player.getGameProfile().getName(); + this.component = component; + } + + public void setComponent(Component component) { + this.component = component; + } + + public Component getComponent() { + return component; + } + + public String getUsername() { + return username; + } + + public ServerPlayer getPlayer() { + return player; + } + + public String getMessage() { + return message; + } + + @Override + public boolean canCancel() { + return true; + } +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/PlayerPreLoginEvent.java b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/PlayerPreLoginEvent.java new file mode 100644 index 0000000..4a4efe9 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/PlayerPreLoginEvent.java @@ -0,0 +1,40 @@ +package com.hypherionmc.craterlib.api.event.server; + +import com.hypherionmc.craterlib.core.event.CraterEvent; +import com.mojang.authlib.GameProfile; +import net.minecraft.network.chat.Component; + +import java.net.SocketAddress; + +public class PlayerPreLoginEvent extends CraterEvent { + + private final SocketAddress address; + private final GameProfile gameProfile; + private Component message; + + public PlayerPreLoginEvent(SocketAddress address, GameProfile profile) { + this.address = address; + this.gameProfile = profile; + } + + public Component getMessage() { + return message; + } + + public void setMessage(Component message) { + this.message = message; + } + + public GameProfile getGameProfile() { + return gameProfile; + } + + public SocketAddress getAddress() { + return address; + } + + @Override + public boolean canCancel() { + return false; + } +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/config/ConfigController.java b/Common/src/main/java/com/hypherionmc/craterlib/core/config/ConfigController.java index 1909a96..6080724 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/config/ConfigController.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/config/ConfigController.java @@ -2,6 +2,7 @@ package com.hypherionmc.craterlib.core.config; import com.hypherionmc.craterlib.CraterConstants; import me.hypherionmc.moonconfig.core.file.FileWatcher; +import org.jetbrains.annotations.ApiStatus; import java.io.Serializable; import java.util.HashMap; @@ -22,7 +23,8 @@ public final class ConfigController implements Serializable { * * @param config - The config class to register and watch */ - static void register_config(ModuleConfig config) { + @ApiStatus.Internal + public static void register_config(ModuleConfig config) { if (monitoredConfigs.containsKey(config)) { CraterConstants.LOG.error("Failed to register " + config.getConfigPath().getName() + ". Config already registered"); } else { diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/CommandMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/CommandMixin.java new file mode 100644 index 0000000..7342352 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/CommandMixin.java @@ -0,0 +1,37 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.google.common.base.Throwables; +import com.hypherionmc.craterlib.api.event.server.CraterCommandEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.mojang.brigadier.ParseResults; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Commands.class) +public class CommandMixin { + + @Inject(method = "performCommand", + at = @At(value = "INVOKE", + target = "Lcom/mojang/brigadier/CommandDispatcher;execute(Lcom/mojang/brigadier/ParseResults;)I", + shift = At.Shift.BEFORE + ), cancellable = true + ) + private void injectCommandEvent(ParseResults stackParseResults, String command, CallbackInfoReturnable cir) { + CraterCommandEvent commandEvent = new CraterCommandEvent(stackParseResults, command); + CraterEventBus.INSTANCE.postEvent(commandEvent); + if (commandEvent.wasCancelled()) { + cir.setReturnValue(1); + return; + } + + if (commandEvent.getException() != null) { + Throwables.throwIfUnchecked(commandEvent.getException()); + cir.setReturnValue(1); + } + } + +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/LivingEntityMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/LivingEntityMixin.java new file mode 100644 index 0000000..b7a315d --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/LivingEntityMixin.java @@ -0,0 +1,23 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.event.common.CraterLivingDeathEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.LivingEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LivingEntity.class) +public class LivingEntityMixin { + + @Inject(method = "die", at = @At("HEAD"), cancellable = true) + private void injectPlayerDeathEvent(DamageSource damageSource, CallbackInfo ci) { + CraterLivingDeathEvent event = new CraterLivingDeathEvent(((LivingEntity)(Object) this), damageSource); + CraterEventBus.INSTANCE.postEvent(event); + if (event.wasCancelled()) + ci.cancel(); + } + +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerAdvancementsMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerAdvancementsMixin.java new file mode 100644 index 0000000..05cb37f --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerAdvancementsMixin.java @@ -0,0 +1,27 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.event.server.CraterAdvancementEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import net.minecraft.advancements.Advancement; +import net.minecraft.server.PlayerAdvancements; +import net.minecraft.server.level.ServerPlayer; +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.CallbackInfoReturnable; + +@Mixin(PlayerAdvancements.class) +public class PlayerAdvancementsMixin { + + @Shadow private ServerPlayer player; + + @Inject(method = "award", at = @At(value = "INVOKE", target = "Lnet/minecraft/advancements/AdvancementRewards;grant(Lnet/minecraft/server/level/ServerPlayer;)V", shift = At.Shift.AFTER)) + private void injectAdvancementEvent(Advancement advancement, String $$1, CallbackInfoReturnable cir) { + CraterAdvancementEvent event = new CraterAdvancementEvent(this.player, advancement); + + if (advancement.getDisplay() != null && advancement.getDisplay().shouldAnnounceChat()) { + CraterEventBus.INSTANCE.postEvent(event); + } + } +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerListMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerListMixin.java new file mode 100644 index 0000000..0124ec2 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerListMixin.java @@ -0,0 +1,42 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.event.server.CraterPlayerEvent; +import com.hypherionmc.craterlib.api.event.server.PlayerPreLoginEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.mojang.authlib.GameProfile; +import net.minecraft.network.Connection; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.players.PlayerList; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.net.SocketAddress; + +@Mixin(PlayerList.class) +public class PlayerListMixin { + + @Inject(method = "placeNewPlayer", at = @At("TAIL")) + private void injectPlayerLoginEvent(Connection connection, ServerPlayer serverPlayer, CallbackInfo ci) { + CraterPlayerEvent.PlayerLoggedIn loggedIn = new CraterPlayerEvent.PlayerLoggedIn(serverPlayer); + CraterEventBus.INSTANCE.postEvent(loggedIn); + } + + @Inject(method = "remove", at = @At("HEAD")) + private void injectPlayerLogoutEvent(ServerPlayer player, CallbackInfo ci) { + CraterPlayerEvent.PlayerLoggedOut loggedOut = new CraterPlayerEvent.PlayerLoggedOut(player); + CraterEventBus.INSTANCE.postEvent(loggedOut); + } + + @Inject(method = "canPlayerLogin", at = @At("HEAD"), cancellable = true) + private void injectPreLoginEvent(SocketAddress address, GameProfile gameProfile, CallbackInfoReturnable cir) { + PlayerPreLoginEvent event = new PlayerPreLoginEvent(address, gameProfile); + CraterEventBus.INSTANCE.postEvent(event); + if (event.getMessage() != null) { + cir.setReturnValue(event.getMessage()); + } + } +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerMixin.java new file mode 100644 index 0000000..d327d9e --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerMixin.java @@ -0,0 +1,23 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.event.common.CraterLivingDeathEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.player.Player; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Player.class) +public class PlayerMixin { + + @Inject(method = "die", at = @At("HEAD"), cancellable = true) + private void injectPlayerDeathEvent(DamageSource damageSource, CallbackInfo ci) { + CraterLivingDeathEvent event = new CraterLivingDeathEvent(((Player)(Object) this), damageSource); + CraterEventBus.INSTANCE.postEvent(event); + if (event.wasCancelled()) + ci.cancel(); + } + +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerGamePacketListenerImplMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerGamePacketListenerImplMixin.java new file mode 100644 index 0000000..478fa51 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerGamePacketListenerImplMixin.java @@ -0,0 +1,27 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.event.server.CraterServerChatEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import net.minecraft.network.chat.PlayerChatMessage; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.network.ServerGamePacketListenerImpl; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ServerGamePacketListenerImpl.class) +public class ServerGamePacketListenerImplMixin { + + @Shadow public ServerPlayer player; + + @Inject(method = "broadcastChatMessage", at = @At("HEAD"), cancellable = true) + private void injectChatEvent(PlayerChatMessage chatMessage, CallbackInfo ci) { + CraterServerChatEvent event = new CraterServerChatEvent(this.player, chatMessage.decoratedContent().getString(), chatMessage.decoratedContent()); + CraterEventBus.INSTANCE.postEvent(event); + if (event.wasCancelled()) + ci.cancel(); + } + +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerPlayerMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerPlayerMixin.java new file mode 100644 index 0000000..f68b9ea --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerPlayerMixin.java @@ -0,0 +1,23 @@ +package com.hypherionmc.craterlib.mixin.events; + +import com.hypherionmc.craterlib.api.event.common.CraterLivingDeathEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.damagesource.DamageSource; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ServerPlayer.class) +public class ServerPlayerMixin { + + @Inject(method = "die", at = @At("HEAD"), cancellable = true) + private void injectPlayerDeathEvent(DamageSource damageSource, CallbackInfo ci) { + CraterLivingDeathEvent event = new CraterLivingDeathEvent(((ServerPlayer)(Object) this), damageSource); + CraterEventBus.INSTANCE.postEvent(event); + if (event.wasCancelled()) + ci.cancel(); + } + +} diff --git a/Common/src/main/resources/craterlib.mixins.json b/Common/src/main/resources/craterlib.mixins.json index 0750ff6..98dd3c3 100644 --- a/Common/src/main/resources/craterlib.mixins.json +++ b/Common/src/main/resources/craterlib.mixins.json @@ -7,9 +7,16 @@ ], "client": [ "colors.BlockColorsMixin", - "colors.ItemColorsMixin" + "colors.ItemColorsMixin", + "events.PlayerMixin" ], "server": [ + "events.CommandMixin", + "events.PlayerAdvancementsMixin", + "events.LivingEntityMixin", + "events.PlayerListMixin", + "events.ServerPlayerMixin", + "events.ServerGamePacketListenerImplMixin" ], "injectors": { "defaultRequire": 1 diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/mixin/MinecraftMixin.java b/Fabric/src/main/java/com/hypherionmc/craterlib/mixin/FabricMinecraftMixin.java similarity index 97% rename from Fabric/src/main/java/com/hypherionmc/craterlib/mixin/MinecraftMixin.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/mixin/FabricMinecraftMixin.java index 3acc614..7ff7d30 100644 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/mixin/MinecraftMixin.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/mixin/FabricMinecraftMixin.java @@ -14,7 +14,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Minecraft.class) -public class MinecraftMixin { +public class FabricMinecraftMixin { @Inject(method = "", at = @At("RETURN")) private void injectCraterLateInit(GameConfig gameConfig, CallbackInfo ci) { diff --git a/Fabric/src/main/resources/craterlib.fabric.mixins.json b/Fabric/src/main/resources/craterlib.fabric.mixins.json index 957b695..a036cb2 100644 --- a/Fabric/src/main/resources/craterlib.fabric.mixins.json +++ b/Fabric/src/main/resources/craterlib.fabric.mixins.json @@ -6,7 +6,7 @@ "mixins": [ ], "client": [ - "MinecraftMixin" + "FabricMinecraftMixin" ], "server": [ ],