This repository contains the source code for both the Minecraft and Roblox sides of the Crossplay Project.
The Minecraft side features the CrossplayPackage plugin; a package containing 5 of our smaller plugins.
The plugin hosts a Spark webserver on port 4567
(configurable).
To compile the plugin from source, follow these steps:
Install IntelliJ IDEA: If you haven't already, download and install IntelliJ IDEA.
Download the CrossplayPackage Directory: Obtain the source code directory for CrossplayPackage.
Open as IntelliJ Project:
Build the Plugin:
Locate the Compiled JAR:
.jar
file will be located in the out/artifacts
folder within your IntelliJ project directory.curl http://<server-ip>:4567/blocks?chunkX=0&chunkZ=0
curl http://<server-ip>:4567/blocks?chunkX=-1,1&chunkZ=-1,1
curl http://<server-ip>:4567/blocks?cord1=15,0,15&cord2=-15,25,-15
[
{"t":"OAK_LOG","x":7,"y":0,"z":2,"s":"axis\u003dy"},
{"t":"GRASS_BLOCK","x":7,"y":-1,"z":3,"s":"snowy\u003dfalse","b":"PLAINS"},
{"t":"STONE","x": 0,"y": 0,"z": 0}
]
curl http://<server-ip>:4567/players
[
{"uuid":"<UUID>","mainItem":"AIR","offItem":"AIR","x":8,"y":0,"z":1,"yaw":79,"pitch":18,"crouch":false}
]
curl http://<server-ip>:4567/mobs
[
{"uuid":"<UUID>","x":6.5,"y":0.0,"z":1.5,"yaw":-90.0,"pitch":0.0,"mobType":"WANDERING_TRADER"}
]
curl http://<server-ip>:4567/world
{"time":6000,"thundering":false,"raining":false}
curl -X POST http://<server-ip>:4567/post -d 'action=BUILD&x=0&y=0&z=0&material=STONE&direction=NORTH'
For BUILD:
{
"x": 0,
"y": 0,
"z": 0,
"material": "STONE",
"direction": "NORTH",
"action": "BUILD"
}
For BREAK:
{
"x": 0,
"y": 0,
"z": 0,
"action": "BREAK"
}
For TOGGLE:
{
"x": 0,
"y": 0,
"z": 0,
"action": "TOGGLE"
}
For EDIT:
{
"x": 0,
"y": 0,
"z": 0,
"line": 2, (ranging from 0 to 3)
"text": "Hello, World",
"action": "EDIT"
}
[{"sender":"The_Atmerek","message":"Hi"},{"sender":"The_Atmerek","message":"Hello"}]
{
"player": "wwwdr666",
"color": "#FFFFFF",
"message": "Hewoo~"
}
{
"x": 0,
"y": 0,
"z": 0,
"yaw": 90,
"pitch": 45,
"disconnect": true (optional)
}
The Roblox side provides a framework to help you start creating your own code. It includes several scripts and models to manage block data and interactions within Roblox.
BlockHandler.lua
Contains the system for fetching chunk data and cloning models into the workspace.
BlockBreakHandler.lua
Manages POST requests for block breaking on the server side.
BlockPlaceHandler.lua
Manages POST requests for block placing on the server side.
PlayerHandler.lua
Manages the Minecraft players in Roblox.
NPCHandler.lua
Manages the Roblox players in Minecraft.
TimeHandler.lua
Contains a script to convert Minecraft time values and apply them.
ChatHandler.lua
Manages in and out messages.
ImageAuth.lua
An authentication script for the remote_img library.
models.rbxm
Contains a folder with a few block models.
IP.rbxm
Contains a text value with the server IP.
BlockStateManager.lua
An additional module for applying rotation to models.
CurrentBlocks.lua
An additional module for synchronizing blocks across scripts.
Chat.rbxm
A RemoteEvent for the chat messages.
loadPlayerSkin.rbxm
A RemoteEvent for applying player skins.
remote_img.rbxm
A module library for managing EditableImage.
Player.rbxm
A model of the Minecraft player.
We provide an API to resolve Minecraft player's usernames and skins by their UUIDs. The API supports both Java and Bedrock (floodgate) UUIDs.
Endpoint: /api/uuid/:uuid
uuid
(string): The UUID of the Minecraft player. Supports both Java and Bedrock UUIDs.Example Request:
curl https://crossplayproject.xyz/api/uuid/92270a4f-f954-4087-a932-e8d0e5deb2bd
Example Response:
{
"username":"The_Atmerek"
}
Endpoint: /api/uuid/:uuid/skin
uuid
(string): The UUID of the Minecraft player. Supports both Java and Bedrock UUIDs.Example Request:
curl https://crossplayproject.xyz/api/uuid/92270a4f-f954-4087-a932-e8d0e5deb2bd/skin
Response: Returns the skin image in PNG format.
To selfhost the project, you will need a host that supports custom HTTP ports and plugins (if it can run Dynmap, it can probably run this), or a plain VPS server.
Hosting on a Linux VPS server:
Install Java: Ensure Java 21 is installed by running java --version
. If not installed, run sudo apt install openjdk-21-jdk
.
Prepare Directory:
mkdir <folder-name>
cd <folder-name>
Download Server Software:
Run the Server:
java -Xmx<max-ram>M -Xms<min-ram>M -jar <jar-name>.jar
Agree to EULA:
eula.txt
to accept the EULA:
nano eula.txt
false
to true
, save with CTRL+O
, and exit with CTRL+X
.Configure Server:
server.properties
:
nano server.properties
{"layers":[{"block":"minecraft:air","height":63},{"block":"minecraft:grass_block","height":1}]}
to the generator-settings
field.level-type
to minecraft:flat
.Install Plugins:
plugins
directory (create it if necessary) and download the required plugins:
Start Server:
Note: Additional hosting options may be provided in the future.
Upload Game:
Configure IP:
ReplicatedStorage
.Enable HTTP Requests:
For further details, contact support.
We provide a demo for you to test the source without needing to set up everything yourself.
demo.crossplayproject.xyz
https://crossplayproject.xyz/demo/
To use the endpoints, append the endpoint name to the base URL. For example, to access the /players
endpoint, use https://crossplayproject.xyz/demo/players
.
For support, reach us at our Discord.