Giter VIP home page Giter VIP logo

stellarica's Introduction

Stellarica

Project Status

I (trainb0y) used this project a way to learn Kotlin, and over the year and a half of off-and-on development learned a lot. However, I also made a bunch of questionable design decisions that would require some pretty major refactoring, that at this point I don't really want to do. I kind of lost interest in Minecraft, and have moved on to other things. I still make occasional commits to keep this up to date with recent Minecraft versions, but the current plugin isn't that usable. It's here, and public, if anyone is curious or wants to build off of it (though I wouldn't recommend it) but I don't plan to continue it.

(Updated January 2024)

About

This project (A gradle nightmare) contains:

  • A Paper plugin that aims to add various science fiction mechanics to Minecraft.
  • A QOL Fabric mod to pair with said plugin.
  • Extremely cursed networking abstractions for communicating between them

Overall it's a somewhat very cursed mess of WIP code.

Originally a fork of Astralchroma's Minecraft Starship Plugin, but this now actually does stuff:tm:

Uses some code (bukkit scheduler wrapper) from Horizon's End's OldIon codebase, though it has been mostly rewritten.

stellarica's People

Contributors

astralchroma avatar dependabot[bot] avatar hypersoop avatar novaforeversl avatar novamangood2110 avatar pigglemcdiggle avatar renovate[bot] avatar trainb0y avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stellarica's Issues

Hotbar Menu doesn't close

Sometimes upon logout or ship unpilot the hotbar menu does not go away, wiping the player's original hotbar.

Ships don't move multiblocks

Ships need to update carried multiblocks, as it is, they undetect and leave an invalid multiblock in the chunk

Item and Block wrappers

Currently custom items and blocks are represented by string ids, which is... rather dumb.

There should also probably be wrapper classes that define a "block", or an "item stack" but doesn't care whether it's vanilla or custom.

This is one of the reasons id like to consider switching to serverside fabric, as items and blocks could be registered mostly normally using something like Polymer or PolyMc

Custom blocks drop item even when in Creative mode

Might need to use BlockDropItemEvent to fix.
Pretty sure the issue is event.isDropItems is always true, even if it shouldn't drop items (like if the player is in Creative mode)
Need to look into this more.

Use an EnumSet for detectable blocks

Currently it’s just a Set<Material>. EnumSet is better optimized for Enums.

Also the per ship detectable list needs to be reimplemented, some scraps exist from MSP but it isn’t functional.

Elevators

I'm hoping using the 1.19.4 block displays we can have animated smooth elevators, similar to SL's elevators, but animated.

Configuration Rewrite

The current configuration system is... really dumb.

It uses the built-in bukkit api, which is really terrible compared to libraries such as configurate and kx.ser
In addition, effects such as projectiles, and maybe multiblock actions, should be able to be defined in config files.

If simple config files aren't enough, I wouldn't mind messing around with using kotlin scripts loaded at runtime (kotlin supports it pretty well, and performance should be good enough:tm:)

Custom items with power can't be used for crafting

Because of RecipeChoice.exactChoice items with non-zero power (different nbt) can not be used in crafting.
One way to get around this was custom crafting in which crafting is left to a listener rather than the bukkit api, but the complexity probably isn't worth it.

Thrusters

Currently the rough plan for thrusters is:
3 types, three sizes of each type.
The types are:

  • Ion - Requires power, but no fuel. Low max speed, low acceleration.
  • Chemical - Requires fuel, but no power. Medium max speed, high acceleration.
  • Fusion - Requires fuel and power. High max speed and acceleration, but bulky and has a high operating cost.

Destroyable Blocks

Should probably be done after #33

Certain blocks, such as tall grass and snow should be able to be overwritten in ship movement, rather than stopping the ship.

Tile Entities don't all move properly

Currently it is hardcoded so only chests move properly. This can easily be fixed, but I can't find a way to check if a block is a tile entity from a ChunkSnapshot, other than by checking the material against a list, which seems dumb.

Issues

Update: October 12, 2023

I just closed all existing issues on this repo, for the most part they were features to implement, not actual bugs. From now on issues here will be actual bugs, not future planning nonsense.

Original Content

Most of the "issues" here are just issues for the GitHub Project so we can use tags.

If you want to find actual issues, filter by issues with the "bug" label.

Ship Weapons

Special multiblocks that integrate with the ship to provide a Star Legacy-like weapon system

Scoreboard HUD

Hydrazine should have a scoreboard HUD similar to the system I developed for OldIon. In it players can add or remove "widgets" which display data on the scoreboard. The preference would need to be stored, probably in a SQL database

If possible it should be done using the team feature as objectives cause flicker with bad ping (sending 2 packets instead of 1)

Passengers don't move

Currently only the pilot is moved with the ship. It needs to find all passengers and move them all.

Oka

Dark unhospitable planet with a barren obsidian surface, intended to be an endgame mining area concentrating many end-game and high demand resources.
The planet is almost fully made of obsidian, and bedrock is scattered all around underground, with more bedrock blocking your way the deeper you go (like the vanilla bedrock fade-in, but it spans around 80 blocks instead of 4), with more loot to be found on deeper Y levels.

Random details & ideas: no/toxic atmosphere, high radiation levels, possible thunderstorms (?); a gas giant moon (?); cracks in the surface going a few blocks down and having crying obsidian at the bottom, spikes with layers of crying obsidian and an increased concentration of bedrock

/customitem give other player

/customitem give doesn’t restrict giving items to other players. As seen on SL/HE this can be an issue.

This should be a separate permission node.

Iron Bars don't rotate

Iron bars don't rotate, as they use facing data similar to mushroom blocks. (MultipleFacing, perhaps)

Block and item references

Currently there's no good way to get a reference to a custom block or item in the code. Might want to do something similar to vanilla's Blocks.

Optimize ship rotation

Currently ship rotation does multiple sine/cosine operations per block to calculate the rotated position. This only needs to be done for precise locations like that of the passengers, not blocks.

Subcrafts

Would be nice if our ship code supported some sort of subcraft system.

Environments

Players shouldn't be able to breathe in space, and should slowly freeze or burn in extreme environments.

Config loading lacks error handling

Config loading of custom items, blocks, and multiblocks lack good error handling, and are likely to throw NPE's if the config is formatted incorrectly. Useful error messages would be great.

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.