Realcraft:Main Page
Realcraft is a custom Minecraft Beta server coded by Jailout2000 around the Beta 1.8.1 protocol. It is coded in REALbasic, a crappy language but very easy to use and learn. Since it's coded in REALbasic, this means that it does not have access to kernel threads, and therefore is not a multi-threaded server. The server runs out of the console; it does not have a GUI to which you can control it.
Contents
License
Realcraft is written as closed source, therefore it is not available to the general public. If you really wish to see the source, message Jailout2000.
Project Status
Currently the project is in active development.
Plans
- Eventually use an external library for generation of worlds. At the moment, generation of worlds is done internally, and is not very impressive (just flat worlds with some scenery).
- Provide a download for the server so others may use it.
- This will mean building the server for cross-platform support. Currently it is Windows only.
- Player authentication with Minecraft.net.
- MySQL database support.
- Advertise the server to others, so that it can be stress tested.
Live Server
This server may or may not be online; it's only online when Jailout2000 is working on the server.
- mc.clan-warp.net:25566
Development Status
Got chunks to load correctly. Need to test if entities can be seen, or if entity animation is sent to other notchian clients. Currently a player is spawned at y=2, but it should be y=67, I need to look into how to fix this. -- Jailout2000 02:51, 24 October 2011 (MST)
Technical Details
Class Hierarchy
- Entity
- Item
- Mob
- Player
- Projectile
- Vehicle
- ServerSocket
- GameServer
- TCPSocket
- GameSocket
- World
- WorldChunk
Class Objectives
Class | Description | Objectives |
---|---|---|
Entity | Entity refers to any item, mob, player, projectile, or vehicle in the world. Every entity has an ID (known as an EID or Entity ID) which is a unique 32-bit integer used to identify a specific entity. All entities have an XYZ double-precision floating-point (64-bit) integer coordinate pair along with single-precision floating-point (32-bit) integer pitch and yaw coordinates. Y points upwards, X points South, and Z points West. | Act as a base for each entity type. |
Item | An entity of type Item. It has the properties: ID, Damage/Uses, and Count. | Act as a representation of any item in the world. |
Mob | An entity of type Mob. It has the properties: Health, Stance, On-Ground, and Type. | Act as a representation of any aggressive or passive mob in the world (such as a creeper or spider). |
Player | An entity of type Player, a subclass of Mob. It has the properties: Experience, Food, Food Saturation, and Name. The inherited property Type is always set to zero. | Act as a representation of any player in the world (an actual person). |
Projectile | An entity of type Projectile. It has the properties: Type, Velocity X, Velocity Y, and Velocity Z. The Type IDs are shared between vehicles as well. | Act as a representation of any projectile in the world (such as an arrow). |
Vehicle | An entity of type Vehicle. It has the property: Passenger. The Type IDs are shared between projectiles as well. The Passenger is a reference to a valid Mob object. | Act as a representation of any vehicle in the world (such as a Minecart). |
GameServer | A class to wait for connections from outside the machine. All connections are handed off to a GameSocket object. | Act as the front-end of the server's connections. |
GameSocket | A class to process all network data events such as data received or data sent. | Read and parse all Minecraft game data, and possibly respond with data for the Minecraft client. Optionally, it can also disconnect the client when and where it sees fit. |
World | Holds data for each world on the server, including the name, who's in what world, the chunks related to the world, and much more. | Allow the server to host multiple worlds by having identifiable world objects. |
WorldChunk | Holds chunk data for a world on the server. The world seed plays a big role in how a chunk formulates its block data. The chunk is responsible for generating itself for the world to use. | Allow the world to have a set of chunks to send to a Minecraft client. |
Logging
The logger is called whenever there is text displayed to the command line. Whatever you see on screen is also sent to a file. The only exception to this rule is when Realcraft is displaying a percentile of an action being done (i.e. Generating world... 50%), in this case the file does not get updated until the full line is displayed (Generating world... done.) or when there's an error while doing the action.
All logs are stored in the folder called Logs under the folder Realcraft inside the application data folder of your system. On Windows Vista and newer, this is your %APPDATA% folder (C:\Users\<user>\AppData\Roaming).
The filename is always in the format YYYY-MM-DD.log where YYYY is the year, MM is the month, and DD is the day of the month.
Log data is always appended to the current log file, it never replaces a file's previous data. Log data is outputted as plain text. Each line represents a new log entry, and all log entries have a format of [HH:MM:SS]<space><payload> where HH:MM:SS is the timestamp in 24-hour format, <space> is a 0x20 (a spacebar), and <payload> is the information. All new lines are ended as per the system the data is logged to. Linux and other minor systems end all lines in 0x0D (\n), Windows ends all lines in 0x0D and 0x0A (\r\n) respectively, and Mac ends all lines in 0x0A (\r).