Note
this project is graduated
This project is a sophisticated craft of love, though the base requirement is actually different, thats why there is a lastminute
behaviour module. This module serve as the sloppy gameplay shifted from the base intention of this project.
Originally, I thought the game will be constructed like skyblock, but each player owns a fountain. Quickly disposed in the beginning phase. The artifacts are the database schema in the project.
The realms
, which hold by a shard
- the unit of scaling to store multiple server. It is tested that it can pop new one pretty fast, and compacted because we've tried multiple server software that use Linear world format.
Each shard
is a fixed unit of process and storage of the world, it must be accessable, and so, chiji is used (proxy behind proxy) to route player. Please note, at this point, the project is still incubating. Soon, the development is redirected to another idea.
During development phase (as still to prod 1.0) there is a bug produced by good intention: While the block is falling out the void, to avoid, the drop is suppressed, BUT!! the drop is throwed at the nearest surface, but the entity is not controllable, so it is taken from the loot output of the block, and manually throw one. It results in staff who covered the whole world in worldguard, still make the block being broken and drop loots while the worldguard is yelling, and some stuff not working.
Islands are no longer stored in realms
, remains only one single world to store them all. The idea, is to have calibrated space between the island, while it still accessible in proximity. Poisson disk is pretty suit (but im pretty not a cool math kid),
so to avoid many algorithm query at once, the algorithm should run behind a blocking cache that then be collected and disk cached. The disk is then trimmed to its inner pendicular, with the size calibrated accordingly to match 16
chunk square.
The distance is calibrated to be around 3
-6
chunk inbetween, as for coolness, and clarity, the one-block is placed with a cool and cozy island. The island, is loaded from a schematic, loaded into worldedit clipboard and loaded back into chunk buffer. The position is randomized, but to reduce wasteness, it is aligned inside the chunk.
As any gambling material, it always come with a basic system we all know: chances. But, we have mostly every block of minecraft, so how to deal?
As the base, the chance table, which contain Table<Result, Double> (double is chance in decimal, 0.0-1.0). This is the base unit for random calculation. At the higher level, the weight table. which is Table<Result, Double> (double is weight in decimal, 0.0-inf). A value, is nearer to zero will have lower chance, and higher value have higher chance.
To calculate chance, mimic(two) will do following things:
- Convert everything to chance table. (only conversion have clamped sum to 1.0)
- Create a counter
- For every
samples
:- generate random number
- shuffle table (locally)
- adding table value until it surpass random number.
- immediately select the item
- Take the most choosen item
It is now mathemetically flawed on the true chance, but theorically, a chance that you hit a 1cm square in 100cm plane is actually near the same and reasonable. (well that the old past me)
Finally, there is no realm, there is no random field. Only boring spawn with cubes. There is some flaw with the block table that it might place a non-block like a block that will be air and basically not breakable, but there is a hot-fix scheduler to place in block that is breakable again.
It is basically a cashgrab slop shill or kind of, but i think the originally the idea to survive in oneblock from youtube is pretty cool though. Though, it is really important to focus on gameplay for actual commercial minigames and kind of, and though, lets just go back and make what made us "multiplayer".
An oneblock gameplay, customized a lot
Im planned to publicly archive this plugin once the server no longer serving it
Test unit? Cat in the Schrödinger box!
- CommandAPI (portable, should we?)
- Multiverse-Core (must download at craftbukkit because spigot page is outdated)
- WorldEdit (please use this exact version, since better than shadow)
- ItemsAdder
- PlaceholderAPI
- "hii_st-bb": Self query
- "hi_st-bb-r_ORDER": Ranked descending (param: ORDER)
Recommended world manager (and perhaps API required in future): PhantomWorldCreate world with/pw create test NORMAL generator:hitochi
/pw tp test
Note
ONLY work with world name that is test
or start with obr_
(production recommended)
Warning
It is recommended to run this gameplay standalone from multipurpose or dedicated function like hub or lobby. Because of heavily hooking into world generation, it also recommended not to use with any non-recommended world plugin
- Block generation randomization, seed (yes, we are there), lucks, entropy
- Stats
- Working worldgen and block replacement
- Working world management
- Working Poisson disk distribution (stolen code obviously)
- Working noise
- Working schema placement
Item shoots when being spawn next tick, as the block is generated immediately next tick (after break event received)We manually shoot it higher