Do not access the current server from the client

Just missing some guards in a few places.

Fixes #867
This commit is contained in:
Jonathan Coates 2021-07-23 23:32:14 +01:00
parent 82ca19c296
commit 924b8ef30f
No known key found for this signature in database
GPG Key ID: B9E431FF07C98D06
3 changed files with 10 additions and 6 deletions

View File

@ -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();

View File

@ -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 )

View File

@ -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