Skip to content

Property

The Property Manager is used for two things: Players to edit property they own, and every single building in the Storyfire City we make that we add functionality to will be made with it. This is because we want to demonstrate just how limitless our property system is, and how anything that Storyfire can make, a player can make

If there's a mall, a walmart, an apartment, a villa, a resturant, a café, an arcade, a bar, a night club, anything, we will make that using the exact same tools we give to players, no hardcoding.

Property can either be owned by a Player, or by a Corporation

Property Types

There are five types of property: Residential, Commercial, Recreational, Office, and Industrial. Each type contains their own settings, requirements, etc. However, the type of a property is set by the admins when it's built, and it is never changed. You cannot take a public park (Recreational), and call it an apartment building. it has to have been Residential from the beginning to do so.

Every property type has a Bounding Box, and a way to "edit" the property, though the specific things you can change differs from property type to property type. However, every property type saves the Bounding Box as a schematic, and has an option to "open edit mode". This spins up a new instance of a flat world, with just the building schematic, and red-concrete walls placed in the corners of the bounding box. Inside of these walls, you can edit the property (breaking blocks, building, etc). Once you've made your desired changes, you can save the build. If you do not have a rank, you will need to request approval for the changes, in which a moderator will have to manually check and approve the changes to ensure nothing malicious or offensive has been made. Users with a specific rank will be able to bypass this, having the changes be automatically approved, but their rank is used as "collateral", in the sense of, if its revealed they did do something malicious, not only will the building be confiscated & the changes un-done, but they will be banned, losing their rank in the process.

Once changes have been made & approved, you can press the "Refresh" button to refresh the property into its new schematic with the changes for everyone to see.

Note: You can only use this if you FULLY own the property. If its residential and you are not a resident of every room, etc, you cannot use this.

Residential

A residential property can be used as Housing by players. If a player is assigned as a resident to one of these properties, they'll have the option to teleport to that property upon respawning.

A Residential property has the following data fields:

  • Name: [Type: String] Name of the property
  • Residents: [Type: Map of Players+Room IDs] Every player that is a Resident of this property. If a players room IDs are left blank, it will assume they have acess to all rooms. Otherwise, players will only have access to the rooms in that list. If there are multiple rooms, the first room listed will be the one they spawn into. Always put hallways first if there's a hallway
  • Door: [Type: Location] Coordinates of the door to enter. Does not have to be an actual door block, but clicking this location or walking into it triggers the plugin thinking you "entered" the building.
  • Bounding Box: [Type: Bounding Box] Bounding Box of the building. Everything inside of this box is considered to be a part of the building.
    • Floors: [Type: List of Bounding Boxes] Each bounding box represents a floor of the building
      • Rooms: (Subtype of Floors) [Type: List of Bounding Boxes] Each bounding box represents a room
    • Lobby: [Type: Bounding Box] Bounding Box of the Lobby Area. If left blank, it will assume this building has no lobby.

When a player enters a Residential building, the plugin will go through this logic:

  1. Check if the player is a resident in this building
    1. They are a resident in this building: Check if they have a specific room(s) assigned.
      1. The player has a specific room(s) assigned: Send them to an Instance of this property, teleport them to their room. If there is no Instance, create one and send them there.
      2. The player does not have a specific room(s) assigned: Send them to an Instance of this property. Teleport them to the first room of the bottom floor. If there is no Instance, create one and send them there.
    2. They are not a resident in this building: continue.
  2. Check if there is a Lobby in this building
    1. There is a Lobby in this building: Teleport them there, continue.
    2. There is no Lobby in this building. Put them in a black void where they can't move, continue.
  3. Open up a GUI showing every resident of this building. Wait for player to click on one, and send a Visit request to the resident from the player.
    1. The resident accepts: Check if the resident has specific room(s) assigned.
      1. The resident has a specific room(s) assigned: Send the player to an Instance of this property, teleport them to the residents room. If there is no Instance, create one and send them there.
      2. The resident does not have a specific room(s) assigned: Send the player to an Instance of this property. Teleport them to the first room of the bottom floor. If there is no Instance, create one and send them there.
    2. The Resident Declines: Continue.
    3. The Resident does not respond within 30 seconds: Continue.
  4. Send the player back to outside the building, and exit out of the logic check.

While a player is in a building they are a resident of, they are able to Build & Break blocks of the rooms they have access to.

When a player dies, they can respawn in any building they are a resident of, or outside the City Hospital.

Commercial

Commercial buildings are public property, meaning you cannot restrict access to them like you can with Residential. Commercial buildings can only have one floor. For buildings that have a commerical section at the bottom, but residential areas above it, they are actually considered two seperate buildings by the plugin. (Make sure to always leave a small area at the bottom for a door into the residential part when creating the zoning for comercial buildings)

Commercial buildings have the following data fields:

  • Name: [Type: String] Name of the property
  • Bounding Box: [Type: Bounding Box] Bounding Box of the Property Everything inside of this box is considered to be a part of the building.
    • Door: [Type: Location] Coordinates of the door to enter. Does not have to be an actual door block, but clicking this location or walking into it triggers the plugin thinking you "entered" the building.
    • Staff Door: [Type: Location] Coordinates for the door to enter the back area. Does not have to be an actual door block, but clicking this location or walking into it triggers the plugin thinking you "entered" the staff area.
    • Front Area: [Type: Bounding Box] Coordinates of the public part of the property. The door location must be inside of this Bounding Box, or the property can be soft locked (Might have it not let you save the changes if this is detected)
    • Back Area: [Type: Bounding Box] Coordinates of the Back area. Cannot be accessed by players not listed as employees. The staff door location should be in this Bounding Box, or else the back area will be innacessible.
    • Staff: [Type: List of Players] Every player that is a staff of this property. Staff can use the Staff door, kick/ban players from this property, modify store blocks, etc. However, staff cannot empty store blocks's balances, only the property owner can do that.

Store Blocks can only be placed in the Front Area of a Commerical Building. They cannot be placed in the back area, or outside of commerical properties.

Stoor Staff & the Property Owner can place/break furniture/decorations/blocks inside the Bounding Box

Recreational

Coming soon. Will be used for parks, nature reserves, theme parks, museums, etc

Office

Coming soon. Will be used for office spaces

Industrial

Industrial buildings are private property, just like residential buildings. Industrial buildings allow you to place Factory Blocks in them.

Data fields to be written