GithubHelp home page GithubHelp logo

glowstonemc / glowstone Goto Github PK

View Code? Open in Web Editor NEW
1.9K 88.0 273.0 15.92 MB

A fast, customizable and compatible open source server for Minecraft: Java Edition

Home Page: https://glowstone.net

License: Other

Shell 0.04% Java 99.95% C 0.01%
java bukkit minecraft minecraft-server glowstone spigot-api bukkit-api spigot glowstone-server

glowstone's Introduction

Built with Love Join the Discord chat Dev Build

Glowstone logo

Glowstone

A fast, customizable and compatible open source server for Minecraft: Java Edition.

Introduction

Glowstone is a lightweight, from scratch, open source Minecraft server written in Java that supports plugins written for the Bukkit API and its major forks, Spigot and Paper.

The main goals of the project are to provide a lightweight implementation of the Bukkit API and Minecraft server where exact vanilla functionality is not needed or higher performance is desired than the official software can deliver. Glowstone makes use of a thread-per-world model and performs synchronization only when necessitated by the Bukkit API.

Still have questions? Check out our FAQ.

Features

Glowstone has a few key advantages over CraftBukkit:

  • It is 100% open source. While CraftBukkit and most other mods are open source, they rely on decompiled Minecraft source code. Glowstone's code is completely original.
  • Because of this, it is easy to contribute to Glowstone's development. The barrier of entry to contributions is lower because there is no need to work around decompiled source or maintain a minimal diff.
  • Glowstone supports all plugins written for the Bukkit, Spigot and Paper APIs natively. In practice, some plugins may try to make use of parts of the API which are not yet implemented, but in a completed state Glowstone would support all Bukkit plugins.
  • Glowstone's simplicity affords it a performance improvement over CraftBukkit and other servers, making it especially suited for situations where a large amount of players must be supported but vanilla game features are not needed.

However, there are several drawbacks:

  • Glowstone is not finished. Nothing is guaranteed to work, though many things are likely to. If in doubt, file an issue.
  • Bukkit plugins which expect the presence of CraftBukkit-specific code (that are in the org.bukkit.craftbukkit or net.minecraft.server packages) will not work on Glowstone unless they are designed to fail gracefully.
  • Glowstone is not produced by the Bukkit team, and while we do make an effort to produce quality work, Glowstone does not undergo the same rigorous testing as the Bukkit project.

For a current list of features, check the wiki.

Downloads

The latest LTS and monthly releases, as well as a direct link to our latest build can be found on our website.

Older releases can be found on GitHub.

Building

1. Setup

After installing Oracle JDK (recommended) or OpenJDK, and Maven, checkout the source:

git clone https://github.com/GlowstoneMC/Glowstone
cd Glowstone

2. Build

./scripts/build.sh

The final jar will be placed in build/libs/ named glowstone.jar.

Running

Running Glowstone is simple because its dependencies are shaded into the output jar at compile time. Simply execute java -jar glowstone.jar along with any extra JVM options desired (we recommend using java -Xms1G -Xmx1G -XX:+UseG1GC -jar glowstone.jar). A variety of command-line options are also available - run java -jar glowstone.jar --help for more information.

By default, configuration is stored in the config/ subdirectory and logs are stored in the logs/ subdirectory. The main configuration file is config/glowstone.yml, which replaces CraftBukkit's server.properties and bukkit.yml. Settings from these two files will be copied over to Glowstone's configuration during the default configuration generation process.

Glowstone uses JLine for console input and colored console output. The JLine console can be disabled in the configuration if a flat console is desired.

Need more help? Check out our wiki for some guides that will help you with running, maintaining and configuring your Glowstone server.

Playing

For those of you who just want to play on a Glowstone server, we have one available for testing at mc.glowstone.net. Have fun!

Docs and Support

The best place to receive support is on GitHub issues. When reporting bugs, please retest and include whether the problem reproduces on:

Javadocs for Glowstone can be found here.

For documentation on the Glowkit API (an updated Bukkit for Glowstone, based on the Paper API, compatible with Spigot's update to Bukkit), see the Glowkit Javadocs.

Contributing

First of all, thank you for your interest in advancing Glowstone! We always love to see new developers work on the project! You can find all of our resources on how to get started on our wiki.

Sponsors

More backers

Sponsor Glowstone on Bountysource!

Credits

Copyright

Glowstone is open-source software released under the MIT license. Please see the LICENSE file for details.

Glowkit is open-source software released under the GPL license. Please see the LICENSE.txt file in the Glowkit repository for details.

glowstone's People

Contributors

aaron1011 avatar aramperes avatar bendem avatar coelho avatar deathcap avatar florentclarret avatar gdude2002 avatar grahamedgecombe avatar greatman avatar hibo98 avatar johni0702 avatar kaenganxt avatar kamcio96 avatar lukbukkit avatar m3rcuriel avatar mastercoms avatar momo-alt avatar momothereal avatar paulomart avatar postremus avatar pr0methean avatar samnosliw avatar smartboyathome avatar spacemaniac avatar tonodus avatar turt2live avatar vaiton avatar xuzhen86 avatar zephirenz avatar zml2008 avatar

Stargazers

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

Watchers

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

glowstone's Issues

Server transfer

So, I'm going to be moving the test server from the dedicated server to a new VPS server. Performance may go down by a tiny bit, and there will be some downtime. This transfer will occur Friday, 1PM EDT.

By default, rain is on

Every world's downfall is true when it is created. This causes for rain to always be enabled by default.

Glowstone++ Official Servers

I can start working on the official Glowstone++ servers with my hosting company, and I will just post when they are ready, I can then send owner login info to @deathcap and another login to @mastercoms (deathcap can choose what level of access he wants mastercoms to have to the servers). I will post progress on the servers as well. Deathcap and Mastercoms can comment features they would like to have for the servers and i will see how much I can do :) (I can probably do all of the suggestions)

Gson or JSON Simple?

I'm looking to clean up the Glowstone++ code. What library should I use for JSON, gson or json simple?

Review Pore's patches to Bukkit API

The Pore project (an implementation of Spigot's 1.8.3 update to the Bukkit API) has a handful of its own patches to the API, some might make sense to pull into Glowstone++'s:

https://github.com/LapisBlue/Pore/tree/master/patches

  • 0001-Disable-Spigot-version-check.patch
  • 0002-Remove-final-from-event-getters.patch
  • 0003-Add-HandlerList-adapters.patch
  • 0004-Make-events-properly-initialisable.patch
  • 0005-Add-method-to-get-EntityType-from-Class.patch
  • 0006-Disable-reload-command.patch
  • 0007-Remove-plugin-prefixes-and-use-normal-logger-instead.patch
  • 0008-Add-validity-check-supermethod-to-top-Event-class.patch

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Merge closed Glowstone pull requests

split off from #6:

  • Already added #191 Difficulty setting in glowstone.yml
  • Already added by entities-ecs, to be merged #196 Gravity for entities
  • #211 Chest sounds and animations
  • #225 SIGTERM handling
    Note: Changes are needed to quickly handle the SIGTERM, instead of doing the normal shutdown process.
  • #226 Damage
  • Functionality already added #237 Inventory windows for all inventory blocks
  • #242 Variable block sounds
  • #272 Prevent illegal placement
  • Not valid #274 getItemInHand()
  • Functionality already added #286 Ore generation
  • Already added by entities-ecs, to be merged #282 Entities
  • Functionality #373 Player.isOnline()
  • Functionality already added #381 Redstone
    Note: the main redstone PR has features the subsequent split ones do not. It would be preferable to add stuff in this PR that are not in the future PRs.
  • Not valid #386 Chat color
  • #391 Network unit tests
  • Functionality already added #436 Basic Redstone support
  • Functionality already added #439 Redstone buttons and levers
  • #483 Configurable messages
  • Not valid #515 Space between > and command
  • Functionality already added #518 Fixes errors on join on a whitelist or ban
  • Not valid #587 Fix console check in headless environments
  • #624 IO utils can load a world without a server

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

SpongeAPI implementation in Glowstone++ vs Bukkit2Sponge?

Both https://github.com/deathcap/GlowstonePlusPlus (in net.glowstone.shiny based on https://github.com/GlowstoneMC/ShinySponge) and https://github.com/deathcap/Bukkit2Sponge (based on Glowstone++) implement SpongeAPI, what to do about this duplication?

The downside of this duplication is of course extra work in maintaining two separate copies (#45), but it may also be causing conflicts: GlowstoneMC/Bukkit2Sponge#1

I'm thinking about removing the SpongeAPI in Glowstone++ in favor of Bukkit2Sponge, but a benefit of having it in Glowstone++ is that it's an all-in-one package, easier for server admins instead of having to download a separate plugin to load SpongeAPI plugins, plus the auto-detection of Bukkit/Sponge plugin types (Glowstone++ recognizes both types in the usual plugins/ directory, Bukkit2Sponge currently only loads from its own plugins/Bukkit2Sponge/plugins/ folder).

Maybe keep the plugin type detection in Glowstone++ (and enhance for other plugin types, e.g. #46), but defer to Bukkit2Sponge for loading the SpongeAPI plugins (possibly even embedding Bukkit2Sponge within Glowstone++? git subproject etc.)

There's also the possibility to consider as the projects advance that implementing SpongeAPI on top of the Bukkit API becomes less practical, than implementing it directly in the server implementation (to be determined).

Merge open Glowstone Pull Requests

  • #189 Switch to Netty ReadTimeoutHandler
  • #358 Double chests
  • #431 Random blocks tick
  • #432 Bonemeal
  • #444 Noteblocks and Jukeboxes
  • #445 Dynamic Recipes
  • #459 Scoreboards
  • #473 Fix race conditions
  • #477 Flower pots
  • #484 Window click logic fix
  • #501 Generate glowstone.yml defaults from the actual defaults
  • #514 Item Frames
  • #521 Fix player joining when they should be kicked
  • #529 Titles API
  • #533 Whitelist fixes
  • #540 Fix wrong drops
  • #541 Material attributes
  • #553 Potion ItemMeta
  • #564 Structures and structure saving
  • #570 Basic LilyPad Support
  • #572 Biome Decorators
  • #591 Enchantments
  • #597 biomegrid
  • #599 Entities
  • #607 Overworld worldgen
  • #613 Configurable world height
  • #618 Action message support
  • #619 Bed interaction & sleeping
  • #621 Fix getDrops() and breakNaturally()
  • #623 Item attributes
  • #631 Cauldrons
  • #632 Block Suffocation
  • #636 Water/lava physics
  • #637 Lightning damage and ignites

And some closed PRs that may be useful

  • (moved to #55 -deathcap)

TrueCraft

TrueCraft is a complete open source implementation of 1.7.3 beta.
http://truecraft.io/

It could help us in determining how to implement certain Minecraft features properly, such as fluids.

Liquid sets double plants to a single plant

When liquid flows, it sets the adjacent block if applicable. However, there is not a handler for double plants for this physics action, and the double plant sets itself to a single plant, but over the water because the breaking was performed on the bottom block in the double plant block group.

Double plants should be set to air completely on a physics interaction by a liquid.

single plant above liquid

Cannot Remove Items from Inventory in Creative Mode

You can't remove items from your inventory. The previous item will come back when you close the inventory.

I think we should add that client side line back in when we did the creative mode inventory pull, but still also keep the server side line.

CanaryMod API

I'm sorry if this is a stupid question but would it be possible to add support for the CanaryMod API? I'm not sure if there would be much purpose to it though but then again you're trying to add support for things right?

Question about the future of Glowstone++

So is there plans for Glowstone++ to be a major thing or is this only for fun because I really want to help out if you have plans to make Glowstone++ a big thing. Things that could help with the success
Of Glowstone++ could be a website, irc chat, official test servers, Github organization so that who's on the Glowstone++ team will be easily defined and you can do a lot more with permissions on repos if a github organization is created. Just wondering :P

Huge memory leaks

There are two huge memory leaks in Glowstone++ right now.

I don't know what causes them yet, but the objects/classes created are:

  • io.netty.util.Recycler$WeakOrderQueue
  • io.netty.util.Recycler$WeakOrderQueue$Link
  • java.lang.ref.Finalizer

Glowstone does have the java.lang.ref.Finalizer leak. I should mention that this leak does not grow nearly as fast as the netty leak.

Information on memory leaks with Finalizer.

I haven't been able to find much about the netty stuff, but here's the class file.

This is not a problem directly caused by Glowstone++. We could be using a library in a wrong manner.

The memory usage climbs fairly linearly. I've seen the eden space grow to 1GB sometimes, from around 7MB.

It only happens while a player is on the server.

repo.glowstone.net is down

This prevents people from downloading libraries necessary for plugin compatibility.

I'll set up a new repo.

Lava and Water is not flowing automatically.

I noticed lava is not flowing automatically in the nether: trigerring manually an adjacent block update updates physics but I forgot to ask for physic updates in the LavaDecorator class.

The same goes for overworld: needs to fix FlowingLiquidsDecorator class.

Will try to do a related PR soon.

The Nether is flat

The Nether look is quite boring...
If you agree I should be able to make a relevant PR soon.

Sunflower

So there was a discussion on how to implement new APIs with Glowstone. I suggested having Glowstone being able to load multiple APIs and translate these methods to an internal API, but the collaborators of Glowstone decided that they were going to only use Bukkit until Glowstone was stable, so I decided to work on a new implementation which I never got around to.

Sunflower.

Sunflower was planned to create a universal wrapper for a server using mappings that would translate methods to that server's internal API. In this case, Bukkit.

Unfortunately, I am extremely busy and couldn't work on anything besides some pseudo code and planning.

So, I was wondering if GlowstonePlusPlus could be the Sunflower server, Helios. Just like Craftbukkit++ transformed into Spigot, Glowstone++ can transform into Helios. Of course, I'm completely fine if @deathcap is not ok with it, and I guess I'll delete Sunflower because I won't have a chance to work on it, and I will work on Glowstone++ instead.

How can I help?

Is there a checklist of things that is needed to be done?

I would love to help on this project.

Parallel world loading/saving

Would it be possible for us to create a WorldLoad and WorldSave thread for each world when they need to be saved/loaded?

I'll make a relevant PR soon.

Test server(s) for Glowstone++ server

Would be cool to have a test server (or more than one) for helping develop and test Glowstone++. Some discussion about this in #8 with @TekkitCommando and @mastercoms. My thoughts, more servers the better, but some ideas:

  • Bleeding-edge server automatically updated with the latest builds from CI (could add a post-build action to circle.yml to copy the build to the server. then somehow have it shutdown and restart with the new build). This could help catch new bugs from the latest commits. Players who want to help out with the project could join this server and mess around, exercise features, report bugs, but it wouldn't be suitable for longer-term play. No guarantee of no data loss, anything goes. Frequent world resets possible (each build? maybe overkill)
  • A more stable server, manually managed and maintained, for longer-term gameplay testing. This could be considered a "real" server in that players would be able to expect the world to stay intact, not resetting unless necessary, so they would be free to build and explore. Although survival mode is lacking, may want to wait until it is fleshed out further before deploying this kind of server. But once its viable it could be advertised to the larger community, with the caveat that it is built on experimental server software, to gain interest in real-world testing of Glowstone++. Obviously such a server would require more administrative overhead, maintenance, moderators, etc., from volunteers (not it). The bleeding-edge server (smoke test? canary?) on the other hand would, if fully automated, have less overhead and still provide many useful development/testing benefits.

Glowstone++ versioned release

I was thinking to mark progress and stability, we should feature a build by versioning it.

This will be great to server owners because they don't know which build is good for their server, and instead have to risk stability and the server being in flux by updating every dev build.

Dev builds will not be versioned. Versioning will just be a way of featuring/marking a build as recommended.

For our first version (0.0.1), I was thinking we should release it once liquid physics and redstone are redone/more complete, we add the new world manager, and add a config for the library manager so people can set to have more libraries download.

Creative inventory actions broken in build 45

/gamemode 1, open inventory, click an item to pick it up then drop in the player inventory, close inventory = item disappears. Same results if shift-click to pickup a stack. At least shift-clicking between inventories now works =). Creative inventory worked in builds before 45. Fallout from:

https://circleci.com/gh/deathcap/GlowstonePlusPlus/45
merge commit: d0b16cf
original PR (not isolated - might be a bad merge on my end):
#484 Fixed window click logic

No structures will spawn

Just quickly have checked how my PRs gets merged and I noticed (but didn't tested anything) the structures can't spawn as the code has diverged at some point.

You clearly don't longer need the SurfaceGenerator (superseded by OverworldGenerator) and to see the structures spawn you need to instantiate the StructurePopulator in the OverworldGenerator constructor.

Populate chunks during initial spawn preload

If persist-spawn in serverconfig is true, instead of just loading and anchoring spawn chunks, chunks should also be populated. This reduces join wait time for players, at the sacrifice of increased server load time, which I think is a reasonable trade off, as server load time is not very important, since admins can and will wait, while players may not want to wait.

Add drone.io again

Drone.io provided downloads without logging in, and we removed it because we shaded sponge, which made glowstone++.jar go over the 10MB limit for drone.io.

Now, we have decided to include plugin suppport in plugins instead of the actual server, so the jar size is less than 10MB again.

Add missing Minecraft commands

Bukkit added server commands up to 1.7, but Spigot's Bukkit update for 1.8 removed all commands from the API because they instead pass through to the official Minecraft server. Glowstone can't do this obviously, so it relies on the commands in the API project, but they aren't updated for any new 1.8 features. Glowkit may have already added some; need to check. Full command list:

http://minecraft.gamepedia.com/Commands

  • /achievement
  • /ban
  • /ban-ip
  • /banlist
  • /blockdata
  • /clear
  • /clone
  • /debug
  • /defaultgamemode
  • /deop
  • /difficulty
  • /effect
  • /enchant
  • /entitydata
  • /execute
  • /fill
  • /gamemode
  • /gamerule
  • /give
  • /help
  • /kick
  • /kill
  • /list
  • /me
  • /op
  • /pardon
  • /particle
  • /playsound
  • /publish
  • /replaceitem
  • /save-all
  • /save-off
  • /save-on
  • /say
  • /scoreboard
  • /seed
  • /setblock
  • /setidletimeout
  • /setworldspawn
  • /spawnpoint
  • /spreadplayers
  • /stats
  • /stop
  • /summon
  • /tell
  • /tellraw
  • /testfor
  • /testforblock
  • /testforblocks
  • /time
  • /title
  • /toggledownfall
  • /tp
  • /trigger
  • /weather
  • /whitelist
  • /worldborder
  • /xp

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Investigate supporting Spigot API additions (Bukkit-Patches)

Glowstone++ integrates the updates to the Bukkit API from the Spigot team (i.e., from https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/browse/README.md) but they also have an additional set of patches on top of the Bukkit API:

https://hub.spigotmc.org/stash/projects/SPIGOT/repos/spigot/browse/Bukkit-Patches

might be worth also supporting some of these APIs, although by their nature they are more experimental, and not all are necessarily applicable.

  • 0001-POM-Changes.patch
  • 0002-Spigot-Timings.patch
  • 0003-Add-PlayerItemDamageEvent.patch
  • 0004-BungeeCord-Support.patch
  • 0005-Add-Arrow-API.patch
  • 0006-Add-Particle-API.patch
  • 0007-Define-EntitySpawnEvent-and-SpawnerSpawnEvent.patch
  • 0008-Entity-Mount-and-Dismount-Events.patch
  • 0009-InventoryClickEvent-getClickedInventory.patch
  • 0010-Added-getAllSessionData-to-the-Conversation-API.patch
  • 0011-Catch-Conversation-API-Errors.patch
  • 0012-Player-Collision-API.patch
  • 0013-Expand-Boolean-Prompt-Values.patch
  • 0014-Add-Getter-for-Entity-Invulnerability.patch
  • 0015-Add-respawn-API.patch
  • 0016-Fix-Plugin-Message-API-Disconnects.patch
  • 0017-Fix-Tab-Completion-for-Some-Commands.patch
  • 0018-Implement-Locale-Getter-for-Players.patch
  • 0019-Add-support-for-fetching-hidden-players.patch
  • 0020-Silenceable-Lightning-API.patch
  • 0021-Remove-deprecation-on-some-player-lookup-methods.patch
  • 0022-Expand-team-API-to-allow-arbitrary-strings.patch
  • 0023-Add-Score.isScoreSet-Z-API.patch
  • 0024-Add-PlayerSpawnLocationEvent.patch
  • 0025-Ease-ClassLoader-Deadlocks-Where-Possible.patch
  • 0026-Fix-slow-tab-complete-for-some-commands.patch
  • 0027-Undeprecate-Player-updateInventory-V.patch
  • 0028-Added-isUnbreakable-and-setUnbreakable-to-ItemMeta.patch
  • 0029-BungeeCord-Chat-API.patch

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

SpongeAPI event implementations

API: https://github.com/SpongePowered/SpongeAPI

Useful references:
Forge implementation: https://github.com/SpongePowered/Sponge
Vanilla Minecraft implementation: https://github.com/SpongePowered/SpongeVanilla
Shared code: https://github.com/SpongePowered/SpongeCommon
Discussion on multi-API coexistence (Bukkit+Sponge): #498

  • org.spongepowered.api.event.AbstractEvent
  • org.spongepowered.api.event.attribute.AttributeBaseChangedEvent
  • org.spongepowered.api.event.attribute.AttributeEvent
  • org.spongepowered.api.event.attribute.AttributeModifierAddedEvent
  • org.spongepowered.api.event.attribute.AttributeModifierRemovedEvent
  • org.spongepowered.api.event.ban.IpBanEvent
  • org.spongepowered.api.event.ban.IpPardonEvent
  • org.spongepowered.api.event.ban.PlayerBanEvent
  • org.spongepowered.api.event.ban.PlayerPardonEvent
  • org.spongepowered.api.event.ban.UserBanEvent
  • org.spongepowered.api.event.ban.UserPardonEvent
  • org.spongepowered.api.event.block.BlockBreakEvent
  • org.spongepowered.api.event.block.BlockBurnEvent
  • org.spongepowered.api.event.block.BlockChangeEvent
  • org.spongepowered.api.event.block.BlockDispenseEvent
  • org.spongepowered.api.event.block.BlockEvent
  • org.spongepowered.api.event.block.BlockHarvestEvent
  • org.spongepowered.api.event.block.BlockIgniteEvent
  • org.spongepowered.api.event.block.BlockInteractEvent
  • org.spongepowered.api.event.block.BlockMoveEvent
  • org.spongepowered.api.event.block.BlockPlaceEvent
  • org.spongepowered.api.event.block.BlockRandomTickEvent
  • org.spongepowered.api.event.block.BlockRedstoneUpdateEvent
  • org.spongepowered.api.event.block.BlockUpdateEvent
  • org.spongepowered.api.event.block.BulkBlockEvent
  • org.spongepowered.api.event.block.FloraGrowEvent
  • org.spongepowered.api.event.block.FluidSpreadEvent
  • org.spongepowered.api.event.block.LeafDecayEvent
  • org.spongepowered.api.event.block.tile.BrewingStandBrewEvent
  • org.spongepowered.api.event.block.tile.BrewingStandEvent
  • org.spongepowered.api.event.block.tile.FurnaceConsumeFuelEvent
  • org.spongepowered.api.event.block.tile.FurnaceEvent
  • org.spongepowered.api.event.block.tile.FurnaceSmeltItemEvent
  • org.spongepowered.api.event.block.tile.SignChangeEvent
  • org.spongepowered.api.event.block.tile.SignEvent
  • org.spongepowered.api.event.block.tile.TileEntityEvent
  • org.spongepowered.api.event.entity.BulkEntityEvent
  • org.spongepowered.api.event.entity.EntityAboutToConstructEvent
  • org.spongepowered.api.event.entity.EntityBreakBlockEvent
  • org.spongepowered.api.event.entity.EntityBreedEvent
  • org.spongepowered.api.event.entity.EntityChangeBlockEvent
  • org.spongepowered.api.event.entity.EntityChangeHealthEvent
  • org.spongepowered.api.event.entity.EntityCollisionEvent
  • org.spongepowered.api.event.entity.EntityCollisionWithBlockEvent
  • org.spongepowered.api.event.entity.EntityCollisionWithEntityEvent
  • org.spongepowered.api.event.entity.EntityConstructingEvent
  • org.spongepowered.api.event.entity.EntityDeathEvent
  • org.spongepowered.api.event.entity.EntityDismountEvent
  • org.spongepowered.api.event.entity.EntityDisplaceEvent
  • org.spongepowered.api.event.entity.EntityDropItemEvent
  • org.spongepowered.api.event.entity.EntityEnterPortalEvent
  • org.spongepowered.api.event.entity.EntityEquipmentChangeEvent
  • org.spongepowered.api.event.entity.EntityEvent
  • org.spongepowered.api.event.entity.EntityExitPortalEvent
  • org.spongepowered.api.event.entity.EntityExpireEvent
  • org.spongepowered.api.event.entity.EntityExplosionEvent
  • org.spongepowered.api.event.entity.EntityHarvestBlockEvent
  • org.spongepowered.api.event.entity.EntityIgniteEvent
  • org.spongepowered.api.event.entity.EntityInteractBlockEvent
  • org.spongepowered.api.event.entity.EntityInteractEntityEvent
  • org.spongepowered.api.event.entity.EntityInteractEvent
  • org.spongepowered.api.event.entity.EntityItemConsumeEvent
  • org.spongepowered.api.event.entity.EntityLeashEvent
  • org.spongepowered.api.event.entity.EntityMountEvent
  • org.spongepowered.api.event.entity.EntityMoveEvent
  • org.spongepowered.api.event.entity.EntityPickUpItemEvent
  • org.spongepowered.api.event.entity.EntityPlaceBlockEvent
  • org.spongepowered.api.event.entity.EntityPotionEffectChangeEvent
  • org.spongepowered.api.event.entity.EntitySpawnEvent
  • org.spongepowered.api.event.entity.EntityTameEvent
  • org.spongepowered.api.event.entity.EntityTargetEntityEvent
  • org.spongepowered.api.event.entity.EntityTeleportEvent
  • org.spongepowered.api.event.entity.EntityUnleashEvent
  • org.spongepowered.api.event.entity.EntityUpdateEvent
  • org.spongepowered.api.event.entity.ExplosionPrimeEvent
  • org.spongepowered.api.event.entity.living.human.fishing.HumanCastFishingLineEvent
  • org.spongepowered.api.event.entity.living.human.fishing.HumanFishEvent
  • org.spongepowered.api.event.entity.living.human.fishing.HumanHookedEntityEvent
  • org.spongepowered.api.event.entity.living.human.fishing.HumanRetractFishingLineEvent
  • org.spongepowered.api.event.entity.living.human.HumanBreakBlockEvent
  • org.spongepowered.api.event.entity.living.human.HumanChangeBlockEvent
  • org.spongepowered.api.event.entity.living.human.HumanChangeGameModeEvent
  • org.spongepowered.api.event.entity.living.human.HumanChangeHealthEvent
  • org.spongepowered.api.event.entity.living.human.HumanDeathEvent
  • org.spongepowered.api.event.entity.living.human.HumanDropItemEvent
  • org.spongepowered.api.event.entity.living.human.HumanEnterBedEvent
  • org.spongepowered.api.event.entity.living.human.HumanEquipmentChangeEvent
  • org.spongepowered.api.event.entity.living.human.HumanEvent
  • org.spongepowered.api.event.entity.living.human.HumanExpChangeEvent
  • org.spongepowered.api.event.entity.living.human.HumanHarvestBlockEvent
  • org.spongepowered.api.event.entity.living.human.HumanInteractBlockEvent
  • org.spongepowered.api.event.entity.living.human.HumanInteractEntityEvent
  • org.spongepowered.api.event.entity.living.human.HumanInteractEvent
  • org.spongepowered.api.event.entity.living.human.HumanItemConsumeEvent
  • org.spongepowered.api.event.entity.living.human.HumanLeaveBedEvent
  • org.spongepowered.api.event.entity.living.human.HumanLevelChangeEvent
  • org.spongepowered.api.event.entity.living.human.HumanMoveEvent
  • org.spongepowered.api.event.entity.living.human.HumanPickUpItemEvent
  • org.spongepowered.api.event.entity.living.human.HumanPlaceBlockEvent
  • org.spongepowered.api.event.entity.living.human.HumanSleepEvent
  • org.spongepowered.api.event.entity.living.human.HumanUpdateEvent
  • org.spongepowered.api.event.entity.living.LivingAddPotionEffectEvent
  • org.spongepowered.api.event.entity.living.LivingBreakBlockEvent
  • org.spongepowered.api.event.entity.living.LivingChangeBlockEvent
  • org.spongepowered.api.event.entity.living.LivingChangeHealthEvent
  • org.spongepowered.api.event.entity.living.LivingDeathEvent
  • org.spongepowered.api.event.entity.living.LivingDropItemEvent
  • org.spongepowered.api.event.entity.living.LivingEquipmentChangeEvent
  • org.spongepowered.api.event.entity.living.LivingEvent
  • org.spongepowered.api.event.entity.living.LivingExpirePotionEffectEvent
  • org.spongepowered.api.event.entity.living.LivingHarvestBlockEvent
  • org.spongepowered.api.event.entity.living.LivingInteractBlockEvent
  • org.spongepowered.api.event.entity.living.LivingInteractEntityEvent
  • org.spongepowered.api.event.entity.living.LivingInteractEvent
  • org.spongepowered.api.event.entity.living.LivingItemConsumeEvent
  • org.spongepowered.api.event.entity.living.LivingMoveEvent
  • org.spongepowered.api.event.entity.living.LivingPickUpItemEvent
  • org.spongepowered.api.event.entity.living.LivingPlaceBlockEvent
  • org.spongepowered.api.event.entity.living.LivingPotionEffectEvent
  • org.spongepowered.api.event.entity.living.LivingRemovePotionEffectEvent
  • org.spongepowered.api.event.entity.living.LivingUpdateEvent
  • org.spongepowered.api.event.entity.living.player.PlayerResourcePackStatusEvent
  • org.spongepowered.api.event.entity.minecart.MinecartEvent
  • org.spongepowered.api.event.entity.player.fishing.PlayerCastFishingLineEvent
  • org.spongepowered.api.event.entity.player.fishing.PlayerFishEvent
  • org.spongepowered.api.event.entity.player.fishing.PlayerHookedEntityEvent
  • org.spongepowered.api.event.entity.player.fishing.PlayerRetractFishingLineEvent
  • org.spongepowered.api.event.entity.player.PlayerBreakBlockEvent
  • org.spongepowered.api.event.entity.player.PlayerChangeBlockEvent
  • org.spongepowered.api.event.entity.player.PlayerChangeGameModeEvent
  • org.spongepowered.api.event.entity.player.PlayerChangeHealthEvent
  • org.spongepowered.api.event.entity.player.PlayerChangeWorldEvent
  • org.spongepowered.api.event.entity.player.PlayerChatEvent
  • org.spongepowered.api.event.entity.player.PlayerDeathEvent
  • org.spongepowered.api.event.entity.player.PlayerDropItemEvent
  • org.spongepowered.api.event.entity.player.PlayerEnterBedEvent
  • org.spongepowered.api.event.entity.player.PlayerEquipmentChangeEvent
  • org.spongepowered.api.event.entity.player.PlayerEvent
  • org.spongepowered.api.event.entity.player.PlayerExpChangeEvent
  • org.spongepowered.api.event.entity.player.PlayerHarvestBlockEvent
  • org.spongepowered.api.event.entity.player.PlayerInteractBlockEvent
  • org.spongepowered.api.event.entity.player.PlayerInteractEntityEvent
  • org.spongepowered.api.event.entity.player.PlayerInteractEvent
  • org.spongepowered.api.event.entity.player.PlayerItemConsumeEvent
  • org.spongepowered.api.event.entity.player.PlayerJoinEvent
  • org.spongepowered.api.event.entity.player.PlayerKickEvent
  • org.spongepowered.api.event.entity.player.PlayerLeaveBedEvent
  • org.spongepowered.api.event.entity.player.PlayerLevelChangeEvent
  • org.spongepowered.api.event.entity.player.PlayerMoveEvent
  • org.spongepowered.api.event.entity.player.PlayerPickUpItemEvent
  • org.spongepowered.api.event.entity.player.PlayerPlaceBlockEvent
  • org.spongepowered.api.event.entity.player.PlayerQuitEvent
  • org.spongepowered.api.event.entity.player.PlayerRespawnEvent
  • org.spongepowered.api.event.entity.player.PlayerSleepEvent
  • org.spongepowered.api.event.entity.player.PlayerUpdateEvent
  • org.spongepowered.api.event.entity.player.UserEvent
  • org.spongepowered.api.event.entity.ProjectileLaunchEvent
  • org.spongepowered.api.event.Event
  • org.spongepowered.api.event.ExperienceEvent
  • org.spongepowered.api.event.GameEvent
  • org.spongepowered.api.event.inventory.BlockInventoryEvent
  • org.spongepowered.api.event.inventory.BrewEvent
  • org.spongepowered.api.event.inventory.BulkItemResultEvent
  • org.spongepowered.api.event.inventory.ContainerEvent
  • org.spongepowered.api.event.inventory.ContainerOpenEvent
  • org.spongepowered.api.event.inventory.CraftItemEvent
  • org.spongepowered.api.event.inventory.InventoryClickEvent
  • org.spongepowered.api.event.inventory.InventoryCloseEvent
  • org.spongepowered.api.event.inventory.InventoryEvent
  • org.spongepowered.api.event.inventory.ItemDropEvent
  • org.spongepowered.api.event.inventory.ItemEvent
  • org.spongepowered.api.event.inventory.ItemExpireEvent
  • org.spongepowered.api.event.inventory.ItemMergeEvent
  • org.spongepowered.api.event.inventory.ItemResultEvent
  • org.spongepowered.api.event.inventory.ViewerEvent
  • org.spongepowered.api.event.message.CommandEvent
  • org.spongepowered.api.event.message.MessageEvent
  • org.spongepowered.api.event.net.PlayerConnectionEvent
  • org.spongepowered.api.event.net.PlayerConnectionRegisterChannelEvent
  • org.spongepowered.api.event.net.PlayerConnectionUnregisterChannelEvent
  • org.spongepowered.api.event.rcon.RconCommandEvent
  • org.spongepowered.api.event.rcon.RconEvent
  • org.spongepowered.api.event.rcon.RconLoginEvent
  • org.spongepowered.api.event.server.query.BasicQueryEvent
  • org.spongepowered.api.event.server.query.FullQueryEvent
  • org.spongepowered.api.event.server.query.QueryEvent
  • org.spongepowered.api.event.server.StatusPingEvent
  • org.spongepowered.api.event.SpongeEventFactory
  • org.spongepowered.api.event.state.ConstructionEvent
  • org.spongepowered.api.event.state.InitializationEvent
  • org.spongepowered.api.event.state.LoadCompleteEvent
  • org.spongepowered.api.event.state.PostInitializationEvent
  • org.spongepowered.api.event.state.PreInitializationEvent
  • org.spongepowered.api.event.state.ServerAboutToStartEvent
  • org.spongepowered.api.event.state.ServerStartedEvent
  • org.spongepowered.api.event.state.ServerStartingEvent
  • org.spongepowered.api.event.state.ServerStoppedEvent
  • org.spongepowered.api.event.state.ServerStoppingEvent
  • org.spongepowered.api.event.state.StateEvent
  • org.spongepowered.api.event.stats.AchievementEvent
  • org.spongepowered.api.event.stats.StatisticChangeEvent
  • org.spongepowered.api.event.weather.LightningStrikeEvent
  • org.spongepowered.api.event.weather.WeatherChangeEvent
  • org.spongepowered.api.event.weather.WeatherEvent
  • org.spongepowered.api.event.world.ChunkEvent
  • org.spongepowered.api.event.world.ChunkForcedEvent
  • org.spongepowered.api.event.world.ChunkLoadEvent
  • org.spongepowered.api.event.world.ChunkPostGenerateEvent
  • org.spongepowered.api.event.world.ChunkPostPopulateEvent
  • org.spongepowered.api.event.world.ChunkPreGenerateEvent
  • org.spongepowered.api.event.world.ChunkPrePopulateEvent
  • org.spongepowered.api.event.world.ChunkUnforcedEvent
  • org.spongepowered.api.event.world.ChunkUnloadEvent
  • org.spongepowered.api.event.world.GameRuleChangeEvent
  • org.spongepowered.api.event.world.WorldCreateEvent
  • org.spongepowered.api.event.world.WorldEvent
  • org.spongepowered.api.event.world.WorldLoadEvent
  • org.spongepowered.api.event.world.WorldUnloadEvent

Crafting is weird

Hi there, this is a cool fork of Glowstone and our code switched to your code and we gave you credits in our read me.
I found out some problems:

  • Crafting is weird(just like original Glowstone xD)
  • Item dumplication when crafting(this is kinda serious)

I really hope you can fix those problems, I tried my best but I can't find where the problem is. Thanks so much. ;D

Implement tile tick format

At the moment, pulse requests are stored within the GlowWorld, and if the server shuts down while something is waiting for an update, then it will forget this. So if water is spreading or the pulse request is used for something else later (e.g. redstone) then if the server shuts down or the world unloads, when it reloads it will freeze in place and wont update until a player manually updates it.

This isn't a super high priority issue, but (as far as I can see), this can be fixed in 2 ways:

  1. When the world unloads, save all of the active pulse requests in the world save.

  2. When a chunk is loaded, force pulse request every block that would accept pulse requests. (Although, this wouldn't perfectly replicate vanilla behavior as floating water doesn't update itself when chunks load, and it might be a little in-efficient)

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Minecraft 1.9

You think it's a gonna be a lot of trouble on our part when 1.9 is released? It should change a lot shouldn't it?

Attachable Blocks are weird with tall grass

redstone torch on redstone torch

I managed to get this beauty by placing one torch on tall grass, while pointing to tall grass behind it, and it replaced the tall grass like you would expect, but then it went on the tall grass behind it. So then, I replaced the tall grass with another torch placement and it placed itself on the face of the redstone torch that was already there.

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.