marcelo-mason / PreciousStones

Self-service protection for Minecraft servers
http://dev.bukkit.org/server-mods/preciousstones/
56 stars 66 forks source link

A way to handle city protection #825

Open Zillew opened 9 years ago

Zillew commented 9 years ago

Due to a number of reasons, we would like to remove our city protection and simply protect the entire world the city is on. However, we still want to use the city plots.

How can we go about protecting the whole world without the flags from the world overriding the plots flags?

Example: If we were to use WorldGuard, the global flag, how can we make PS have the upper hand?

Or maybe there is a way within PS of protecting an entire world, but still allowing plots to decide over the world protection?

Taybosquee commented 9 years ago

WorldGuard regions/flags will always take priority over PreciousStones fields and there is no way around this. You'll have to either convert your plots to WorldGuard regions (That have a higher priority than global region and allow building for whitelisted players) or not use WorldGuard at all on that world and instead make a PS field that covers the entire world (I haven't actually tried this; it may cause performance problems) and give your plot fields the plot flag (If they don't already have it). The players whitelisted in the plot fields can still build and no one besides people with the PreciousStones bypass permissions or whitelisted people can build outside of those plots.

Zillew commented 9 years ago

That is exactly how we currently do it. The issue however, is that when it's done like this, players can not create "sub plots" (so they can't plot their apartment blocks, for example).

This is a pretty large setback for a modern server where we encourage players to choose from a variety of careers, including the 'Estate' career which relies on sub-plots being placeable, and size-able.

Thanks, Zillew

marcelo-mason commented 9 years ago

I can make something like a "global" flag you can add to these type of world sized fields that can give them special functionality. What kind of functionality would be useful in your case?

Zillew commented 9 years ago

We recently stopped using a "whole world" for the city, now we have multiple cities/towns around one world. Basically this is what we're currently doing:

City protection (the whole city) > City plot (apartment blocks & other buildings) > Sub city plot (individual apartments etc.)

Basically we want the owners of the City plots to be able to create and re-size the Sub city plots, without needing an Admins help. This is currently not possible because they don't have perms to the City protection... So ideally it would be good if when placing/sizing plots, it checks if the new protected area is in a plot which they own, if so, it ignores whether or not it's in a city protection?

Thanks, Zillew

Taybosquee commented 9 years ago

I've found a solution, although it's not perfect because of a few things. Here's the fields http://pastebin.com/fPG0acWU and I'll explain the limitations and the setup I used. First, place the "City Protection" field. That field would stop people from building server wide (Although of course you could change it for your needs). Then, you place the "City Plot" field within the City Protection and set the owner of the City Plot to who ever you want to be able to modify the plot and plots within the plot. Once allowed, that player can then place the "Apartment Plot" fields anywhere within their field (Manually drawn) as long as it doesn't reach /outside/ their "City Plot" (See issues below.). The owner of the "City Plot" field can then allow (By "/ps allow"/buy/rent/ect) people into the "Apartment Plot" without allowing them into the City Plot or City Protection.

Now the down sides. This is all done with the use of the plot, anti-plot, and no-conflict flags. In order to make the plot's plot fields be resizable, the "City Protection" field has "no-conflict: true" enabled. This means that the owner of the "City Plot" field could potentially place other PS fields within the City Plot (If they have the permissions to) that expand outside of the City Plot. They would not be allowed to place ones that overlapped other City Plot fields or any field besides the City Protection, but may be able to say, set claim to more area of the city bordering their own plot. Also, the player you want to manage a specific City Plot has to be set as the owner to the City Plot field as just allowing them as a member will not let them resize the Apartment Plot fields. This would allow the owner of the City Plot to modify the area the City Plot covers even extending it out into the city more.

Essentially this does just what you were trying to do but introduces some minor issues in doing so. I can think of multiple ways around the draw backs but I don't know much about your personal setup as far as the kind of permissions (Not to mention game mode) these players have access to.

Zillew commented 9 years ago

Thanks for the advice, going to give it a shot :)

Taybosquee commented 9 years ago

If the suggestion I just posted gets implemented, you should add that flag to the "City Plot" field to prevent the issue I mentioned. Otherwise, you'll have to come up with something using permissions and/or not letting players be able to touch the City Plot field.

Zillew commented 9 years ago

I gave the city plot a volume instead of giving it height etc. (Just like the sub plot, or apartment plot is set up in your example). Not tested yet, but the idea is that city plots will be placed by government officials only, and if placed by someone not "allowed" in the city protection, they will not be able to extend out of their own plot.

Really not sure if it will work, but I'm hoping it will :)