Difference between revisions of "Realcraft:Main Page"

From wiki.vg
Jump to navigation Jump to search
m (Use {{MIT}} template)
 
(30 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Realcraft]] is a custom Minecraft Beta server coded by [[User:Jailout2000|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.
+
{{Box|
 +
BORDER = #9999FF|
 +
BACKGROUND = #99CCFF|
 +
WIDTH = 100%|
 +
ICON = |
 +
HEADING = '''Introduction''' |
 +
CONTENT = 
 +
[[Image:Realcraft-Testing-Ranks-And-Custom-Labels.png|thumb|border|right|top|400px|This was on January 7th, 2012 while the author was testing user ranks, colors, and custom user labels.]]
 +
'''Realcraft''' is a custom (third-party) Minecraft server written in [https://en.wikipedia.org/wiki/REALbasic REALbasic] by [[User:Jailout2000|Jailout2000]]. It implements the [http://www.minecraft.net/ Minecraft] 1.3.2 server protocol. The server software runs headless without a GUI, it is a console/terminal-based application.
  
== License ==
+
The software can be found at its [https://github.com/carlbennett/realcraft GitHub repository]. It is licensed under the permissive {{MIT}} license, no warranty is given of any kind, the source code was originally private/closed but was made public/opened years later after the project was abandoned.
  
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.
+
The software is written on and tested with Microsoft Windows and Red Hat-based Linux distributions, there were no plans to support running it on Mac OS X.
  
== Project Status ==
+
The author may be contacted through GitHub if you have any inquiries about the software.
  
Currently the project is in '''temporary inactive''' development.
+
}}
  
=== Plans ===
+
{| width="100%"
 +
|- style="vertical-align: top;"
 +
| width="70%" | <!-- Section 1  -->
 +
{| width="100%"
 +
|- style="vertical-align: top;"
 +
| <!-- Section 1-1 -->
 +
{{Box|
 +
BORDER = #669933|
 +
BACKGROUND = #99CC33|
 +
WIDTH = 100%|
 +
ICON = |
 +
HEADING = '''User Information''' |
 +
CONTENT = *[[Realcraft:License|License / Disclaimer]]
 +
*[[Realcraft:Configuration|Configuration]]
 +
*[[Realcraft:Features#Implemented|Features (Implemented)]]
 +
}}
  
* 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).
+
{{Box|
* Provide a download for the server so others may use it.
+
BORDER = #993300|
** This will mean building the server for cross-platform support. Currently it is Windows only.
+
BACKGROUND = #CC0000|
* Player authentication with Minecraft.net.
+
WIDTH = 100%|
* MySQL database support.
+
ICON = |
* Advertise the server to others, so that it can be stress tested.
+
HEADING = '''Developer Information'''|
 +
CONTENT = *[[Realcraft:Features#Planned|Features (Planned/To-Do)]]
 +
*[[Realcraft:Development_Status|Project Status Updates]]
 +
}}
  
=== 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
 
 
=== Source Code ===
 
 
The project source is '''closed/private''', and '''available upon request'''. If you would like to see the source, message [[User:Jailout2000|Jailout2000]]. He would have released it to the general public, but the problem with that is REALbasic isn't equipped to handle separation of files for things like github or Google Code; the closest thing it has is separated files in XML format (or as it calls it, <span title="RealBasic Version Control Project">RBVCP</span>), not plaintext.
 
 
== Development Status ==
 
 
Development will begin again soon. -- [[User:Jailout2000|<span style="color: #0080C0; font-weight: bold;">Jailout2000</span>]] 08:40, 30 December 2011 (MST)
 
 
Notchian clients no longer crash. Lots of internal code has been reworked with the help of [[User:Ribose|Ribose]]. Fixed spawning bugs, it now works correctly on the first time. Fixed gltches with walking/jumping/arm-throwing; you are now free to walk around, just don't hit any blocks (left or right click) at the moment ;). Entities were worked on a bit, and understood a bit more; players should now see other players (but they cannot move right now, they can arm swing though!). Chat is now working properly, and is logged under a different log file. Other than all of this, the server is fairly stable, I can't crash it as of this moment, but that's not to say it isn't crashable, I'm sure somewhere there's a problem. -- [[User:Jailout2000|<span style="color: #0080C0; font-weight: bold;">Jailout2000</span>]] 22:27, 24 October 2011 (MST)
 
 
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. -- [[User:Jailout2000|<span style="color: #0080C0; font-weight: bold;">Jailout2000</span>]] 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="wikitable"
 
|- class="row0"
 
! class="col0" width="5%" | Class
 
! class="col1" width="50%" | Description
 
! class="col2" width="45" | Objectives
 
|- class="row1"
 
! class="col0 centeralign" | Entity
 
| class="col1" | 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.
 
| class="col2" | Act as a base for each entity type.
 
|- class="row2"
 
! class="col0 centeralign" | Item
 
| class="col1" | An entity of type Item. It has the properties: ID, Damage/Uses, and Count.
 
| class="col2" | Act as a representation of any item in the world.
 
|- class="row3"
 
! class="col0 centeralign" | Mob
 
| class="col1" | An entity of type Mob. It has the properties: Health, Stance, On-Ground, and Type.
 
| class="col2" | Act as a representation of any aggressive or passive mob in the world (such as a creeper or spider).
 
|- class="row4"
 
! class="col0 centeralign" | Player
 
| class="col1" | 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.
 
| class="col2" | Act as a representation of any player in the world (an actual person).
 
|- class="row5"
 
! class="col0 centeralign" | Projectile
 
| class="col1" | 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.
 
| class="col2" | Act as a representation of any projectile in the world (such as an arrow).
 
|- class="row6"
 
! class="col0 centeralign" | Vehicle
 
| class="col1" | 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.
 
| class="col2" | Act as a representation of any vehicle in the world (such as a Minecart).
 
|- class="row7"
 
! class="col0 centeralign" | GameServer
 
| class="col1" | A class to wait for connections from outside the machine. All connections are handed off to a GameSocket object.
 
| class="col2" | Act as the front-end of the server's connections.
 
|- class="row8"
 
! class="col0 centeralign" | GameSocket
 
| class="col1" | A class to process all network data events such as data received or data sent.
 
| class="col2" | 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.
 
|- class="row9"
 
! class="col0 centeralign" | World
 
| class="col1" | 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.
 
| class="col2" | Allow the server to host multiple worlds by having identifiable world objects.
 
|- class="row10"
 
! class="col0 centeralign" | WorldChunk
 
| class="col1" | 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.
 
| class="col2" | Allow the world to have a set of chunks to send to a Minecraft client.
 
 
|}
 
|}
  
=== Logging ===
+
| width="50%" | <!-- Section 2  -->
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.
+
{| width="100%"
 
+
|- style="vertical-align: top;"
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\&lt;user&gt;\AppData\Roaming).
+
| <!-- Section 2-1 -->
 
+
{{RealcraftMenu}}
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]&lt;space&gt;&lt;payload&gt;''' where HH:MM:SS is the timestamp in 24-hour format, &lt;space&gt; is a 0x20 (a spacebar), and &lt;payload&gt; 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).
 
 
 
  
----
+
[[Category:Custom Minecraft Servers]]
[[Server_List|Return to Custom Minecraft Beta servers]]
 
[[Category:Minecraft Beta Servers]]
 

Latest revision as of 23:53, 19 May 2022

Introduction
This was on January 7th, 2012 while the author was testing user ranks, colors, and custom user labels.

Realcraft is a custom (third-party) Minecraft server written in REALbasic by Jailout2000. It implements the Minecraft 1.3.2 server protocol. The server software runs headless without a GUI, it is a console/terminal-based application.

The software can be found at its GitHub repository. It is licensed under the permissive MIT license, no warranty is given of any kind, the source code was originally private/closed but was made public/opened years later after the project was abandoned.

The software is written on and tested with Microsoft Windows and Red Hat-based Linux distributions, there were no plans to support running it on Mac OS X.

The author may be contacted through GitHub if you have any inquiries about the software.

User Information
Developer Information
Quick Menu