Code Monkey home page Code Monkey logo

gallery's Introduction

Cuberite

Jenkins Build Status AppVeyor Build Status

Cuberite is a Minecraft-compatible multiplayer game server that is written in C++ and designed to be efficient with memory and CPU, as well as having a flexible Lua Plugin API. Cuberite is compatible with the Java Edition Minecraft client.

Cuberite runs on Windows, *nix and Android operating systems. This includes Android phones and tablets as well as Raspberry Pis; support for small embedded devices is experimental.

Currently we support Release 1.8 - 1.12.2 Minecraft protocol versions.

Subscribe to the newsletter for important updates and project news.

Installation

There are several ways to obtain Cuberite.

Binaries

  • The easiest method is downloading for Windows or Linux from the website.
  • You can use the EasyInstall script for Linux and macOS, which automatically downloads the correct binary. The script is described below.

The EasyInstall script

This script will download the correct binary from the project site.

curl -sSfL https://download.cuberite.org | sh

Compiling

  • You can compile automatically for Linux, macOS and FreeBSD with the compile.sh script. The script is described below.
  • You can also compile manually. See COMPILING.md.

Compiling may provide better performance (1.5-3x as fast) and it supports more operating systems.

The compile.sh script

This script downloads the source code and compiles it. The script is smart enough to notify you of missing dependencies and instructing you on how to install them. The script doesn't work for Windows.

Using curl:

sh -c "$(curl -sSfL -o - https://compile.cuberite.org)"

Or using wget:

sh -c "$(wget -O - https://compile.cuberite.org)"

Hosted services

  • Hosted Cuberite is available via Gamocosm.

Contributing

Cuberite is licensed under the Apache License V2, and we welcome anybody to fork and submit a Pull Request back with their changes, and if you want to join as a permanent member we can add you to the team.

Cuberite is developed in C++ and Lua. To contribute code, please check out GETTING-STARTED.md and CONTRIBUTING.md for more details.

Plugins are written in Lua. You can contribute by developing plugins and submitting them to the plugin repository or the forum. Please check out our plugin introduction guide for more info.

If you are not a programmer, you can help by testing Cuberite and reporting bugs. See TESTING.md for details.

You can also help with documentation by contributing to the User's Manual.

Other Stuff

For other stuff, check out the homepage, the Users' Manual, the forums, and the Plugin API.

Support the Cuberite development team on Liberapay

gallery's People

Contributors

12xx12 avatar ajusa avatar bitdeli-chef avatar madmaxoft avatar mathiascode avatar nilspace avatar seadragon91 avatar tonitch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

gallery's Issues

Use standardized Info.lua

Use the Info.lua file (being newly standardized) to store plugin information and (multi-)command bindings

All area objects should come from a global cache for easier updates

Currently each call to the DB to load an area produces a new instance of the area object table; it is then rather difficult to track these for multiple players and update when needed (removal, locking). It'd be much better to make an "area cache" that would return the same object for the same area. Updates would then mean just modifying a single object instance.

Add config option to block WorldEdit outside galleries

Some servers might want to block WorldEdit usage outside the galleries; since only the Gallery plugin knows about galleries, it's logical that it should be the one responsible for that.

Add a configuration option that specifies whether WorldEdit is allowed outside the galleries.

Add area reset command

This will allow players to reset their area to the original state. Only useful if the area comes from a schematic template.

Snow glitch

You can place snow on other people's claims. Not the block, just regular snow. It sends the "You are not allowed to build here" message but still places the snow. You can not go over 1 block height while placing the snow. This glitch only works if there is already one blanket of snow on the ground.

Add per-gallery biome imprinting

Some galleries may need setting proper biome in order to become useful. If there's a desert-themed gallery and it's assigned the Plains biome by default, then it rains there, which feels weird.

Add CompositeChat messaging support

This would benefit players with newer clients - they could for example list areas and teleport to them simply by clicking the names in the list.

Allow players to name their areas

This should provide better experience. Consider: "/gal goto fountain" vs "/gal goto Village 1453".
Names should be at least world-unique; questionable if globally unique.

Templates missing their metas

When exporting the template using '/gal template', the blocks' metadata is lost. The exported schematic contains metas all zero.
This may be a MCServer bug, but needs to be investigated first

Add maintenance console command: CheckIndices

Command syntax:
gallery maintenance CheckIndices <AdminPlayerName>

This command should walk each gallery and for each area from the first index to the end index check that the area is either claimed or in the RemovedAreas table. Areas that are not found in either should be marked as claimed by the admin player, given as a parameter to the command.

Add allowances

Add a command to let players allow other friends to build in their areas.

Allow config to specify area teleport offset

When using the goto command, the players should be teleported to Area.MinX + Gallery.TeleportOffsetX, Area.MinZ + Gallery.TeleportOffsetZ; the Y coord might be settable, too.

Add area abandoning

Users may decide to abandon an area, make it possible for them to specify this, with other users possibly adopting the abandoned area later.

Although theoretically possible, reusing abandoned areas for new area claims is a bad idea, because that would effectively destroy the area's contents, which may already be something valuable.

Allow users to turn auto-teleport on claim on / off

The auto-teleport after claiming an area seemed like a good idea, but in reality it feels kinda weird. It would make sense to allow users to be able to turn it on or off by themselves. The state should be persisted to the DB. Use a syntax for the command that assumes further similar settings will be made available soon(ish).

Workflow:
1, Issue command /gal set teleport-on-claim false
2, The teleport is switched off for this player
3, Issue command /gal set teleport-on-claim true
4, The teleport is switched on for this player

Add interoperability with WorldEdit plugin

The WorldEdit plugin currently knows nothing about the galleries, so it allows players with WE rights edit any area.
The basic requirement would be to disable WorldEdit for entire galleries. If it is possible / reasonable, per-player allowed regions would be better.

Backup an area before a reset

When using the /gal reset command, the area's contents should get backed up to a file before being erased. Just in case.

Fix rclk templating with BLOCK_FACE_NONE

When templating, right-clicking a block under a torch while holding a placeable block results in selecting {-1, -1}. That is because the client sends BLOCK_FACE_NONE coords, since the placement is invalid in such a place. Either don't select such coords, or use line block tracer to calculate the real coords.

Enable downloading a specific area via RCON

A feature minor to normal server admins, but crucial to using Gallery for MCServer's own generator-template management, is to allow RCON usage and especially allow "downloading" individual areas through RCON.
The idea is that the plugin would register a console command that would handle the queries, return the metadata (possibly in a Lua / JSON format), and one special command would make it output a .schematic file for the specified area as the command output.

Generating hooks affect all worlds

When multiple worlds are set up in Cuberite, the Gallery's generator hooks are fired for all such worlds, generating gallery-areas in worlds where they don't belong.

Add administrative-level overrides

Most commands and actions require that the user is the owner of the area. However, admins should be allowed some control, too. For example, admins should be able to name users' areas, or modify their contents. Power-users may be allowed to use "goto" to any area, not only their owned.

Add area removal

Admins should be allowed to "revoke" areas, mainly meant for dealing with trolls claiming and then not using areas. Such a revoked area should be made available for new claims.

"Buddy" system

Let players decide they are buddies, so they automatically share all their areas, can build on one another's areas, allow or deny friends etc.

Q.: Do we make the buddy relation symmetrical, or not?
Symmetrical is more "brotherly", but requires acceptance from the other player (otherwise anyone could buddy an admin). Single-direction ("I trust him, so I give him my areas") would be easier to implement.

Error when placing blocks in a second world

Have two worlds on the server, one of them has Galleries defined in it. The player is in the other world (the default world). Whenever the player places a block, an error is output to the console:

[13:55:36] LUA: Plugins/Gallery/Gallery.lua:320: attempt to index field '?' (a nil value)
[13:55:36] Stack trace:
[13:55:36]   Plugins/Gallery/Gallery.lua(320): GetPlayerAreas
[13:55:36]   Plugins/Gallery/Gallery.lua(532): FindPlayerAreaByCoords
[13:55:36]   Plugins/Gallery/HookHandlers.lua(62): (no name)
[13:55:36] Stack trace end

Coop with world generator

The plugin should cooperate with the world generator - if a chunk is being generated that is intersecting a gallery, the chunk should receive the gallery template.

Idea: Messaging

It would be nice to be able to leave a message for players, associated with a specific area of theirs - for example "Fix the missing corner" etc. Such messages should be stored until the player connects, then displayed to them using a somewhat interactive menu, allowing the player to replay the message, delete it, go to the associated area etc. The messages should be announced when the player connects, so that they get a notification.

Lock approved areas

The areas that have been approved should be locked even for their original authors, to prevent malicious authors to grief MCS's generator by building stuff that gets approved and then destroying the built area.

Allow only limited number of areas per player

To help battle abuse, the plugin should allow players to claim only a limited number of areas. Once they hit the limit, they will not be allowed to claim new areas. Admins can enlarge the limit for individual players.
Questions:

  • global limit, or per-gallery limit?
  • total limit, or time-based limit (5 areas per hour) ?
  • default limit dependent on user's group (how? what with multiple groups?)

Can we detect if the player has modified an area "enough" to consider it a unique area? That way, normal happy users won't ever reach the limit, because once they build something, it is excluded from their limit, yet it would still eliminate malicious abusers trying to claim too many areas.

Add filtering for "/gal my"

Use the syntax /gal my <filterpattern> and /gal my @<playername> <filterpattern>, so that player can view only areas they're interested in. Use Lua pattern matching.

Add player statistics

Add a command to display the players with the most claimed areas and the most claimed areas approved by admins.

Add "area forking"

Add a new claiming method that would claim a new area and copy contents of another area into it. Only areas in the same gallery may be forked.

Add extended help system

Some commands have multiple forms available, and even the admin overrides, so it would be good to have a help system that would list all the available forms for the user.
The idea is to define an array of help items, each containing the permission needed, the params and the action performed; then provide a /gal help command that would process these and output the proper help to the user.

Major Issue: Claiming areas in unloaded chunks.

Claiming only works if the area is in a chunk that is currently loaded. If the chunk is not loaded, the area template schematic will not be written to it. This needs to be solved properly. Not sure if there is a way to solve this completely in the current API, though.

Add admin function to create area template schematic

Admins are quite unlikely to have a .schematic file laying around that they'd want to use as a template for the areas. Rather, they are likely to build an area themselves and then use it as the template. The plugin should provide an easy method for doing this.
Workflow:

  1. The admin builds the area template
  2. They issue a /gal template FileName command
  3. The plugin instructs them what to do next - left-click and right-click opposite corners of the area
  4. The admin left-clicks and right-clicks the opposite corners of the template
  5. The plugin saves the template into the "FileName.schematic" file. Both clicked corners are included in the area.

Add area info command

The command will print information on the area that the player is standing on.

For regular players, only their areas can be info-ed. For admins, any area can be info-ed, possibly showing more information.

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.