MinimalResourceSkeleton
Minimal Resource Skeleton
This page provides the smallest functional scripted resource required to:
- Handle a player joining the server
- Spawn the player at a fixed position
- Fade in the camera
- Log basic server-side activity
This is intended as a starting point for custom game modes.
Purpose
When building a custom server mode, you must:
- Create a player element
- Spawn the player
- Fade in the camera
- Handle join logic
Without this logic, players may connect but remain in a black screen or uninitialized state.
This example demonstrates the minimal structure needed to make a playable resource.
Example Script
Place the following code inside your resource’s main JavaScript file (for example: main.js).
let spawn_pos = [39.59, 128.88, 15.63]; // Example spawn position
function respawnPlayer(client) {
console.log(`Respawning player ${client.name}`);
spawnPlayer(client, spawn_pos);
console.log(`Player ${client.name} respawned.`);
}
addEventHandler("OnPlayerJoined", (event, client) => {
console.log(`Player ${client.name} joined the server.`);
if (client.player) {
destroyElement(client.player);
console.log(`Destroyed player element for ${client.name}`);
}
respawnPlayer(client);
fadeCamera(client, true);
});
How It Works
Spawn Position
spawn_pos defines the coordinates where players will appear:
[x, y, z]
Replace the values with valid coordinates for your game map.
OnPlayerJoined Event
OnPlayerJoined is triggered when a client successfully connects.
The handler:
- Logs the join event.
- Destroys any existing player element (safety cleanup).
- Calls
respawnPlayer(). - Fades the camera in.
destroyElement
If a player element already exists for the client, it is destroyed before respawning. This prevents duplicate player entities.
spawnPlayer
spawnPlayer(client, positionArray) creates and places the player at the given coordinates.
fadeCamera
fadeCamera(client, true) fades the camera in from black.
If omitted, the player may remain on a black screen.
Required Resource Structure
Minimal folder layout:
resources/
└── minimal/
├── resource.xml
└── main.js
Example resource.xml:
<resource>
<script src="main.js" />
</resource>
Ensure the resource is added to server.xml:
<resource src="minimal" />
What This Does Not Include
This minimal skeleton does NOT include:
- Weapons
- Teams
- Vehicles
- Custom game logic
- Respawn timers
- Death handling
- UI elements
It only guarantees that:
- A player joins
- A player spawns
- The camera fades in
- The server logs activity
Next Steps
From this baseline, you can extend the resource with:
- Spawn selection
- Death events
- Custom game rules
- Vehicle spawning
- Database-backed accounts (via modules)
- Teams and scoring systems
For additional scripting references, see: