User Tools

Site Tools


minecraft:mod:bta-sides

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.

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.

In the case of serverside mods that don't have a cooperating modded clientside ("server plugins"), you need to be wary of predictive replication done by the MP client. When I was writing the cursor code for bunyedit, cancelling block breaks on the server resulted in erronously ghosted blocks on the client. You need to alert the client that their prediction was false, in this case by immediately sending back Packet53BlockChange on the ghosted block.

minecraft/mod/bta-sides.txt · Last modified: 2024/02/17 15:15 by raccoon

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki