diff --git a/gradle.properties b/gradle.properties index 4bdda13..e70e0e3 100755 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ loader_version=0.13.3 fabric_version=0.48.0+1.18.2 # Mod Properties -mod_version = 0.3.1 +mod_version = 0.3.3 maven_group = dev.hugeblank archives_base_name = allium_peripherals diff --git a/src/main/java/dev/hugeblank/mixin/ChatMixin.java b/src/main/java/dev/hugeblank/mixin/ChatMixin.java index 0b82da1..5b3a864 100644 --- a/src/main/java/dev/hugeblank/mixin/ChatMixin.java +++ b/src/main/java/dev/hugeblank/mixin/ChatMixin.java @@ -25,10 +25,12 @@ protected void onChatMessage(ChatMessageC2SPacket packet, CallbackInfo ci, Strin if (!player.getEntityWorld().isClient) { Allium.debug( "Catchers: " + IChatCatcher.CATCHERS); for (ChatModemState modem : IChatCatcher.CATCHERS) { - if (player.getUuid().equals(modem.getBound().uuid()) || modem.creative) { + if (modem.creative || modem.isBound() && player.getUuid().equals(modem.getBound().uuid())) { boolean c = modem.handleChatEvents(packet.getChatMessage(), player); if (c) cancel = true; Allium.debug("World: " + (player.getEntityWorld().isClient() ? "client" : "server") + ", cancelled: " + (cancel ? "yes" : "no")); + } else if (!modem.isBound()) { // This should never happen. + Allium.debug("Modem " + modem + " is registered as a handler, but has no bound player"); } } if (cancel) ci.cancel(); diff --git a/src/main/java/dev/hugeblank/peripherals/chatmodem/ChatModemState.java b/src/main/java/dev/hugeblank/peripherals/chatmodem/ChatModemState.java index 480d457..361e163 100644 --- a/src/main/java/dev/hugeblank/peripherals/chatmodem/ChatModemState.java +++ b/src/main/java/dev/hugeblank/peripherals/chatmodem/ChatModemState.java @@ -7,6 +7,7 @@ import net.minecraft.text.LiteralText; import net.minecraft.world.World; +import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Set; @@ -42,7 +43,8 @@ private void setOpen( boolean state) { public synchronized void setBound(PlayerInfo info) { this.playerInfo = info; } - public PlayerInfo getBound() { + + public @Nullable PlayerInfo getBound() { return playerInfo; } diff --git a/src/main/java/dev/hugeblank/peripherals/chatmodem/ChatPeripheral.java b/src/main/java/dev/hugeblank/peripherals/chatmodem/ChatPeripheral.java index 2ea79de..2e13317 100644 --- a/src/main/java/dev/hugeblank/peripherals/chatmodem/ChatPeripheral.java +++ b/src/main/java/dev/hugeblank/peripherals/chatmodem/ChatPeripheral.java @@ -11,12 +11,10 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.text.LiteralText; import org.jetbrains.annotations.NotNull; -import org.squiddev.cobalt.Constants; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.HashSet; -import java.util.UUID; public abstract class ChatPeripheral implements IDynamicPeripheral { @@ -53,7 +51,7 @@ public void setPlayer(PlayerEntity player) { } } - public PlayerInfo getBoundPlayer() { + public @Nullable PlayerInfo getBoundPlayer() { return modem.getBound(); } @@ -109,6 +107,7 @@ public MethodResult callMethod(@Nonnull IComputerAccess computer, @Nonnull ILuaC case 4: //getBoundPlayer PlayerInfo info = getBoundPlayer(); + if (info == null) return MethodResult.of(); return MethodResult.of(info.playerName(), info.uuid().toString()); default: return MethodResult.of(); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index acb8bae..d8e70f4 100755 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "id": "allium", + "id": "allium_peripherals", "version": "${version}", "name": "Allium Peripherals",