mirror of
https://github.com/danbulant/flying-squid
synced 2026-07-05 19:20:54 +00:00
add api, make login a server plugin
This commit is contained in:
parent
034cd43363
commit
dde4387536
4 changed files with 75 additions and 24 deletions
|
|
@ -18,6 +18,9 @@ Before running or building it is recommended that you configure the server in co
|
||||||
## Documentation
|
## Documentation
|
||||||
Documentation for how to operate and how to customize your server are coming soon!
|
Documentation for how to operate and how to customize your server are coming soon!
|
||||||
|
|
||||||
|
## Dev Documentation
|
||||||
|
For development see [api.md](docs/api.md)
|
||||||
|
|
||||||
## Contributors
|
## Contributors
|
||||||
|
|
||||||
- @roblabla for helping out with the protocols
|
- @roblabla for helping out with the protocols
|
||||||
|
|
|
||||||
50
docs/api.md
Normal file
50
docs/api.md
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
# API
|
||||||
|
|
||||||
|
## MCServer
|
||||||
|
|
||||||
|
### CraftyJS.createMCServer(options)
|
||||||
|
|
||||||
|
Create and return an instance of the class MCServer.
|
||||||
|
|
||||||
|
options is an object containing the settings
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
#### serv.entityMaxId
|
||||||
|
|
||||||
|
Current maximum entity id
|
||||||
|
|
||||||
|
#### serv.playersConnected
|
||||||
|
|
||||||
|
Array of connected players
|
||||||
|
|
||||||
|
#### serv.uuidToPlayer
|
||||||
|
|
||||||
|
Object uuid to players
|
||||||
|
|
||||||
|
#### serv.world
|
||||||
|
|
||||||
|
The map
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
### serv.login(client)
|
||||||
|
|
||||||
|
login `client`
|
||||||
|
|
||||||
|
### serv.createLog()
|
||||||
|
|
||||||
|
create the log file
|
||||||
|
|
||||||
|
### serv.log(message)
|
||||||
|
|
||||||
|
logs a `message`
|
||||||
|
|
||||||
|
### serv.otherClients(client)
|
||||||
|
|
||||||
|
return the other clients than `client`
|
||||||
|
|
||||||
|
### serv.writeOthers(client,packetName, packetFields)
|
||||||
|
|
||||||
|
write to other clients than `client` the packet `packetName` with fields `packetFields`
|
||||||
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
var log = require("../serverPlugins/log").log;
|
|
||||||
|
|
||||||
module.exports=inject;
|
module.exports=inject;
|
||||||
|
|
||||||
function transformUuid(s)
|
function transformUuid(s)
|
||||||
|
|
@ -8,11 +6,11 @@ function transformUuid(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function inject(serv,client)
|
function inject(serv)
|
||||||
{
|
{
|
||||||
serv.login=login;
|
serv.login=login;
|
||||||
|
|
||||||
function addPlayer()
|
function addPlayer(client)
|
||||||
{
|
{
|
||||||
serv.entityMaxId++;
|
serv.entityMaxId++;
|
||||||
client.id = serv.entityMaxId;
|
client.id = serv.entityMaxId;
|
||||||
|
|
@ -21,7 +19,7 @@ function inject(serv,client)
|
||||||
serv.uuidToPlayer[client.uuid] = client;
|
serv.uuidToPlayer[client.uuid] = client;
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendLogin()
|
function sendLogin(client)
|
||||||
{
|
{
|
||||||
// send init data so client will start rendering world
|
// send init data so client will start rendering world
|
||||||
client.write('login', {
|
client.write('login', {
|
||||||
|
|
@ -34,7 +32,7 @@ function inject(serv,client)
|
||||||
maxPlayers: serv._server.maxPlayers
|
maxPlayers: serv._server.maxPlayers
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function sendMap()
|
function sendMap(client)
|
||||||
{
|
{
|
||||||
client.write('map_chunk', {
|
client.write('map_chunk', {
|
||||||
x: 0,
|
x: 0,
|
||||||
|
|
@ -45,7 +43,7 @@ function inject(serv,client)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendInitialPosition()
|
function sendInitialPosition(client)
|
||||||
{
|
{
|
||||||
client.write('position', {
|
client.write('position', {
|
||||||
x: 6,
|
x: 6,
|
||||||
|
|
@ -57,7 +55,7 @@ function inject(serv,client)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateTime()
|
function updateTime(client)
|
||||||
{
|
{
|
||||||
client.write('update_time', {
|
client.write('update_time', {
|
||||||
age: [0, 0],
|
age: [0, 0],
|
||||||
|
|
@ -65,7 +63,7 @@ function inject(serv,client)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateGameState()
|
function updateGameState(client)
|
||||||
{
|
{
|
||||||
client.write('game_state_change', {
|
client.write('game_state_change', {
|
||||||
reason: 3,
|
reason: 3,
|
||||||
|
|
@ -73,7 +71,7 @@ function inject(serv,client)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function announceLogin()
|
function announceLogin(client)
|
||||||
{
|
{
|
||||||
client.on('chat', function (data) {
|
client.on('chat', function (data) {
|
||||||
var message = '<' + client.username + '>' + ' ' + data.message;
|
var message = '<' + client.username + '>' + ' ' + data.message;
|
||||||
|
|
@ -83,7 +81,7 @@ function inject(serv,client)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function fillTabList()
|
function fillTabList(client)
|
||||||
{
|
{
|
||||||
serv.otherClients(client).forEach(function (otherClient) {
|
serv.otherClients(client).forEach(function (otherClient) {
|
||||||
otherClient.write('player_info', {
|
otherClient.write('player_info', {
|
||||||
|
|
@ -117,7 +115,7 @@ function inject(serv,client)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function spawn()
|
function spawn(client)
|
||||||
{
|
{
|
||||||
serv.otherClients(client).forEach(function (otherClient) {
|
serv.otherClients(client).forEach(function (otherClient) {
|
||||||
var pos = serv.uuidToPlayer[otherClient.uuid].position;
|
var pos = serv.uuidToPlayer[otherClient.uuid].position;
|
||||||
|
|
@ -146,7 +144,7 @@ function inject(serv,client)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function announceJoin()
|
function announceJoin(client)
|
||||||
{
|
{
|
||||||
broadcast(client.username + ' joined the game.', "yellow");
|
broadcast(client.username + ' joined the game.', "yellow");
|
||||||
var addr = client.socket.remoteAddress + ':' + client.socket.remotePort;
|
var addr = client.socket.remoteAddress + ':' + client.socket.remotePort;
|
||||||
|
|
@ -190,27 +188,27 @@ function inject(serv,client)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function login()
|
function login(client)
|
||||||
{
|
{
|
||||||
if (serv.uuidToPlayer[client.uuid]) {
|
if (serv.uuidToPlayer[client.uuid]) {
|
||||||
client.end("You are already connected");
|
client.end("You are already connected");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
addPlayer();
|
addPlayer(client);
|
||||||
sendLogin();
|
sendLogin(client);
|
||||||
sendMap();
|
sendMap(client);
|
||||||
sendInitialPosition();
|
sendInitialPosition(client);
|
||||||
|
|
||||||
console.log("[INFO]: position written, player spawning...");
|
console.log("[INFO]: position written, player spawning...");
|
||||||
serv.log("[INFO]: position written, player spawning...");
|
serv.log("[INFO]: position written, player spawning...");
|
||||||
|
|
||||||
updateTime();
|
updateTime(client);
|
||||||
updateGameState();
|
updateGameState(client);
|
||||||
announceLogin();
|
announceLogin(client);
|
||||||
fillTabList();
|
fillTabList(client);
|
||||||
spawn();
|
spawn(client);
|
||||||
|
|
||||||
announceJoin();
|
announceJoin(client);
|
||||||
|
|
||||||
|
|
||||||
var addr = client.socket.remoteAddress + ':' + client.socket.remotePort;
|
var addr = client.socket.remoteAddress + ':' + client.socket.remotePort;
|
||||||
Loading…
Reference in a new issue