Minecolonies needs more interaction among players.
Playing on a Minecolonies server essentially requires you to make and manage an entire colony.
Giving someone any permission grants that permission across the whole colony territory.
Deeds solve all of these problems.
Feature description
Ownership of a colony allows colony owners, or those given permission by the owner, to create deeds which give other players specific permissions within specific areas of the colony territory. Subdeeds can be created from deeds, allowing recursive granting of permissions by deed holders. While this system in any form would be immensely helpful, there are some extended features that the system would need to reach its full potential. Some of the features may sound strange, but they are all useful and are carefully designed to cover a huge array of uses in multiplayer and future proof the deed system to possibly be extended in other ways later on.
Notes or related things
The deed system would be useful beyond words for multiplayer. Players could be given control over separate districts of the colony, as if they were city planners or members of the colony's hierarchical government. Players could be given limited permissions of a small house-sized area so that they can build a home and live in a colony to get the MineColonies experience without having to manage a colony. When using Minecolonies as the sole source of grief protection, non-Minecolonies players can get that protection without having to interact with the mod. All of this will be made possible without players even having to gain the colony owner's trust. It is completely worry free for the colony owner. The players can only do whatever is set in the deed, and only within the allotted areas. Do you have an area in your colony where no building fits and you don't feel like building something there? Create a deed with zones outlining the exact area, sell it to a player, and have them build something! They get a home protected from griefing, you get that spot filled for aesthetics, and you have a player to trade with or get help from around the colony. Players who like designing and building could buy large deeds from a colony, build homes in them, and resell subdeeds for each home to other players. Colony owners could hire players to do jobs in the colony and give them deeds to grant the permissions needed to accomplish the desired tasks. I and others have desperately wanted this system on MineColonies servers, often with completely different goals in mind that we would use the system for. The possibilities are endless.
Deeds are defined by:
Zones: a set of rectangular volumes outlining the areas this deed is giving permissions for. The zones do not have to be within the colony territory, but if this is a subdeed, then the zones do need to be within the zones of the superdeed and the associated permissions of each zone have to be a subset of the permissions of the zone they are in.
Permissions: A set of actions for each zone which the deed allows its owner to commit within the zones, e.g. interact with blocks, break blocks, pick up items, etc.
Sublettable: Boolean value that allows the creation of subdeeds from this deed when true.
Duration: Amount of time that the deed is active from the moment it is used. This duration could be for short term permission to pass through an area or do something in the area, or for long term permission like renting homes and large areas. Ideally, both real life time and server time need to be options when setting the duration to cover both cases where you want server downtime to be included and where you don't want it to be included.
A system is needed to preview deed areas. Possible solutions:
Clicking a deed linked in chat displays a preview in the world of the rectangular volumes of the deed’s zones.
Clicking a button when hovering over a deed creates an unofficial copy in your inventory with no purpose other than showing a preview of the deed’s zones in the world when the copied deed is held. Sneaking while looking at a zone shows its permissions. A good practice would be to copy Create’s ponder hotkey, as that is similar to this system, so use “hold W” as the default key to make preview deeds. This action needs to work any time a deed is being hovered, even if the item doesn't actually exist in an inventory the player is using. The only criteria should be that the deed's tooltip is showing, so that a copy can be made even if the deed is for example linked in chat or being looked at in a Lightman's Currency shop.
Deed Creation, Usage, and Management
Desk: A block where players add deeds to the colony, create deed items, and create subdeeds from sublettable deeds. Those with permission can see all deeds assigned to players for the colony this desk is in and add or remove players' deeds. Viewing and editing deeds are separate permissions. Players can see all of their own deeds for the colony the desk is in and create subdeeds from them if allowed to do so.
Deed Items: Deeds are stored in the colony, not the items. The items simply reference deeds stored in the colony. Given all the different functions of deed items, to avoid missclicks, they need separate modes which are set when a deed item is created at the desk:
Applicator - this mode applies the referenced deed to players when used on them (requires either colony permission or ownership of the superdeed if this is a subdeed)
Consumable - using deeds in this mode applies the deed to you and consumes the item (usable by anyone)
Edit - provides functions for editing the referenced deed (requires either colony permission or ownership of the superdeed if this is a subdeed)
This UI shows when sneak+using a deed item in edit mode:
Left and then right clicking with the deed in the world adds zones to the deed. New zones automatically go to the last edited permission group. Zones can be dragged between permission groups. Each zone has a delete button. Permission groups can be renamed for convenience. In the UI mock up, the default “Permissions 1” and “Permissions 2” were renamed to “House” and “Gate”. House includes a few zones which outline a building and would give many permissions which one would need for living in a home. Gate has just one zone which outlines a gate that the holder of this deed will need to open to get to their home, so the only permission needed for that group would be block interactions to allow the opening of the gate in Zone 3.
Deeds can be applied to players 3 ways:
at the desk using the UI that shows all player deeds
by using an applicator deed on a player
by players using a consumable deed to apply the deed to themselves (the only method that consumes deed items)
Implementation Details
Storage:
Each colony stores a list of all deeds which are then referenced by the various deed game mechanics.
Each player has a list of deeds.
Each colony has a list of default deeds which is applied to all players.
Deed items store which deed they reference. The deed items are more like tools for editing deeds and applying deeds to players than actually acting as deeds themselves.
The server load may unfortunately be quite high, as players who are building in colonies will be rapidly breaking and placing blocks within short periods, creating spikes in demand on server resources with all of those actions requiring bounding box checks. Players with many deeds and many zones inside those deeds will bring the highest performance cost, as every zone will have to be checked before denying permission for an action. Optimizations will be necessary.
Storing deeds per player will mean that players with no deeds will quickly resolve to permission denied. Players with universal permissions from the original permission system will skip this system entirely, although they can still have deeds stored in case they ever lose their universal permissions and have to revert to the deed system.
Bounding volume hierarchy (BVH) could be used, but it likely wouldn't bring much improvement. That method avoids having to check more detailed bounding boxes, but most player actions will occur where they already have permission since players have no reason to attempt actions elsewhere. BVH would only help with players who have many deeds that need to be narrowed down quickly, a case which wouldn't happen often as most players will likely just use this system to grant other players single homes in their colonies, requiring only 1, maybe 2 deeds per player and a small number of zones per deed.
The best optimization would be a cache system which optimizes for access of each player's most recent deed and zone which resolved to grant permission. Players will mostly be breaking and placing blocks in quick succession and in a small area that they know they already have permission for, so the vast majority of permission checks will be for the last player that permission was checked for and in the exact same deed and zone that was checked. Every permission check will end as soon as it finds a zone that grants permission for the requested action and position, so store the necessary indexes to immediately check that zone on the next permission check, then check the associated deed first before moving on to other checks. When a deed is removed from a player at the desk or by duration expiry, that player's cache will have to be checked and cleared if the removed deed is being referenced by that cache.
The ability to place blocks and use blocks, even just in a limited area, gives access to some of the colony's systems that can't be allowed. A few extra permissions will be needed on top of the original permission system to prevent this access. To start with, the following are needed:
Permission to use postbox blocks, separate from the basic block usage permission.
Permission to place stash blocks, separate from the basic block placing permission.
Viewers
Add a thumbs-up to the feature request to vote for it. This helps the request become more visible to the team and doesn't clutter the comments.
Add a comment if you have any insights or background information that isn't already part of the conversation.
Prerequisites
Context
Is your feature request related to a problem?
Deeds solve all of these problems.
Feature description
Ownership of a colony allows colony owners, or those given permission by the owner, to create deeds which give other players specific permissions within specific areas of the colony territory. Subdeeds can be created from deeds, allowing recursive granting of permissions by deed holders. While this system in any form would be immensely helpful, there are some extended features that the system would need to reach its full potential. Some of the features may sound strange, but they are all useful and are carefully designed to cover a huge array of uses in multiplayer and future proof the deed system to possibly be extended in other ways later on.
Notes or related things
The deed system would be useful beyond words for multiplayer. Players could be given control over separate districts of the colony, as if they were city planners or members of the colony's hierarchical government. Players could be given limited permissions of a small house-sized area so that they can build a home and live in a colony to get the MineColonies experience without having to manage a colony. When using Minecolonies as the sole source of grief protection, non-Minecolonies players can get that protection without having to interact with the mod. All of this will be made possible without players even having to gain the colony owner's trust. It is completely worry free for the colony owner. The players can only do whatever is set in the deed, and only within the allotted areas. Do you have an area in your colony where no building fits and you don't feel like building something there? Create a deed with zones outlining the exact area, sell it to a player, and have them build something! They get a home protected from griefing, you get that spot filled for aesthetics, and you have a player to trade with or get help from around the colony. Players who like designing and building could buy large deeds from a colony, build homes in them, and resell subdeeds for each home to other players. Colony owners could hire players to do jobs in the colony and give them deeds to grant the permissions needed to accomplish the desired tasks. I and others have desperately wanted this system on MineColonies servers, often with completely different goals in mind that we would use the system for. The possibilities are endless.
Deeds are defined by:
A system is needed to preview deed areas. Possible solutions:
Deed Creation, Usage, and Management
Implementation Details
Viewers