Using LibGDX?
A distributed cron service written in Erlang. And exams
Yep. Simplifies using graphics (I can never seem to get those to work otherwise) and such.
Some Screenshots of my plugin workspace wizard:
This looks very nice.
Nothing MC related other than Sponge.
This one is mostly complete.
This one I just recently started.
Definitely working on implementing almost all of Data APIā¦ and my RPG plugin.
For the most part, I spend a lot of time doing this:
(or ratherā¦ setupDecompWorkspace)ā¦
And Iām just sitting here re-learning laravelā¦
Laravel is awesome. Well, as awesome as PHP can be, that is
I would use Node.JS but Iāve yet to find a web framework as structured as laravel on node.
Node.js isnāt about structure, itās about modularity. Thereās things like Sails, but really best practice is to create your app in many small, standalone modules rather than using a monolithic framework. Kind of sticking to the mantra of solving large problems by solving many small problems.
I know itās built for modularity but still, Last time I tried a Node.JS web app without a framework, It was a nightmare.
EDIT: Now I kinda want to learn sails. DAMMIT!
Heh. Sails is neat, but I would not recommend it for a production app. Just spent a week porting away from Sails (to Hapi, which is more of a microframework).
Whatās so bad about sails in production? Iāve been Looking into Sane (Sails+Ember)
Well partly the fact that during development we found three critical vulnerabilities in the Sails stack (i.e. SQL injection kinda stuff) during development, without even purposely lookingā¦
Hmmmmmm. I really want to use Node.JS, do you know a framework with Convention over Configuration?
Hmm, what am I working on.
package org.spongepowered.tester;
import org.spongepowered.api.data.manipulators.DisplayNameData;
import org.spongepowered.api.entity.Entity;
import org.spongepowered.api.entity.player.Player;
import org.spongepowered.api.event.Subscribe;
import org.spongepowered.api.event.entity.EntitySpawnEvent;
import org.spongepowered.api.event.state.ServerAboutToStartEvent;
import org.spongepowered.api.plugin.Plugin;
import org.spongepowered.api.text.Texts;
import org.spongepowered.api.text.format.TextColors;
import org.spongepowered.api.util.command.CommandResult;
import org.spongepowered.api.util.command.spec.CommandSpec;
import static org.spongepowered.api.util.command.args.GenericArguments.playerOrSource;
@Plugin(id = "tester", name = "Tester", version = "0.1")
public class Tester {
@Subscribe
public void onServerAboutToStart(ServerAboutToStartEvent event) {
event.getGame().getCommandDispatcher().register(this, CommandSpec.builder()
.setArguments(playerOrSource(Texts.of("player"), event.getGame()))
.setExtendedDescription(Texts.of("Kills all entities in the player's world."))
.setExecutor((src, args) -> {
int count = 0;
for (Entity entity : ((Player) src).getWorld().getEntities()) {
if (entity instanceof Player) {
continue;
}
entity.remove();
count++;
}
src.sendMessage(Texts.of("Removed [", TextColors.AQUA, count, TextColors.RESET, "] entities."));
return CommandResult.success();
})
.build(), "killall");
}
@Subscribe
public void onEntitySpawn(EntitySpawnEvent event) {
final DisplayNameData displayNameData = event.getEntity().getOrCreate(DisplayNameData.class).get();
displayNameData.setDisplayName(Texts.of(TextColors.GOLD, "Sponge", TextColors.RESET, " Testraians"));
displayNameData.setCustomNameVisible(true);
event.getEntity().offer(displayNameData);
}
}
Weāll go with this.
Right now, just a small essentials-like plugin for Sponge