This is an old revision of the document!
Beta 1.7.3 doesn't have the same uniform sidedness that modern Minecraft does. It doesn't run a dummy local server in singleplayer. This can be jarring if you've become used to writing exclusively serverside code with the expectation that it will also work in singleplayer for free.
BTA might change netcode in the future, but as of 7.1-pre1a, you essentially have 3 sides to consider:
side | PlayerController | EntityPlayer | World |
---|---|---|---|
SP client | client.player.controller.PlayerControllerSP extends client.player.controller.PlayerController | client.entity.player.EntityPlayerSP extends core.entity.player.EntityPlayer | core.world.World |
MP client | client.player.controller.PlayerControllerMP extends client.player.controller.PlayerController | client.entity.player.EntityClientPlayerMP extends client.entity.player.EntityPlayerSP | client.world.WorldClient extends core.world.World |
MP server | server.world.PlayerController | server.entity.player.EntityPlayerMP extends core.entity.player.EntityPlayer | server.world.WorldServer extends core.world.World |
Additionally, MP client tracks other players as client.entity.player.EntityOtherPlayerMP extends core.entity.player.EntityPlayer
, and multi-dimensioned servers can encounter server.world.WorldServerMulti extends server.world.WorldServer
.
A big thing to consider is some of your code intended for SP might run in an MP client context. This can end up desyncing your locally replicated state. Make sure this case never occurs or include instanceof
guards.