Fix 1.7 potion etc support
This commit is contained in:
parent
1e2eda94db
commit
6e69d476ef
@ -1,6 +1,7 @@
|
|||||||
package net.md_5.bungee;
|
package net.md_5.bungee;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.md_5.bungee.protocol.DefinedPacket;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to rewrite integers within packets.
|
* Class to rewrite integers within packets.
|
||||||
@ -12,158 +13,59 @@ public class EntityMap
|
|||||||
|
|
||||||
static
|
static
|
||||||
{
|
{
|
||||||
entityIds[0x05] = new int[]
|
entityIds[0x0A] = new int[]
|
||||||
{
|
{
|
||||||
1
|
0
|
||||||
};
|
};
|
||||||
entityIds[0x07] = new int[]
|
entityIds[0x0D] = new int[]
|
||||||
{
|
{
|
||||||
1, 5
|
4
|
||||||
};
|
|
||||||
entityIds[0x11] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
};
|
||||||
entityIds[0x12] = new int[]
|
entityIds[0x12] = new int[]
|
||||||
{
|
{
|
||||||
1
|
0
|
||||||
};
|
};
|
||||||
entityIds[0x13] = new int[]
|
entityIds[0x1B] = new int[]
|
||||||
{
|
{
|
||||||
1
|
0, 4
|
||||||
};
|
|
||||||
entityIds[0x14] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
|
||||||
entityIds[0x16] = new int[]
|
|
||||||
{
|
|
||||||
1, 5
|
|
||||||
};
|
|
||||||
entityIds[0x17] = new int[]
|
|
||||||
{
|
|
||||||
1 //, 20
|
|
||||||
};
|
|
||||||
entityIds[0x18] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
|
||||||
entityIds[0x19] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
|
||||||
entityIds[0x1A] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
};
|
||||||
entityIds[0x1C] = new int[]
|
entityIds[0x1C] = new int[]
|
||||||
{
|
{
|
||||||
1
|
0 // TODO: Meta
|
||||||
|
};
|
||||||
|
entityIds[0x1D] = new int[]
|
||||||
|
{
|
||||||
|
0
|
||||||
};
|
};
|
||||||
entityIds[0x1E] = new int[]
|
entityIds[0x1E] = new int[]
|
||||||
{
|
{
|
||||||
1
|
0
|
||||||
};
|
|
||||||
entityIds[0x1F] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
};
|
||||||
entityIds[0x20] = new int[]
|
entityIds[0x20] = new int[]
|
||||||
{
|
{
|
||||||
1
|
0
|
||||||
};
|
|
||||||
entityIds[0x21] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
|
||||||
entityIds[0x22] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
|
||||||
entityIds[0x23] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
|
||||||
entityIds[0x26] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
|
||||||
entityIds[0x27] = new int[]
|
|
||||||
{
|
|
||||||
1, 5
|
|
||||||
};
|
|
||||||
entityIds[0x28] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
|
||||||
entityIds[0x29] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
|
||||||
entityIds[0x2A] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
|
||||||
entityIds[0x2C] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
|
||||||
entityIds[0x37] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
|
||||||
|
|
||||||
entityIds[0x47] = new int[]
|
|
||||||
{
|
|
||||||
1
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void rewrite(ByteBuf packet, int oldId, int newId)
|
public static void rewrite(ByteBuf packet, int oldId, int newId)
|
||||||
{
|
{
|
||||||
int packetId = packet.getUnsignedByte( 0 );
|
int readerIndex = packet.readerIndex();
|
||||||
if ( packetId == 0x1D )
|
int packetId = DefinedPacket.readVarInt( packet );
|
||||||
{ // bulk entity
|
int packetIdLength = packet.readerIndex() - readerIndex;
|
||||||
for ( int pos = 2; pos < packet.readableBytes(); pos += 4 )
|
|
||||||
{
|
|
||||||
int readId = packet.getInt( pos );
|
|
||||||
if ( readId == oldId )
|
|
||||||
{
|
|
||||||
packet.setInt( pos, newId );
|
|
||||||
} else if ( readId == newId )
|
|
||||||
{
|
|
||||||
packet.setInt( pos, oldId );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
int[] idArray = entityIds[packetId];
|
int[] idArray = entityIds[packetId];
|
||||||
|
|
||||||
if ( idArray != null )
|
if ( idArray != null )
|
||||||
{
|
{
|
||||||
for ( int pos : idArray )
|
for ( int pos : idArray )
|
||||||
{
|
{
|
||||||
int readId = packet.getInt( pos );
|
int readId = packet.getInt( packetIdLength + pos );
|
||||||
if ( readId == oldId )
|
if ( readId == oldId )
|
||||||
{
|
{
|
||||||
packet.setInt( pos, newId );
|
packet.setInt( packetIdLength + pos, newId );
|
||||||
} else if ( readId == newId )
|
|
||||||
{
|
|
||||||
packet.setInt( pos, oldId );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( packetId == 0x17 )
|
|
||||||
{
|
|
||||||
int type = packet.getUnsignedByte( 5 );
|
|
||||||
if ( type == 60 || type == 90 )
|
|
||||||
{
|
|
||||||
int index20 = packet.getInt( 20 );
|
|
||||||
if ( packet.readableBytes() > 24 && index20 == oldId )
|
|
||||||
{
|
|
||||||
packet.setInt( 20, newId );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
packet.readerIndex( readerIndex );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ public class DownstreamBridge extends PacketHandler
|
|||||||
{
|
{
|
||||||
if ( !server.isObsolete() )
|
if ( !server.isObsolete() )
|
||||||
{
|
{
|
||||||
// EntityMap.rewrite( packet.buf, con.getServerEntityId(), con.getClientEntityId() );
|
EntityMap.rewrite( packet.buf, con.getServerEntityId(), con.getClientEntityId() );
|
||||||
con.sendPacket( packet );
|
con.sendPacket( packet );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user