diff --git a/src/main/java/appeng/core/CommonHelper.java b/src/main/java/appeng/core/CommonHelper.java index c2a32118d..43b31fc8a 100644 --- a/src/main/java/appeng/core/CommonHelper.java +++ b/src/main/java/appeng/core/CommonHelper.java @@ -34,6 +34,7 @@ import appeng.api.parts.CableRenderMode; import appeng.block.AEBaseBlock; import appeng.client.ActionKey; import appeng.client.EffectType; +import appeng.core.sync.AppEngPacket; public abstract class CommonHelper @@ -47,7 +48,7 @@ public abstract class CommonHelper public abstract List getPlayers(); - // FIXME public abstract void sendToAllNearExcept( PlayerEntity p, double x, double y, double z, double dist, World w, AppEngPacket packet ); + public abstract void sendToAllNearExcept( PlayerEntity p, double x, double y, double z, double dist, World w, AppEngPacket packet ); public abstract void spawnEffect( EffectType effect, World world, double posX, double posY, double posZ, Object extra ); diff --git a/src/main/java/appeng/core/sync/AppEngPacket.java b/src/main/java/appeng/core/sync/AppEngPacket.java index c41efbe5c..ae2d20cf9 100644 --- a/src/main/java/appeng/core/sync/AppEngPacket.java +++ b/src/main/java/appeng/core/sync/AppEngPacket.java @@ -20,14 +20,15 @@ package appeng.core.sync; import java.io.ByteArrayInputStream; -import java.io.IOException; + +import org.apache.commons.lang3.tuple.Pair; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.network.INetHandler; import net.minecraft.network.IPacket; import net.minecraft.network.PacketBuffer; +import net.minecraftforge.fml.network.NetworkDirection; import appeng.core.AEConfig; import appeng.core.AELog; @@ -36,12 +37,11 @@ import appeng.core.sync.network.INetworkInfo; import appeng.core.sync.network.NetworkHandler; -public abstract class AppEngPacket implements IPacket +public abstract class AppEngPacket { private PacketBuffer p; - private PacketCallState caller; - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { throw new UnsupportedOperationException( "This packet ( " + this.getPacketID() + " does not implement a server side handler." ); } @@ -51,7 +51,7 @@ public abstract class AppEngPacket implements IPacket return AppEngPacketHandlerBase.PacketTypes.getID( this.getClass() ).ordinal(); } - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { throw new UnsupportedOperationException( "This packet ( " + this.getPacketID() + " does not implement a client side handler." ); } @@ -62,33 +62,19 @@ public abstract class AppEngPacket implements IPacket this.p = new PacketBuffer( data ); } - public FMLProxyPacket getProxy() + public IPacket toPacket( NetworkDirection direction ) { if( this.p.array().length > 2 * 1024 * 1024 ) // 2k walking room :) { throw new IllegalArgumentException( "Sorry AE2 made a " + this.p.array().length + " byte packet by accident!" ); } - final FMLProxyPacket pp = new FMLProxyPacket( this.p, NetworkHandler.instance().getChannel() ); - if( AEConfig.instance().isFeatureEnabled( AEFeature.PACKET_LOGGING ) ) { - AELog.info( this.getClass().getName() + " : " + pp.payload().readableBytes() ); + AELog.info( this.getClass().getName() + " : " + p.readableBytes() ); } - return pp; - } - - @Override - public void readPacketData( final PacketBuffer buf ) throws IOException - { - throw new RuntimeException( "Not Implemented" ); - } - - @Override - public void writePacketData( final PacketBuffer buf ) throws IOException - { - throw new RuntimeException( "Not Implemented" ); + return direction.buildPacket( Pair.of( p, 0 ), NetworkHandler.instance().getChannel() ).getThis(); } // TODO: Figure out why Forge/Minecraft on the server sets the stream data buffer to PooledUnsafeDirectByteBuf @@ -113,16 +99,4 @@ public abstract class AppEngPacket implements IPacket { return this.getPacketByteArray( stream, 0, stream.readableBytes() ); } - - public void setCallParam( final PacketCallState call ) - { - this.caller = call; - } - - @Override - public void processPacket( final INetHandler handler ) - { - this.caller.call( this ); - } - } diff --git a/src/main/java/appeng/core/sync/PacketCallState.java b/src/main/java/appeng/core/sync/PacketCallState.java deleted file mode 100644 index 71c316b20..000000000 --- a/src/main/java/appeng/core/sync/PacketCallState.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of Applied Energistics 2. - * Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved. - * - * Applied Energistics 2 is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Applied Energistics 2 is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Applied Energistics 2. If not, see . - */ - -package appeng.core.sync; - - -public abstract class PacketCallState -{ - - public abstract void call( AppEngPacket appEngPacket ); - -} diff --git a/src/main/java/appeng/core/sync/network/AppEngClientPacketHandler.java b/src/main/java/appeng/core/sync/network/AppEngClientPacketHandler.java index af07fdc99..6036e0333 100644 --- a/src/main/java/appeng/core/sync/network/AppEngClientPacketHandler.java +++ b/src/main/java/appeng/core/sync/network/AppEngClientPacketHandler.java @@ -21,60 +21,29 @@ package appeng.core.sync.network; import java.lang.reflect.InvocationTargetException; -import io.netty.buffer.ByteBuf; - import net.minecraft.client.Minecraft; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.network.INetHandler; -import net.minecraft.network.PacketThreadUtil; -import net.minecraftforge.fml.common.network.internal.FMLProxyPacket; +import net.minecraft.network.PacketBuffer; import appeng.core.AELog; import appeng.core.sync.AppEngPacket; import appeng.core.sync.AppEngPacketHandlerBase; -import appeng.core.sync.PacketCallState; public class AppEngClientPacketHandler extends AppEngPacketHandlerBase implements IPacketHandler { @Override - public void onPacketData( final INetworkInfo manager, final INetHandler handler, final FMLProxyPacket packet, final PlayerEntity player ) + public void onPacketData( final INetworkInfo manager, final INetHandler handler, final PacketBuffer packet, final PlayerEntity player ) { - final ByteBuf stream = packet.payload(); - try { - final int packetType = stream.readInt(); - final AppEngPacket pack = PacketTypes.getPacket( packetType ).parsePacket( stream ); - - final PacketCallState callState = new PacketCallState() - { - - @Override - public void call( final AppEngPacket appEngPacket ) - { - appEngPacket.clientPacketData( manager, appEngPacket, Minecraft.getInstance().player ); - } - }; - - pack.setCallParam( callState ); - PacketThreadUtil.checkThreadAndEnqueue( pack, handler, Minecraft.getInstance() ); - callState.call( pack ); + final int packetType = packet.readInt(); + final AppEngPacket pack = PacketTypes.getPacket( packetType ).parsePacket( packet ); + pack.clientPacketData( manager, Minecraft.getInstance().player ); } - catch( final InstantiationException e ) - { - AELog.debug( e ); - } - catch( final IllegalAccessException e ) - { - AELog.debug( e ); - } - catch( final IllegalArgumentException e ) - { - AELog.debug( e ); - } - catch( final InvocationTargetException e ) + catch( final InstantiationException | IllegalArgumentException | IllegalAccessException | InvocationTargetException e ) { AELog.debug( e ); } diff --git a/src/main/java/appeng/core/sync/network/AppEngServerPacketHandler.java b/src/main/java/appeng/core/sync/network/AppEngServerPacketHandler.java index 9c18c1ce0..c9da9d28a 100644 --- a/src/main/java/appeng/core/sync/network/AppEngServerPacketHandler.java +++ b/src/main/java/appeng/core/sync/network/AppEngServerPacketHandler.java @@ -21,60 +21,28 @@ package appeng.core.sync.network; import java.lang.reflect.InvocationTargetException; -import io.netty.buffer.ByteBuf; - import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.PlayerEntityMP; import net.minecraft.network.INetHandler; -import net.minecraft.network.PacketThreadUtil; -import net.minecraftforge.fml.common.network.internal.FMLProxyPacket; +import net.minecraft.network.PacketBuffer; import appeng.core.AELog; import appeng.core.sync.AppEngPacket; import appeng.core.sync.AppEngPacketHandlerBase; -import appeng.core.sync.PacketCallState; public final class AppEngServerPacketHandler extends AppEngPacketHandlerBase implements IPacketHandler { @Override - public void onPacketData( final INetworkInfo manager, final INetHandler handler, final FMLProxyPacket packet, final PlayerEntity player ) + public void onPacketData( final INetworkInfo manager, final INetHandler handler, final PacketBuffer packet, final PlayerEntity player ) { - final ByteBuf stream = packet.payload(); - try { - final int packetType = stream.readInt(); - final AppEngPacket pack = PacketTypes.getPacket( packetType ).parsePacket( stream ); - - final PacketCallState callState = new PacketCallState() - { - - @Override - public void call( final AppEngPacket appEngPacket ) - { - appEngPacket.serverPacketData( manager, appEngPacket, player ); - } - }; - - pack.setCallParam( callState ); - PacketThreadUtil.checkThreadAndEnqueue( pack, handler, ( (PlayerEntityMP) player ).getServer() ); - callState.call( pack ); + final int packetType = packet.readInt(); + final AppEngPacket pack = PacketTypes.getPacket( packetType ).parsePacket( packet ); + pack.serverPacketData( manager, player ); } - catch( final InstantiationException e ) - { - AELog.debug( e ); - } - catch( final IllegalAccessException e ) - { - AELog.debug( e ); - } - catch( final IllegalArgumentException e ) - { - AELog.debug( e ); - } - catch( final InvocationTargetException e ) + catch( final InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e ) { AELog.debug( e ); } diff --git a/src/main/java/appeng/core/sync/network/IPacketHandler.java b/src/main/java/appeng/core/sync/network/IPacketHandler.java index da2fc7d0e..012adffff 100644 --- a/src/main/java/appeng/core/sync/network/IPacketHandler.java +++ b/src/main/java/appeng/core/sync/network/IPacketHandler.java @@ -20,6 +20,7 @@ package appeng.core.sync.network; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.INetHandler; import net.minecraft.network.PacketBuffer; import net.minecraftforge.fml.network.PacketDispatcher; @@ -27,6 +28,6 @@ import net.minecraftforge.fml.network.PacketDispatcher; public interface IPacketHandler { - void onPacketData(INetworkInfo manager, PacketDispatcher dispatcher, PacketBuffer packet, PlayerEntity player ); + void onPacketData(INetworkInfo manager, INetHandler handler, PacketBuffer packet, PlayerEntity player ); } diff --git a/src/main/java/appeng/core/sync/network/NetworkHandler.java b/src/main/java/appeng/core/sync/network/NetworkHandler.java index 1b773d0cb..eec9a5e3a 100644 --- a/src/main/java/appeng/core/sync/network/NetworkHandler.java +++ b/src/main/java/appeng/core/sync/network/NetworkHandler.java @@ -19,15 +19,22 @@ package appeng.core.sync.network; -import net.minecraft.entity.player.PlayerEntityMP; -import net.minecraft.network.NetHandlerPlayServer; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.network.INetHandler; +import net.minecraft.network.IPacket; import net.minecraft.network.ThreadQuickExitException; -import net.minecraftforge.fml.common.FMLCommonHandler; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.common.network.FMLEventChannel; -import net.minecraftforge.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent; -import net.minecraftforge.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent; -import net.minecraftforge.fml.common.network.NetworkRegistry; +import net.minecraft.network.play.ServerPlayNetHandler; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.dimension.DimensionType; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.LogicalSide; +import net.minecraftforge.fml.LogicalSidedProvider; +import net.minecraftforge.fml.network.NetworkDirection; +import net.minecraftforge.fml.network.NetworkEvent; +import net.minecraftforge.fml.network.NetworkRegistry; +import net.minecraftforge.fml.network.event.EventNetworkChannel; import appeng.core.sync.AppEngPacket; @@ -36,23 +43,22 @@ public class NetworkHandler { private static NetworkHandler instance; - private final FMLEventChannel ec; - private final String myChannelName; + private final EventNetworkChannel ec; + private final ResourceLocation myChannelName; private final IPacketHandler clientHandler; private final IPacketHandler serveHandler; - public NetworkHandler( final String channelName ) + public NetworkHandler( final ResourceLocation channelName ) { - FMLCommonHandler.instance().bus().register( this ); - this.ec = NetworkRegistry.INSTANCE.newEventDrivenChannel( this.myChannelName = channelName ); - this.ec.register( this ); + ec = NetworkRegistry.ChannelBuilder.named( myChannelName = channelName ).networkProtocolVersion( () -> "1" ).clientAcceptedVersions( s -> true ).serverAcceptedVersions( s -> true ).eventNetworkChannel(); + ec.registerObject( this ); this.clientHandler = this.createClientSide(); this.serveHandler = this.createServerSide(); } - public static void init( final String channelName ) + public static void init( final ResourceLocation channelName ) { instance = new NetworkHandler( channelName ); } @@ -87,14 +93,17 @@ public class NetworkHandler } @SubscribeEvent - public void serverPacket( final ServerCustomPacketEvent ev ) + public void serverPacket( final NetworkEvent.ClientCustomPayloadEvent ev ) { - final NetHandlerPlayServer srv = (NetHandlerPlayServer) ev.getPacket().handler(); if( this.serveHandler != null ) { try { - this.serveHandler.onPacketData( null, ev.getHandler(), ev.getPacket(), srv.player ); + NetworkEvent.Context ctx = ev.getSource().get(); + ServerPlayNetHandler netHandler = (ServerPlayNetHandler) ctx.getNetworkManager().getNetHandler(); + ctx.setPacketHandled( true ); + ctx.enqueueWork( () -> this.serveHandler.onPacketData( null, netHandler, ev.getPayload(), netHandler.player ) ); + } catch( final ThreadQuickExitException ignored ) { @@ -104,13 +113,20 @@ public class NetworkHandler } @SubscribeEvent - public void clientPacket( final ClientCustomPacketEvent ev ) + public void clientPacket( final NetworkEvent.ServerCustomPayloadEvent ev ) { + if( ev instanceof NetworkEvent.ServerCustomPayloadLoginEvent ) + { + return; + } if( this.clientHandler != null ) { try { - this.clientHandler.onPacketData( null, ev.getHandler(), ev.getPacket(), null ); + NetworkEvent.Context ctx = ev.getSource().get(); + INetHandler netHandler = ctx.getNetworkManager().getNetHandler(); + ctx.setPacketHandled( true ); + ctx.enqueueWork( () -> this.clientHandler.onPacketData( null, netHandler, ev.getPayload(), null ) ); } catch( final ThreadQuickExitException ignored ) { @@ -119,33 +135,39 @@ public class NetworkHandler } } - public String getChannel() + public ResourceLocation getChannel() { return this.myChannelName; } public void sendToAll( final AppEngPacket message ) { - this.ec.sendToAll( message.getProxy() ); + getServer().getPlayerList().sendPacketToAllPlayers( message.toPacket( NetworkDirection.PLAY_TO_CLIENT ) ); } - public void sendTo( final AppEngPacket message, final PlayerEntityMP player ) + public void sendTo( final AppEngPacket message, final ServerPlayerEntity player ) { - this.ec.sendTo( message.getProxy(), player ); + player.connection.sendPacket( message.toPacket( NetworkDirection.PLAY_TO_CLIENT ) ); } - public void sendToAllAround( final AppEngPacket message, final NetworkRegistry.TargetPoint point ) + public void sendToAllAround( final AppEngPacket message, final TargetPoint point ) { - this.ec.sendToAllAround( message.getProxy(), point ); + IPacket pkt = message.toPacket( NetworkDirection.PLAY_TO_CLIENT ); + getServer().getPlayerList().sendToAllNearExcept( point.excluded, point.x, point.y, point.z, point.r2, point.dim, pkt); } - public void sendToDimension( final AppEngPacket message, final int dimensionId ) + public void sendToDimension( final AppEngPacket message, final DimensionType dim ) { - this.ec.sendToDimension( message.getProxy(), dimensionId ); + getServer().getPlayerList().sendPacketToAllPlayersInDimension( message.toPacket( NetworkDirection.PLAY_TO_CLIENT ), dim ); } public void sendToServer( final AppEngPacket message ) { - this.ec.sendToServer( message.getProxy() ); + Minecraft.getInstance().getConnection().sendPacket( message.toPacket( NetworkDirection.PLAY_TO_SERVER ) ); + } + + private MinecraftServer getServer() + { + return LogicalSidedProvider.INSTANCE.get( LogicalSide.SERVER ); } } diff --git a/src/main/java/appeng/core/sync/network/TargetPoint.java b/src/main/java/appeng/core/sync/network/TargetPoint.java new file mode 100644 index 000000000..8e95cabdf --- /dev/null +++ b/src/main/java/appeng/core/sync/network/TargetPoint.java @@ -0,0 +1,44 @@ +package appeng.core.sync.network; + + +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.world.dimension.DimensionType; + + +/** + * Created by covers1624 on 1/6/20. + */ +public class TargetPoint +{ + + public final ServerPlayerEntity excluded; + public final double x; + public final double y; + public final double z; + public final double r2; + public final DimensionType dim; + + public TargetPoint( double x, double y, double z, double r2, DimensionType dim ) + { + this( null, x, y, z, r2, dim ); + } + + public TargetPoint( ServerPlayerEntity excluded, double x, double y, double z, double r2, DimensionType dim ) + { + this.excluded = excluded; + this.x = x; + this.y = y; + this.z = z; + this.r2 = r2; + this.dim = dim; + } + + + public static TargetPoint at(double x, double y, double z, double r2, DimensionType dim) { + return new TargetPoint( x, y, z, r2, dim ); + } + + public static TargetPoint at(ServerPlayerEntity excluded, double x, double y, double z, double r2, DimensionType dim) { + return new TargetPoint( excluded, x, y, z, r2, dim ); + } +} diff --git a/src/main/java/appeng/core/sync/packets/PacketAssemblerAnimation.java b/src/main/java/appeng/core/sync/packets/PacketAssemblerAnimation.java index 40a6506c4..6ecc1573a 100644 --- a/src/main/java/appeng/core/sync/packets/PacketAssemblerAnimation.java +++ b/src/main/java/appeng/core/sync/packets/PacketAssemblerAnimation.java @@ -75,7 +75,7 @@ public class PacketAssemblerAnimation extends AppEngPacket @Override @OnlyIn( Dist.CLIENT ) - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { final double d0 = 0.5d;// + ((double) (Platform.getRandomFloat() - 0.5F) * 0.26D); final double d1 = 0.5d;// + ((double) (Platform.getRandomFloat() - 0.5F) * 0.26D); diff --git a/src/main/java/appeng/core/sync/packets/PacketClick.java b/src/main/java/appeng/core/sync/packets/PacketClick.java index c15a0b187..33a0456b2 100644 --- a/src/main/java/appeng/core/sync/packets/PacketClick.java +++ b/src/main/java/appeng/core/sync/packets/PacketClick.java @@ -30,12 +30,12 @@ import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; -import appeng.api.AEApi; import appeng.api.definitions.IComparableDefinition; import appeng.api.definitions.IItems; import appeng.api.implementations.items.IMemoryCard; import appeng.api.implementations.items.MemoryCardMessages; import appeng.block.networking.BlockCableBus; +import appeng.core.Api; import appeng.core.sync.AppEngPacket; import appeng.core.sync.network.INetworkInfo; import appeng.items.tools.ToolNetworkTool; @@ -110,7 +110,7 @@ public class PacketClick extends AppEngPacket } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { final ItemStack is = player.inventory.getCurrentItem(); final IItems items = Api.INSTANCE.definitions().items(); @@ -140,7 +140,7 @@ public class PacketClick extends AppEngPacket { final IMemoryCard mem = (IMemoryCard) is.getItem(); mem.notifyUser( player, MemoryCardMessages.SETTINGS_CLEARED ); - is.setTagCompound( null ); + is.setTag( null ); } else if( maybeColorApplicator.isSameAs( is ) ) diff --git a/src/main/java/appeng/core/sync/packets/PacketCompassRequest.java b/src/main/java/appeng/core/sync/packets/PacketCompassRequest.java index 5d8880f06..64ec23780 100644 --- a/src/main/java/appeng/core/sync/packets/PacketCompassRequest.java +++ b/src/main/java/appeng/core/sync/packets/PacketCompassRequest.java @@ -74,7 +74,7 @@ public class PacketCompassRequest extends AppEngPacket implements ICompassCallba } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { this.talkBackTo = player; diff --git a/src/main/java/appeng/core/sync/packets/PacketCompassResponse.java b/src/main/java/appeng/core/sync/packets/PacketCompassResponse.java index 03a2da12e..e22172cb1 100644 --- a/src/main/java/appeng/core/sync/packets/PacketCompassResponse.java +++ b/src/main/java/appeng/core/sync/packets/PacketCompassResponse.java @@ -71,8 +71,8 @@ public class PacketCompassResponse extends AppEngPacket } @Override - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { CompassManager.INSTANCE.postResult( this.attunement, this.cx << 4, this.cdy << 5, this.cz << 4, this.cr ); } -} \ No newline at end of file +} diff --git a/src/main/java/appeng/core/sync/packets/PacketCompressedNBT.java b/src/main/java/appeng/core/sync/packets/PacketCompressedNBT.java index 0ce0eb55f..ec9a3c4a5 100644 --- a/src/main/java/appeng/core/sync/packets/PacketCompressedNBT.java +++ b/src/main/java/appeng/core/sync/packets/PacketCompressedNBT.java @@ -105,7 +105,7 @@ public class PacketCompressedNBT extends AppEngPacket @Override @OnlyIn( Dist.CLIENT ) - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { final GuiScreen gs = Minecraft.getInstance().currentScreen; diff --git a/src/main/java/appeng/core/sync/packets/PacketConfigButton.java b/src/main/java/appeng/core/sync/packets/PacketConfigButton.java index 85476cea1..019caa5ea 100644 --- a/src/main/java/appeng/core/sync/packets/PacketConfigButton.java +++ b/src/main/java/appeng/core/sync/packets/PacketConfigButton.java @@ -64,7 +64,7 @@ public final class PacketConfigButton extends AppEngPacket } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { final PlayerEntityMP sender = (PlayerEntityMP) player; if( sender.openContainer instanceof AEBaseContainer ) diff --git a/src/main/java/appeng/core/sync/packets/PacketCraftRequest.java b/src/main/java/appeng/core/sync/packets/PacketCraftRequest.java index 0d4fbe0a6..bda7a2aea 100644 --- a/src/main/java/appeng/core/sync/packets/PacketCraftRequest.java +++ b/src/main/java/appeng/core/sync/packets/PacketCraftRequest.java @@ -70,7 +70,7 @@ public class PacketCraftRequest extends AppEngPacket } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { if( player.openContainer instanceof ContainerCraftAmount ) { diff --git a/src/main/java/appeng/core/sync/packets/PacketFluidSlot.java b/src/main/java/appeng/core/sync/packets/PacketFluidSlot.java index ba646c16f..241d9e4f0 100644 --- a/src/main/java/appeng/core/sync/packets/PacketFluidSlot.java +++ b/src/main/java/appeng/core/sync/packets/PacketFluidSlot.java @@ -74,7 +74,7 @@ public class PacketFluidSlot extends AppEngPacket } @Override - public void clientPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo manager, final PlayerEntity player ) { final Container c = player.openContainer; if( c instanceof IFluidSyncContainer ) @@ -84,7 +84,7 @@ public class PacketFluidSlot extends AppEngPacket } @Override - public void serverPacketData( INetworkInfo manager, AppEngPacket packet, PlayerEntity player ) + public void serverPacketData( INetworkInfo manager, PlayerEntity player ) { final Container c = player.openContainer; if( c instanceof IFluidSyncContainer ) diff --git a/src/main/java/appeng/core/sync/packets/PacketInventoryAction.java b/src/main/java/appeng/core/sync/packets/PacketInventoryAction.java index 64165aeec..eac3c5c7d 100644 --- a/src/main/java/appeng/core/sync/packets/PacketInventoryAction.java +++ b/src/main/java/appeng/core/sync/packets/PacketInventoryAction.java @@ -121,7 +121,7 @@ public class PacketInventoryAction extends AppEngPacket } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { final PlayerEntityMP sender = (PlayerEntityMP) player; if( sender.openContainer instanceof AEBaseContainer ) @@ -158,7 +158,7 @@ public class PacketInventoryAction extends AppEngPacket } @Override - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { if( this.action == InventoryAction.UPDATE_HAND ) { diff --git a/src/main/java/appeng/core/sync/packets/PacketJEIRecipe.java b/src/main/java/appeng/core/sync/packets/PacketJEIRecipe.java index 86a1c7fe0..cb0099d60 100644 --- a/src/main/java/appeng/core/sync/packets/PacketJEIRecipe.java +++ b/src/main/java/appeng/core/sync/packets/PacketJEIRecipe.java @@ -36,7 +36,6 @@ import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.NBTTagList; import net.minecraftforge.items.IItemHandler; -import appeng.api.AEApi; import appeng.api.config.Actionable; import appeng.api.config.SecurityPermissions; import appeng.api.networking.IGrid; @@ -106,7 +105,7 @@ public class PacketJEIRecipe extends AppEngPacket } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { final PlayerEntityMP pmp = (PlayerEntityMP) player; final Container con = pmp.openContainer; diff --git a/src/main/java/appeng/core/sync/packets/PacketLightning.java b/src/main/java/appeng/core/sync/packets/PacketLightning.java index e5f579f82..ea27b474b 100644 --- a/src/main/java/appeng/core/sync/packets/PacketLightning.java +++ b/src/main/java/appeng/core/sync/packets/PacketLightning.java @@ -69,7 +69,7 @@ public class PacketLightning extends AppEngPacket @Override @OnlyIn( Dist.CLIENT ) - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { try { diff --git a/src/main/java/appeng/core/sync/packets/PacketMEFluidInventoryUpdate.java b/src/main/java/appeng/core/sync/packets/PacketMEFluidInventoryUpdate.java index 68ddad123..51e631bbc 100644 --- a/src/main/java/appeng/core/sync/packets/PacketMEFluidInventoryUpdate.java +++ b/src/main/java/appeng/core/sync/packets/PacketMEFluidInventoryUpdate.java @@ -35,10 +35,13 @@ import io.netty.buffer.Unpooled; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.screen.Screen; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.IPacket; import net.minecraftforge.fml.common.network.internal.FMLProxyPacket; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.network.NetworkDirection; import appeng.api.storage.data.IAEFluidStack; import appeng.core.AELog; @@ -149,9 +152,9 @@ public class PacketMEFluidInventoryUpdate extends AppEngPacket @Override @OnlyIn( Dist.CLIENT ) - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { - final GuiScreen gs = Minecraft.getInstance().currentScreen; + final Screen gs = Minecraft.getInstance().currentScreen; if( gs instanceof GuiFluidTerminal ) { @@ -161,14 +164,14 @@ public class PacketMEFluidInventoryUpdate extends AppEngPacket @Nullable @Override - public FMLProxyPacket getProxy() + public IPacket toPacket( NetworkDirection direction ) { try { this.compressFrame.close(); this.configureWrite( this.data ); - return super.getProxy(); + return super.toPacket( direction ); } catch( final IOException e ) { diff --git a/src/main/java/appeng/core/sync/packets/PacketMEInventoryUpdate.java b/src/main/java/appeng/core/sync/packets/PacketMEInventoryUpdate.java index e9c0758c3..eb6743f46 100644 --- a/src/main/java/appeng/core/sync/packets/PacketMEInventoryUpdate.java +++ b/src/main/java/appeng/core/sync/packets/PacketMEInventoryUpdate.java @@ -36,9 +36,11 @@ import io.netty.buffer.Unpooled; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.IPacket; import net.minecraftforge.fml.common.network.internal.FMLProxyPacket; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.network.NetworkDirection; import appeng.api.storage.data.IAEItemStack; import appeng.client.gui.implementations.GuiCraftConfirm; @@ -147,7 +149,7 @@ public class PacketMEInventoryUpdate extends AppEngPacket @Override @OnlyIn( Dist.CLIENT ) - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { final GuiScreen gs = Minecraft.getInstance().currentScreen; @@ -174,14 +176,14 @@ public class PacketMEInventoryUpdate extends AppEngPacket @Nullable @Override - public FMLProxyPacket getProxy() + public IPacket toPacket( NetworkDirection direction ) { try { this.compressFrame.close(); this.configureWrite( this.data ); - return super.getProxy(); + return super.toPacket( direction ); } catch( final IOException e ) { diff --git a/src/main/java/appeng/core/sync/packets/PacketMatterCannon.java b/src/main/java/appeng/core/sync/packets/PacketMatterCannon.java index bc1ff59dd..345d3a9d6 100644 --- a/src/main/java/appeng/core/sync/packets/PacketMatterCannon.java +++ b/src/main/java/appeng/core/sync/packets/PacketMatterCannon.java @@ -88,7 +88,7 @@ public class PacketMatterCannon extends AppEngPacket @Override @OnlyIn( Dist.CLIENT ) - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { try { diff --git a/src/main/java/appeng/core/sync/packets/PacketMockExplosion.java b/src/main/java/appeng/core/sync/packets/PacketMockExplosion.java index 2d95812d9..0559838cc 100644 --- a/src/main/java/appeng/core/sync/packets/PacketMockExplosion.java +++ b/src/main/java/appeng/core/sync/packets/PacketMockExplosion.java @@ -67,7 +67,7 @@ public class PacketMockExplosion extends AppEngPacket @Override @OnlyIn( Dist.CLIENT ) - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { final World world = AppEng.proxy.getWorld(); world.spawnParticle( EnumParticleTypes.EXPLOSION_LARGE, this.x, this.y, this.z, 1.0D, 0.0D, 0.0D, new int[0] ); diff --git a/src/main/java/appeng/core/sync/packets/PacketPaintedEntity.java b/src/main/java/appeng/core/sync/packets/PacketPaintedEntity.java index 7b89746a9..6d11ee768 100644 --- a/src/main/java/appeng/core/sync/packets/PacketPaintedEntity.java +++ b/src/main/java/appeng/core/sync/packets/PacketPaintedEntity.java @@ -61,7 +61,7 @@ public class PacketPaintedEntity extends AppEngPacket } @Override - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { final PlayerColor pc = new PlayerColor( this.entityId, this.myColor, this.ticks ); TickHandler.INSTANCE.getPlayerColors().put( this.entityId, pc ); diff --git a/src/main/java/appeng/core/sync/packets/PacketPartPlacement.java b/src/main/java/appeng/core/sync/packets/PacketPartPlacement.java index 1d550592e..57833c3ce 100644 --- a/src/main/java/appeng/core/sync/packets/PacketPartPlacement.java +++ b/src/main/java/appeng/core/sync/packets/PacketPartPlacement.java @@ -72,7 +72,7 @@ public class PacketPartPlacement extends AppEngPacket } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { final PlayerEntityMP sender = (PlayerEntityMP) player; AppEng.proxy.updateRenderMode( sender ); diff --git a/src/main/java/appeng/core/sync/packets/PacketPatternSlot.java b/src/main/java/appeng/core/sync/packets/PacketPatternSlot.java index f02f671f1..4948f28ba 100644 --- a/src/main/java/appeng/core/sync/packets/PacketPatternSlot.java +++ b/src/main/java/appeng/core/sync/packets/PacketPatternSlot.java @@ -28,7 +28,6 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntityMP; import net.minecraftforge.items.IItemHandler; -import appeng.api.AEApi; import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.container.implementations.ContainerPatternTerm; @@ -109,7 +108,7 @@ public class PacketPatternSlot extends AppEngPacket } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { final PlayerEntityMP sender = (PlayerEntityMP) player; if( sender.openContainer instanceof ContainerPatternTerm ) diff --git a/src/main/java/appeng/core/sync/packets/PacketProgressBar.java b/src/main/java/appeng/core/sync/packets/PacketProgressBar.java index e498d77c8..32aaa9455 100644 --- a/src/main/java/appeng/core/sync/packets/PacketProgressBar.java +++ b/src/main/java/appeng/core/sync/packets/PacketProgressBar.java @@ -59,7 +59,7 @@ public class PacketProgressBar extends AppEngPacket } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { final Container c = player.openContainer; if( c instanceof AEBaseContainer ) @@ -69,7 +69,7 @@ public class PacketProgressBar extends AppEngPacket } @Override - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { final Container c = player.openContainer; if( c instanceof AEBaseContainer ) diff --git a/src/main/java/appeng/core/sync/packets/PacketSwapSlots.java b/src/main/java/appeng/core/sync/packets/PacketSwapSlots.java index 636759c55..89718a66d 100644 --- a/src/main/java/appeng/core/sync/packets/PacketSwapSlots.java +++ b/src/main/java/appeng/core/sync/packets/PacketSwapSlots.java @@ -55,7 +55,7 @@ public class PacketSwapSlots extends AppEngPacket } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { if( player != null && player.openContainer instanceof AEBaseContainer ) { diff --git a/src/main/java/appeng/core/sync/packets/PacketSwitchGuis.java b/src/main/java/appeng/core/sync/packets/PacketSwitchGuis.java index 7fbc67427..5a2ebc6ed 100644 --- a/src/main/java/appeng/core/sync/packets/PacketSwitchGuis.java +++ b/src/main/java/appeng/core/sync/packets/PacketSwitchGuis.java @@ -59,7 +59,7 @@ public class PacketSwitchGuis extends AppEngPacket } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { final Container c = player.openContainer; if( c instanceof AEBaseContainer ) diff --git a/src/main/java/appeng/core/sync/packets/PacketTargetFluidStack.java b/src/main/java/appeng/core/sync/packets/PacketTargetFluidStack.java index a6fd9681c..23396b152 100644 --- a/src/main/java/appeng/core/sync/packets/PacketTargetFluidStack.java +++ b/src/main/java/appeng/core/sync/packets/PacketTargetFluidStack.java @@ -84,7 +84,7 @@ public class PacketTargetFluidStack extends AppEngPacket } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { if( player.openContainer instanceof ContainerFluidTerminal ) { diff --git a/src/main/java/appeng/core/sync/packets/PacketTargetItemStack.java b/src/main/java/appeng/core/sync/packets/PacketTargetItemStack.java index bb6e5ef14..2cfb7cda1 100644 --- a/src/main/java/appeng/core/sync/packets/PacketTargetItemStack.java +++ b/src/main/java/appeng/core/sync/packets/PacketTargetItemStack.java @@ -79,7 +79,7 @@ public class PacketTargetItemStack extends AppEngPacket } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { if( player.openContainer instanceof AEBaseContainer ) { diff --git a/src/main/java/appeng/core/sync/packets/PacketTransitionEffect.java b/src/main/java/appeng/core/sync/packets/PacketTransitionEffect.java index ef617e11d..d089e82df 100644 --- a/src/main/java/appeng/core/sync/packets/PacketTransitionEffect.java +++ b/src/main/java/appeng/core/sync/packets/PacketTransitionEffect.java @@ -83,7 +83,7 @@ public class PacketTransitionEffect extends AppEngPacket @Override @OnlyIn( Dist.CLIENT ) - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { final World world = AppEng.proxy.getWorld(); diff --git a/src/main/java/appeng/core/sync/packets/PacketValueConfig.java b/src/main/java/appeng/core/sync/packets/PacketValueConfig.java index 083d46a9d..2f3232af5 100644 --- a/src/main/java/appeng/core/sync/packets/PacketValueConfig.java +++ b/src/main/java/appeng/core/sync/packets/PacketValueConfig.java @@ -95,7 +95,7 @@ public class PacketValueConfig extends AppEngPacket } @Override - public void serverPacketData( final INetworkInfo manager, final AppEngPacket packet, final PlayerEntity player ) + public void serverPacketData( final INetworkInfo manager, final PlayerEntity player ) { final Container c = player.openContainer; @@ -270,7 +270,7 @@ public class PacketValueConfig extends AppEngPacket } @Override - public void clientPacketData( final INetworkInfo network, final AppEngPacket packet, final PlayerEntity player ) + public void clientPacketData( final INetworkInfo network, final PlayerEntity player ) { final Container c = player.openContainer; diff --git a/src/main/java/appeng/server/ServerHelper.java b/src/main/java/appeng/server/ServerHelper.java index e8794ede1..bae7e2fee 100644 --- a/src/main/java/appeng/server/ServerHelper.java +++ b/src/main/java/appeng/server/ServerHelper.java @@ -25,22 +25,23 @@ import java.util.Random; import net.minecraft.client.util.InputMappings; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.World; +import net.minecraftforge.fml.server.ServerLifecycleHooks; import appeng.api.parts.CableRenderMode; import appeng.block.AEBaseBlock; import appeng.client.ActionKey; import appeng.client.EffectType; import appeng.core.CommonHelper; +import appeng.core.sync.AppEngPacket; +import appeng.core.sync.network.NetworkHandler; import appeng.util.Platform; -import net.minecraftforge.fml.server.ServerLifecycleHooks; public class ServerHelper extends CommonHelper @@ -82,31 +83,28 @@ public class ServerHelper extends CommonHelper return new ArrayList<>(); } - // FIXME @Override - // FIXME public void sendToAllNearExcept(final PlayerEntity p, final double x, final double y, final double z, final double dist, final World w, final AppEngPacket packet ) - // FIXME { - // FIXME if( Platform.isClient() ) - // FIXME { - // FIXME return; - // FIXME } - // FIXME - // FIXME for( final PlayerEntity o : this.getPlayers() ) - // FIXME { - // FIXME final ServerPlayerEntity entityplayermp = (ServerPlayerEntity) o; - // FIXME - // FIXME if( entityplayermp != p && entityplayermp.world == w ) - // FIXME { - // FIXME final double dX = x - entityplayermp.getPosX(); - // FIXME final double dY = y - entityplayermp.getPosY(); - // FIXME final double dZ = z - entityplayermp.getPosZ(); - // FIXME - // FIXME if( dX * dX + dY * dY + dZ * dZ < dist * dist ) - // FIXME { - // FIXME NetworkHandler.instance().sendTo( packet, entityplayermp ); - // FIXME } - // FIXME } - // FIXME } - // FIXME } + @Override + public void sendToAllNearExcept( final PlayerEntity p, final double x, final double y, final double z, final double dist, final World w, final AppEngPacket packet ) + { + if( Platform.isClient() ) + { + return; + } + for( final PlayerEntity o : this.getPlayers() ) + { + final ServerPlayerEntity entityplayermp = (ServerPlayerEntity) o; + if( entityplayermp != p && entityplayermp.world == w ) + { + final double dX = x - entityplayermp.getPosX(); + final double dY = y - entityplayermp.getPosY(); + final double dZ = z - entityplayermp.getPosZ(); + if( dX * dX + dY * dY + dZ * dZ < dist * dist ) + { + NetworkHandler.instance().sendTo( packet, entityplayermp ); + } + } + } + } @Override public void spawnEffect( final EffectType type, final World world, final double posX, final double posY, final double posZ, final Object o )