Code Monkey home page Code Monkey logo

crystalspace's Introduction

CrystalSpace Build Status

Unofficial effort to revive the functionality of a powerful plugin

What

CrystalSpace is the CrystalCraftMC fork of bSpace. CrystalSpace is a Bukkit/Spigot plugin that is a terrain engine for Minecraft. With CrystalSpace, you will have a void world created and populated with planetoid objects, such as small planets, stars, satellites, and more. This plugin provides the barebones you need for your very own space-themed server.

I decided to make this a long-term project for my own server to not only use on my own server, but to recreate one of the most amazing gametypes known in world of non-modded Minecraft servers.

Where

jflory7 is responsible for the fork of this project. iffa, an original developer, also occasionally contributes. Between the many hats I wear, progress on this plugin is slow, but help is always welcome and appreciated in the form of bug reports and pull requests.

You can find the original bSpace plugin on BukkitDev, but note that we are not associated with that project page.

CI Server

This project had a continuous-integration build server, but due to financial issues, the CI server is no longer available. We hope to be able to offer this again someday in the future. (Someone willing to host one for this would be awesome!!)

Building

This project can be compiled and built with Maven. To build the project, open a terminal, enter the directory of this repository, and run the following command.

mvn clean package

This will generate the latest version of the plugin locally for you.

Licensing

This project is licensed under the Mozilla Public License 2.0.

Forking and modifying the plugin is permitted, but if you're going to work on this project, it would be greatly appreciated to return your work upstream.

Contact

If you are looking for more information about the status of this repository, looking to help with development, or willing to help test early development builds, please get in touch at admin [a t] crystalcraftmc [d o t] com.

crystalspace's People

Contributors

jwflory avatar kitskub avatar nightpool avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

crystalspace's Issues

Drowning

I tested the plugin with 1.8.3 Bukkit Server (Spigot)
Anything goes fine with world generation. I used a modified empty ids.

But the drowning wil not function by default. Are there any config settings ?

Last year i made a 1.72 version and must make some source code changing to give drowning the correct function.

I tested my old setup
Ids setting:
alwaysnight: true // correct function ready
neutralmobs: false // no correct function
hostilemobs: false // no correct function
weather: false // no correct function

P.S: I hope you do support this plugin , its awesome. My own update to 1.72 is not so good. I have no experience in world generation. And so i stop the fork.

Happy mining,
Krglok

Space Suit Modifications

I am using a class system and the classes require tags in the items lore for the class to be able to wear the items. Example tag is as follows
Req: Priest

I also have attributes I can add for bonus's to weapons/armors such as health/speed/dmg that I want to be able to use as well for class space suits. This way players can have their own space suit sets with attributes related to their class.

My question is how would I be able to make custom space suits for the classes? Would I be able to just use the set item ID's in the Crystalspace config and just have modified versions of those ID's that players can loot/find/buy in the spaceworld they are in? For example lets say I used a diamond_helm for the space suit helmet, would it apply the space suit features to ALL diamond helmets even if modified with a lore?

Create the schematics/ directory

Currently, the plugin will not be able to start successfully, as in the SpaceSchematicHandler class, on line 92, there is a call to the schematics/ directory to scan it and see if any schematics have been loaded into the server.

However, whatever code there once was to create this directory is gone, as it throws a NullPointerException whenever the line passes through.

Code is as follows:

List<File> files = Arrays.asList(new File("plugins" + File.separator + "CrystalSpace" + File.separator + "schematics").listFiles());

For now, I am hotfixing this by just manually creating the schematics/ directory… this is lazy and is vital to be fixed before moving forward, but it requires more energy and rest to think about and read about than I currently have.

Space!

Is this still happening?

World Generation

World Generation consumes custom made worlds. Needs some sort of feature that uses the Custom world and generates stuff out from it. Example: I have a Mars world that is about the size of The End world maybe a little bigger, but everything out from it is empty space. The empty space is where I would want the space plugin to generate without generating over the custom made world. This would be helpful for designated spawn locations in the generated space worlds.

Diamond ore planets should have an option to only be cores

Diamond ore planets are very powerful and have the potential to completely inflate the economy of a space server. As a result, there should be a way to either limit them or "hide" them a little better from players.

This could be done with a configurable boolean in the config.yml giving the administrator the discretion to decide whether he or she wishes for diamond ore to only be cores or if it can also be planet shells.

Tutorial?

Is there somewhere that I can find the details of how to use this plugin?

Initialize a null array

In wgen/planets/PlanetsChunkGenerator.java, on lines 121 and 131 (at time of posting), we create an empty ArrayList of data that doesn't seem to exist.

This data is supposed to be generated inside of the ids.yml file, and is referenced by the setting in planets/planets.yml, as blocks.shells and blocks.cores. However, the issue is that this data is not relayed into the declared ArrayLists on those lines.

Why is this data not being called? How is it not making it to the ArrayList?

The lines are as follows:
ArrayList<MaterialData> list = new ArrayList<MaterialData>(curPl.shellBlkIds);
ArrayList<MaterialData> list = new ArrayList<MaterialData>(curPl.coreBlkIds);

Line 121 in Context
Line 131 in Context

spaceWorldNames ArrayList is not filled with list of space worlds

This issue comes from this error:

[09:09:52 INFO]: CrystalCraftMC issued server command: /space list
[09:09:52 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'space' in plugin CrystalSpace v3.0.0-ALPHA4
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-6ee12f6-33d5de3]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot.jar:git-Spigot-6ee12f6-33d5de3]
    at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServer.java:646) ~[spigot.jar:git-Spigot-6ee12f6-33d5de3]
    at net.minecraft.server.v1_8_R1.PlayerConnection.handleCommand(PlayerConnection.java:1115) [spigot.jar:git-Spigot-6ee12f6-33d5de3]
    at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:950) [spigot.jar:git-Spigot-6ee12f6-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java:26) [spigot.jar:git-Spigot-6ee12f6-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java:53) [spigot.jar:git-Spigot-6ee12f6-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [spigot.jar:git-Spigot-6ee12f6-33d5de3]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_31]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_31]
    at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:696) [spigot.jar:git-Spigot-6ee12f6-33d5de3]
    at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [spigot.jar:git-Spigot-6ee12f6-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:634) [spigot.jar:git-Spigot-6ee12f6-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:537) [spigot.jar:git-Spigot-6ee12f6-33d5de3]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_31]
Caused by: java.lang.NullPointerException
    at com.crystalcraftmc.crystalspace.commands.SpaceListCommand.command(SpaceListCommand.java:52) ~[?:?]
    at com.crystalcraftmc.crystalspace.commands.SpaceCommand.<init>(SpaceCommand.java:33) ~[?:?]
    at com.crystalcraftmc.crystalspace.commands.SpaceListCommand.<init>(SpaceListCommand.java:33) ~[?:?]
    at com.crystalcraftmc.crystalspace.commands.SpaceCommandHandler.onCommand(SpaceCommandHandler.java:74) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-6ee12f6-33d5de3]
    ... 14 more

Upon further inspection, it seems that the spaceWorldNames ArrayList found here is not being initialized like it should. The corresponding lines that relate to this particular ArrayList are lines 39 and 68-64 in the SpaceWorldHandler class, found in the API.

Because this ArrayList is empty, it is throwing a NPE when used in the SpaceListCommand class.

Goal: Evaluate this method to figure out what's going on.

Related: Stacktrace from iffa

Some planets only partially generate

When generating some parts of the space world, it seems that some planets do not generate completely. At the time of filing this bug, there does not seem to be much of an explanation or reasoning behind why some planets only partially generate and why some generate normally. However, this is definitely a game-breaking issue.

A partially-generated planet

Ore generation

What I am trying to get working is basic asteroids with store insides random shells (this much works) but is there a way to make the stone generate ores akin to the overworld generation?

Fine tune world generator to increase likelihood of risky cores (e.g. lava) for more valuable planets

To increase the difficulty of a space server, the world generator engine should have a greater likelihood to have a planet with a lava core (or another dangerous material) if the shell exterior is something that could be considered a valuable resource, such as iron ore, gold ore, lapis lazuli, or other miscellaneous blocks.

This should be implemented as a configurable list in the config.yml for an administrator to determine which blocks are considered "valuable" for his or her own server.

Delayed hangup at start

Whenever a CrystalSpace server first starts up, sometimes the CrystalSpace plugin will hang during startup, subsequently delaying the entire startup process. The cause is currently unknown; however, it seems to happen in-between the first and last output of the following snippet.

[18:54:21 INFO]: [CrystalSpace] Enabling CrystalSpace v3.0.0-ALPHA-5
[18:54:21 INFO]: [CrystalSpace] The plugin will now start sending usage stats. You can disable this plugins/PluginMetrics/config.yml!
[18:54:34 INFO]: UUID of player jflory7 is 73402589-7b19-4cc6-97c0-7599c6e9a6d5
[18:55:07 INFO]: UUID of player Tethtibis is 79571497-1da1-488e-b33a-b4315694dfc1
[18:56:20 INFO]: UUID of player Tethtibis is 79571497-1da1-488e-b33a-b4315694dfc1
[18:56:28 INFO]: [CrystalSpace] Enabled version 3.0.0-ALPHA-5.

The code will need to evaluated to determine the issue and then optimize the code. Presently, we are looking at an almost two-minute initialization, which should not be happening.

Planet generator and new (>1.6?) blocks

As we all know in its current state the generator will not for some reason understand and put to use new Materials/blocks - we need to find out if it's our code's fault or if it is not an issue on our end.

I shall comment whatever I find out once I get everything up and running on my end.

Startup Crash - NullPointer in Loading and Saving Config

Whenever the plugin is first started, a NullPointerException is thrown in regards to loading and saving the configuration. This likely involves the variables which were commented out.

[11:35:48 INFO]: [CrystalSpace] Loading CrystalSpace vv3.0.0-ALPHA1
[11:35:48 INFO]: [CrystalSpace] Enabling CrystalSpace vv3.0.0-ALPHA1
[11:35:48 ERROR]: Error occurred while enabling CrystalSpace vv3.0.0-ALPHA1 (Is it up to date?)
java.lang.NullPointerException
    at com.crystalcraftmc.crystalspace.config.SpaceConfig.loadConfig(SpaceConfig.java:88) ~[?:?]
    at com.crystalcraftmc.crystalspace.config.SpaceConfig.getConfig(SpaceConfig.java:44) ~[?:?]
    at com.crystalcraftmc.crystalspace.api.SpaceConfigHandler.getDebugging(SpaceConfigHandler.java:51) ~[?:?]
    at com.crystalcraftmc.crystalspace.handlers.MessageHandler.debugPrint(MessageHandler.java:37) ~[?:?]
    at com.crystalcraftmc.crystalspace.Space.onEnable(Space.java:73) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot.jar:git-Spigot-b1e6da1-1092acb]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:335) [spigot.jar:git-Spigot-b1e6da1-1092acb]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Spigot-b1e6da1-1092acb]
    at org.bukkit.craftbukkit.v1_8_R1.CraftServer.loadPlugin(CraftServer.java:355) [spigot.jar:git-Spigot-b1e6da1-1092acb]
    at org.bukkit.craftbukkit.v1_8_R1.CraftServer.enablePlugins(CraftServer.java:315) [spigot.jar:git-Spigot-b1e6da1-1092acb]
    at net.minecraft.server.v1_8_R1.DedicatedServer.init(DedicatedServer.java:153) [spigot.jar:git-Spigot-b1e6da1-1092acb]
    at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:494) [spigot.jar:git-Spigot-b1e6da1-1092acb]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_25]

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.