Giter Site home page Giter Site logo

phantommc / phantommini Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 0.0 145 KB

The standalone self-hosted version of Phantom (an ultralightweight MineCraft "server")

Home Page: https://phantomhost.cc

License: Mozilla Public License 2.0

Makefile 2.80% C 97.20%
minecraft minecraft-server protocol broadcaster motd messager server-list-ping minecraft-motd minecraft-server-list-ping phantom phantommc phantompowered hosting-platform minecraft-server-software

phantommini's Introduction

Phantom Standalone Edition

THIS PROJECT IS ON HOLD

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
THIS PROJECT IS A WORK IN PROGRESS.
DO NOT USE IT IN PRODUCTION CIRCUMSTANCES

No stable releases are available at this time.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

The self-hosted, single instance, version of Phantom PhantomHost

Phantom Banner

Description

What is Phantom?

Phantom is a MineCraft protocol responder that forgoes all of the game's mechanical functionalities.
This is therefore, by its very definition, the lightest possible MineCraft "server" implementation.

What does Phantom do?

Functionally, Phantom is a MineCraft broadcaster that delivers configurable messages to all users who interact with your server's IP.

How does Phantom work?

Whenever a user interacts with your server's IP, their client will request to establish a TCP or UDP connection.
Phantom is equipped to respond to such requests across all versions of every edition of MineCraft (including Bedrock, Java, Pi, & China)

For users viewing your server in their client's server list, Phantom will respond with a customisable MOTD, hover message, upper message, and/or icon. If users attempt to join your server, Phantom will accept the connection and immediately kick them with a customisable message.

When is Phantom Useful?

Phantom has five primary use cases:

Temporary Events Upcoming Servers
Ephemeral servers that are infrequently online.
Perfect for periodically repeated (or one-time) events!
Servers that aren't quite ready yet.
Helpful for building hype around your next project!
Defunct Servers Parked Domains
Past servers that are no longer operating.
Perfect for informing and reconnecting playerbases!
Held domains that are not currently in use.
Suitable for holding advertisments and contact information.
Downtime Management
Servers facing downtime on account of hardware migration or maintenance.
A DNS-level solution to keep your users informed amidst service outages.

How does one use Phantom?

Phantom can be used through one of two setups: PhantomMini and PhantomHost.

What is PhantomMini?

PhantomMini is our self-hosted, single instance, edition of Phantom.
If you have a basic understanding of unix, you should find that it is relatively easy to install.

Although optimised for SBMs, PhantomMini should be able to run in most environments.
(minimum specs - suggested specs)

What is PhantomHost

When deployed at scale, Phantom instances so ultralightweight that they can be hosted at next to no cost.
To that end, PhantomMC operates a free hosting service at PhantomHost.cc.

Through the PhantomHost service, you can set up five free server instances that:

  • Display a customisable MOTD, icon, hover message, and/or upper message to players when viewed.
  • Display a customisable kick message whenever a user tries to join.
  • Provide you with a basic metrics report on your server's view/join rates and activity.
  • Provides you with a free domain that you can point your DNS to, for example, YourServerName.PhantomHost.cc.

All costs are supported by a single unobtrusive advertisment banner on your (admin-side) control panel.

Instructions

Installing:

  1. Extract the program to a directory on a UNIX os
    • Only Debian has been tested; other systems may work as well.
  2. Edit the config.yml file.
  3. While in the directory with phantom.c, run make
    • Phantom was designed with gcc and make
    • They are installed by default on most OS systems.
  4. Run ./PhantomServer

Configuration

The default config has been commented for clarity. You can find a copy of it here.

Changelog

Version 0.0.0
        | | |_ Development Iteration (Changes the code in some way)
        | |_ Feature Release (Adds a new feature)
        |_ Milestone Release (Adds a major feature from /PhantomServer/milestones)
        

[Version 0.0.0]

  • Made a basic project structure and updated readme.

phantommini's People

Contributors

pheotis avatar thorinwasher avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

phantommini's Issues

uyaml sucks

The lib will need to be PR'd; this fork was made to facilitate that.

Issues with uyaml:

  • No support for comments
  • Parses newlines as \\n instead of \n
  • No support for |- (Listed as 8.1.1.2. in the specification)

Does not read the right port

The client sends a 2 bit short containing the port it's using (or server port, idk).

struct.unpack("H", ) should generally work to unpack the short, but we then get invalid numbers like (56675,), which should have been 25565.

Ports don't really need to be tracked, but it still annoys me

Posible solutions:
struct.unpack is not a valid method for this; find another method
I'm not retrieving the right bytes to decode; fix the retrieval of data.

Every retrieved IP is from France

This is of course related to the micropython branch of phantom, some possible solutions have been considered:

  • Make France invade every country, thus avoiding this problem
  • Force relocate everyone to France
  • Initiate a nuclear war that annihilate every country except France

TODO List

Tasks and the order they should be finished

  • Works for localhost connection
  • Show all possible server messages
  • Show logo
  • Have a config
  • Store all logs
  • Async Processing
  • Improved UI
  • Store unique users
  • Sender for Bstats Data.
  • Works for non localhost connections (haven't tried yet)
  • Search and find no issues
  • Improved Documentation

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.