Plz I have minecraft pc servrs and I need that server program maybe I can help I'm very talented with programs with c# c plus plus visual basics and I'm reading a book on how to program with java. I have a dell 64-bit os windows 7 with 8 gb of ram nd 500 gb of hard drive. I'm not just saying this to get the program I really want to help.I'm not new to this stuffMaking a mod more items in creative and 3x3 craftingWith ios and droid application
Just an update, we finally finished most of the behind the scenes remodel of the server, which includes efficiency as a top priority. Now we are going to begin the long trek of programming all the packets, both client and server type, to the server (that's about 56 packets!). For those who plan on making server mods, every packet class is accessible by outside classes, meaning you can add anything you want to the server in addition to what already goes on! (Redstone using wool mod, anyone?)
What about stuff that only the client handle's. I know the sever in MCPE does handle most function's, but what if someone want's a certain texture pack for his/her mod? Such as that cool looking redstonewool!
Amazing, just amazing. I have one question though. How would you connect to the server without jailbreak?
If your at home and your computer is on the same network as your device, you could just run the server and it would show up on your server list like usual. If MCPE in the future has online multiplayer, then you would be able to connect to someone else's server online without a jailbreak, otherwise, only online servers require a jailbreak for now.
Rollback Post to RevisionRollBack
Did you know I make music? Just click my logo to listen to my awesome Electronic beats!
Honestly, it isn't much of a challenge to figure out the packets. After you have packet capture, you can find what type of packet certain 84 (data) packets are. I've noticed that usually the 10th or 14th byte in an 84 packet is the secondary packet ID, basically where ever the header bytes ends. I believe the header data is written in "RakNetInstance::runEvents(NetEventCallback *)" but I'm not positive, judging that it has 13 cases and that it has the "MCCPP;Demo;" text, I think it might handle login, containerAck (acknowledge) and server/client connection requests.
Let's say I want to find out what happens when I place a block, I would place abundant amounts of blocks on the server while capturing and look for packets that would fit the time period of placing the blocks. After a little bit of snooping I found that the client (me) sent a packet with a secondary ID of 0x9c, and the server (Intyre) always sent back a packet with a secondary ID of 0x9d.
In the Android file there is a method "MinecraftPackets::createPacket(int)" and if you convert the secondary ID to decimal and find the case number that matches the decimal, you will have found what type of packet it is in most cases.
At this point in MCPEServer we would create a new class, name it what it is, then look at the packets write method, so "RequestChunkPacket:write();" and I'm going to ignore the ChunkDataPacket for now due to lack of information (since I don't know what the request packet does yet).
First off, all "write packet" methods will have "RakNet::BitStream::WriteBits()" because that is what writes the RakNet header, so the Packet class will require the header data processed by our experimental "RakNet" class.
Next up it writes two int's, 9 and 4, so what I would do is read the Int's out of the packets in the capture and look for a pattern. Often I see the numbers 9 and 4 vary but never go higher than 0F (or 15). Since this packet appears when the player places a block, I'm going to take a guess that the two int's are probably column locations, only because the packet is small and wouldn't fit enough data for a chunk. Now I would incorporate that pattern in the read and write methods of the new Java class.
Then the game writes bits, and after looking at the file I've noticed it writes 256 bytes after the int's if there is no data (all 0's) and it writes more bits if there is data. After experience of looking through chunk.dat files previously in the past, the data looks strangely similar to data sectors in a chunk (i.e. 10 04 which would be leaves and wood ID's).
Now to compare my hypothesis to the "RequestChunkPacket::read()" method for contrast.
The read method only reads two int's and doesn't appear to mention anything about bytes, so I'm going to guess that the bytes pretty much unnecessary and I can probably get away with sending 256 00's, so I will modify the write method to do just that. Then if I am able to test this on the server I would, otherwise I would re-create the other vital packets similar to this and test this after I finish those.
Anyway, do you see the method here that we use to identify packets? You're not blindly reading packets at all, we look for patterns in both the Android file and the packet captures to identify packets, then we look at the read and write methods of the packets to determine what to send and look for. It's much easier than it sounds or even looks in text.
Sounds really promising
Any idea of how long it will take for you to finish this big project? (Not trying to rush, I can live without mods just fine since MCPE is currently awesome in its 0.4.0 state )
New updates:
-- The server now lets users join and stay in servers without being disconnected.
-- The server is now being compiled in Java 1.5 now so people can run the server via command line (a.k.a. terminal) on their Android or iOS* device (yes iOS can use Java, but only Java 1.5!) for whatever reasons you may want to. You can still run the same Java file you'd use for iOS and Android on your computer, either with or without the GUI (use -nogui for command line use).
* - I can not promise it will work on older devices with less RAM, the server may hog up to much RAM for old devices like the iPad 1 (which is sadly all I own), iPod 4g, iPhone 3Gs and some Android models.
What's left to do before creative release:
-- Player/Entity movement packets (Such as players moving or shooting arrows)
-- Chunk data packets (they keep track of every block you place)
-- KeepAlive/AckContainer packet (they make sure the client doesn't get disconnected prematurely)
Hey There
MCPE portforward
Pretty easy, but I have to program the server running machine or what the heck ever, lol
Btw, nice job u guys I am willing to test it out for you any time
No yet
Click on an image to view the section rules!
If your at home and your computer is on the same network as your device, you could just run the server and it would show up on your server list like usual. If MCPE in the future has online multiplayer, then you would be able to connect to someone else's server online without a jailbreak, otherwise, only online servers require a jailbreak for now.
Honestly, it isn't much of a challenge to figure out the packets. After you have packet capture, you can find what type of packet certain 84 (data) packets are. I've noticed that usually the 10th or 14th byte in an 84 packet is the secondary packet ID, basically where ever the header bytes ends. I believe the header data is written in "RakNetInstance::runEvents(NetEventCallback *)" but I'm not positive, judging that it has 13 cases and that it has the "MCCPP;Demo;" text, I think it might handle login, containerAck (acknowledge) and server/client connection requests.
Let's say I want to find out what happens when I place a block, I would place abundant amounts of blocks on the server while capturing and look for packets that would fit the time period of placing the blocks. After a little bit of snooping I found that the client (me) sent a packet with a secondary ID of 0x9c, and the server (Intyre) always sent back a packet with a secondary ID of 0x9d.
In the Android file there is a method "MinecraftPackets::createPacket(int)" and if you convert the secondary ID to decimal and find the case number that matches the decimal, you will have found what type of packet it is in most cases.
At this point in MCPEServer we would create a new class, name it what it is, then look at the packets write method, so "RequestChunkPacket:write();" and I'm going to ignore the ChunkDataPacket for now due to lack of information (since I don't know what the request packet does yet).
First off, all "write packet" methods will have "RakNet::BitStream::WriteBits()" because that is what writes the RakNet header, so the Packet class will require the header data processed by our experimental "RakNet" class.
Next up it writes two int's, 9 and 4, so what I would do is read the Int's out of the packets in the capture and look for a pattern. Often I see the numbers 9 and 4 vary but never go higher than 0F (or 15). Since this packet appears when the player places a block, I'm going to take a guess that the two int's are probably column locations, only because the packet is small and wouldn't fit enough data for a chunk. Now I would incorporate that pattern in the read and write methods of the new Java class.
Then the game writes bits, and after looking at the file I've noticed it writes 256 bytes after the int's if there is no data (all 0's) and it writes more bits if there is data. After experience of looking through chunk.dat files previously in the past, the data looks strangely similar to data sectors in a chunk (i.e. 10 04 which would be leaves and wood ID's).
Now to compare my hypothesis to the "RequestChunkPacket::read()" method for contrast.
The read method only reads two int's and doesn't appear to mention anything about bytes, so I'm going to guess that the bytes pretty much unnecessary and I can probably get away with sending 256 00's, so I will modify the write method to do just that. Then if I am able to test this on the server I would, otherwise I would re-create the other vital packets similar to this and test this after I finish those.
Anyway, do you see the method here that we use to identify packets? You're not blindly reading packets at all, we look for patterns in both the Android file and the packet captures to identify packets, then we look at the read and write methods of the packets to determine what to send and look for. It's much easier than it sounds or even looks in text.
Any idea of how long it will take for you to finish this big project? (Not trying to rush, I can live without mods just fine since MCPE is currently awesome in its 0.4.0 state )
-- The server now lets users join and stay in servers without being disconnected.
-- The server is now being compiled in Java 1.5 now so people can run the server via command line (a.k.a. terminal) on their Android or iOS* device (yes iOS can use Java, but only Java 1.5!) for whatever reasons you may want to. You can still run the same Java file you'd use for iOS and Android on your computer, either with or without the GUI (use -nogui for command line use).
* - I can not promise it will work on older devices with less RAM, the server may hog up to much RAM for old devices like the iPad 1 (which is sadly all I own), iPod 4g, iPhone 3Gs and some Android models.
What's left to do before creative release:
-- Player/Entity movement packets (Such as players moving or shooting arrows)
-- Chunk data packets (they keep track of every block you place)
-- KeepAlive/AckContainer packet (they make sure the client doesn't get disconnected prematurely)