diff --git a/src/main/java/dan200/computercraft/shared/command/ClientCommands.java b/src/main/java/dan200/computercraft/shared/command/ClientCommands.java index c16b3fdd1..0477c46ad 100644 --- a/src/main/java/dan200/computercraft/shared/command/ClientCommands.java +++ b/src/main/java/dan200/computercraft/shared/command/ClientCommands.java @@ -7,11 +7,13 @@ import dan200.computercraft.ComputerCraft; import dan200.computercraft.shared.util.IDAssigner; +import net.minecraft.server.MinecraftServer; import net.minecraft.util.Util; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.ClientChatEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.server.ServerLifecycleHooks; import java.io.File; @@ -35,6 +37,9 @@ public static void onClientSendMessage( ClientChatEvent event ) // Emulate the command on the client side if( event.getMessage().startsWith( OPEN_COMPUTER ) ) { + MinecraftServer server = ServerLifecycleHooks.getCurrentServer(); + if( server == null || server.isDedicatedServer() ) return; + event.setCanceled( true ); String idStr = event.getMessage().substring( OPEN_COMPUTER.length() ).trim(); diff --git a/src/main/java/dan200/computercraft/shared/network/NetworkHandler.java b/src/main/java/dan200/computercraft/shared/network/NetworkHandler.java index 3d4fd5143..c66465340 100644 --- a/src/main/java/dan200/computercraft/shared/network/NetworkHandler.java +++ b/src/main/java/dan200/computercraft/shared/network/NetworkHandler.java @@ -21,7 +21,6 @@ import net.minecraftforge.fml.network.NetworkRegistry; import net.minecraftforge.fml.network.PacketDistributor; import net.minecraftforge.fml.network.simple.SimpleChannel; -import net.minecraftforge.fml.server.ServerLifecycleHooks; import java.util.function.Function; import java.util.function.Supplier; @@ -68,10 +67,7 @@ public static void sendToPlayer( PlayerEntity player, NetworkMessage packet ) public static void sendToAllPlayers( NetworkMessage packet ) { - for( ServerPlayerEntity player : ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayers() ) - { - sendToPlayer( player, packet ); - } + network.send( PacketDistributor.ALL.noArg(), packet ); } public static void sendToServer( NetworkMessage packet ) diff --git a/src/main/java/dan200/computercraft/shared/peripheral/speaker/TileSpeaker.java b/src/main/java/dan200/computercraft/shared/peripheral/speaker/TileSpeaker.java index 600190867..89e928503 100644 --- a/src/main/java/dan200/computercraft/shared/peripheral/speaker/TileSpeaker.java +++ b/src/main/java/dan200/computercraft/shared/peripheral/speaker/TileSpeaker.java @@ -47,7 +47,10 @@ public void tick() public void setRemoved() { super.setRemoved(); - NetworkHandler.sendToAllPlayers( new SpeakerStopClientMessage( source ) ); + if( level != null && !level.isClientSide ) + { + NetworkHandler.sendToAllPlayers( new SpeakerStopClientMessage( source ) ); + } } @Nonnull