1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2024-06-16 18:19:55 +00:00

Use a fake network handler too

It appears that WB opens containers manually, and thus all of our stubs
network stubs are entirely ignored. Thus the only solution here is to
stub out the whole network handler code.

Thankfully this is simple enough - we do the same for Plethora and 1.14.

Fixes #328
This commit is contained in:
SquidDev 2019-12-23 17:17:32 +00:00
parent d254c6464b
commit 4d18234714
2 changed files with 237 additions and 0 deletions

View File

@ -8,6 +8,7 @@
import com.mojang.authlib.GameProfile;
import dan200.computercraft.api.turtle.ITurtleAccess;
import dan200.computercraft.shared.util.FakeNetHandler;
import dan200.computercraft.shared.util.InventoryUtil;
import dan200.computercraft.shared.util.WorldUtil;
import net.minecraft.entity.Entity;
@ -46,11 +47,13 @@ public class TurtlePlayer extends FakePlayer
public TurtlePlayer( World world )
{
super( (WorldServer) world, DEFAULT_PROFILE );
connection = new FakeNetHandler( this );
}
private TurtlePlayer( ITurtleAccess turtle )
{
super( (WorldServer) turtle.getWorld(), getProfile( turtle.getOwningPlayer() ) );
connection = new FakeNetHandler( this );
setState( turtle );
}

View File

@ -0,0 +1,234 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2019. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.shared.util;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
import net.minecraft.network.*;
import net.minecraft.network.play.client.*;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.common.util.FakePlayer;
import javax.annotation.Nonnull;
import javax.crypto.SecretKey;
public class FakeNetHandler extends NetHandlerPlayServer
{
public static class FakeNetworkManager extends NetworkManager
{
private INetHandler handler;
public FakeNetworkManager()
{
super( EnumPacketDirection.CLIENTBOUND );
}
@Override
public void channelActive( ChannelHandlerContext context )
{
}
@Override
public void setConnectionState( @Nonnull EnumConnectionState state )
{
}
@Override
public void channelInactive( ChannelHandlerContext context )
{
}
@Override
public void exceptionCaught( ChannelHandlerContext context, @Nonnull Throwable e )
{
}
@Override
public void setNetHandler( INetHandler handler )
{
this.handler = handler;
}
@Override
public void processReceivedPackets()
{
}
@Override
public void closeChannel( @Nonnull ITextComponent channel )
{
}
@Override
public boolean isLocalChannel()
{
return false;
}
@Override
public void enableEncryption( SecretKey key )
{
}
@Override
public boolean isChannelOpen()
{
return false;
}
@Nonnull
@Override
public INetHandler getNetHandler()
{
return handler;
}
@Nonnull
@Override
public ITextComponent getExitMessage()
{
return null;
}
@Override
public void disableAutoRead()
{
}
@Nonnull
@Override
public Channel channel()
{
return null;
}
}
public FakeNetHandler( FakePlayer player )
{
this( player.server, player );
}
public FakeNetHandler( MinecraftServer server, FakePlayer player )
{
super( server, new FakeNetworkManager(), player );
}
@Override
public void processInput( CPacketInput packet )
{
}
@Override
public void processPlayer( CPacketPlayer packet )
{
}
@Override
public void setPlayerLocation( double x, double y, double z, float yaw, float pitch )
{
}
@Override
public void processPlayerDigging( CPacketPlayerDigging packet )
{
}
@Override
public void onDisconnect( @Nonnull ITextComponent chat )
{
}
@Override
@SuppressWarnings( "rawtypes" )
public void sendPacket( @Nonnull final Packet packet )
{
}
@Override
public void processHeldItemChange( CPacketHeldItemChange packet )
{
}
@Override
public void processChatMessage( @Nonnull CPacketChatMessage packet )
{
}
@Override
public void processEntityAction( CPacketEntityAction packet )
{
}
@Override
public void processUseEntity( CPacketUseEntity packet )
{
}
@Override
public void processClientStatus( CPacketClientStatus packet )
{
}
@Override
public void processCloseWindow( @Nonnull CPacketCloseWindow packet )
{
}
@Override
public void processClickWindow( CPacketClickWindow packet )
{
}
@Override
public void processEnchantItem( CPacketEnchantItem packet )
{
}
@Override
public void processCreativeInventoryAction( @Nonnull CPacketCreativeInventoryAction packet )
{
}
@Override
public void processConfirmTransaction( @Nonnull CPacketConfirmTransaction packet )
{
}
@Override
public void processUpdateSign( CPacketUpdateSign packet )
{
}
@Override
public void processKeepAlive( @Nonnull CPacketKeepAlive packet )
{
}
@Override
public void processPlayerAbilities( CPacketPlayerAbilities packet )
{
}
@Override
public void processTabComplete( CPacketTabComplete packet )
{
}
@Override
public void processClientSettings( @Nonnull CPacketClientSettings packet )
{
}
@Override
public void processCustomPayload( CPacketCustomPayload packetIn )
{
}
}