mirror of
				https://github.com/SquidDev-CC/CC-Tweaked
				synced 2025-10-31 05:33:00 +00:00 
			
		
		
		
	Check for duplicate ids when registering channels
Should prevent #1130 occurring again. Possibly worth submitting a PR to Forge for this too.
This commit is contained in:
		| @@ -9,6 +9,8 @@ import dan200.computercraft.ComputerCraft; | |||||||
| import dan200.computercraft.api.ComputerCraftAPI; | import dan200.computercraft.api.ComputerCraftAPI; | ||||||
| import dan200.computercraft.shared.network.client.*; | import dan200.computercraft.shared.network.client.*; | ||||||
| import dan200.computercraft.shared.network.server.*; | import dan200.computercraft.shared.network.server.*; | ||||||
|  | import it.unimi.dsi.fastutil.ints.IntOpenHashSet; | ||||||
|  | import it.unimi.dsi.fastutil.ints.IntSet; | ||||||
| import net.minecraft.entity.player.PlayerEntity; | import net.minecraft.entity.player.PlayerEntity; | ||||||
| import net.minecraft.entity.player.ServerPlayerEntity; | import net.minecraft.entity.player.ServerPlayerEntity; | ||||||
| import net.minecraft.network.PacketBuffer; | import net.minecraft.network.PacketBuffer; | ||||||
| @@ -26,7 +28,8 @@ import java.util.function.Function; | |||||||
| 
 | 
 | ||||||
| public final class NetworkHandler | public final class NetworkHandler | ||||||
| { | { | ||||||
|     public static SimpleChannel network; |     private static SimpleChannel network; | ||||||
|  |     private static final IntSet usedIds = new IntOpenHashSet(); | ||||||
| 
 | 
 | ||||||
|     private NetworkHandler() |     private NetworkHandler() | ||||||
|     { |     { | ||||||
| @@ -100,6 +103,7 @@ public final class NetworkHandler | |||||||
|      */ |      */ | ||||||
|     private static <T extends NetworkMessage> void registerMainThread( int id, NetworkDirection direction, Class<T> type, Function<PacketBuffer, T> decoder ) |     private static <T extends NetworkMessage> void registerMainThread( int id, NetworkDirection direction, Class<T> type, Function<PacketBuffer, T> decoder ) | ||||||
|     { |     { | ||||||
|  |         if( !usedIds.add( id ) ) throw new IllegalStateException( "Duplicate message kind for for id " + id ); | ||||||
|         network.messageBuilder( type, id, direction ) |         network.messageBuilder( type, id, direction ) | ||||||
|             .encoder( NetworkMessage::toBytes ) |             .encoder( NetworkMessage::toBytes ) | ||||||
|             .decoder( decoder ) |             .decoder( decoder ) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jonathan Coates
					Jonathan Coates