MCTowns
MCTowns is a powerful way to manage towns.
- Create Towns, assign them Territories, and let mayors divide them up into Plots on their own.
- WorldEdit backend means you can use WorldEdit CUI and all of your favorite WorldEdit commands to create regions of any size and shape
- WorldGuard backend means lightning-fast performance and rock-solid stability
- Mayors can restrict town membership to only people they invite, or open it up to anyone who can afford a plot
- Saves you time and reduces the workload on your moderators!
- Mayors can manage regions within Territories that have been assigned to them
- No need to ask a mod every time someone wants to join your town, or you need a new plot created.
Contact
- Send me a PM on BukkitDev. I will always respond to these.
- Post a comment here. I'll probably respond to this.
- Email [email protected]. I will always respond to these.
Basic Commands
- /mct -used for adding and deleting towns, querying basic info, etc
- /town -used to manage towns, including inviting players and adding territories
- /territory -used to manage territories, including adding plots
- /plot -used to manage plots, including adding players to plots
Metrics Collection
MCTowns tracks some stats about who uses it. They're primarily for me to feel good about myself when I see people are actually using what I make, or (in the case of bug reports) are so that I can improve the plugin so that I can continue to feel good about myself when I see people are using the plugin.
MCTowns uses MCStats. To learn what is collected and how to opt-out of collection, see the following official MCStats page:
http://mcstats.org/learn-more/
Note that as of v2.1.0, most bugs will be automatically reported for you. See the page on Automatic Bug Reporting for more information.
Donate with Bitcoins: 1PYEc82xEK1A3jCsYTAZ7mnS9t34Et9bYh
Everything on these pages and associated wikis is licensed under the GNU Free Documentation License
Project Logo courtesy of th3cleaner_mcserver.
Looks really interesting!
@Endimmion
As of right now, no. Off the top of my head, though, it wouldn't be too hard to patch in.
Will a player be able to be resident of several towns? That's a huge limitation in Towny
Layout of the CLI
And here's my most recent (about 10 mins ago) update:
Here's an update on my progress!
Things I finished since last TODO list: -implement warping (to own spawn & to foreign spawn) -implement the town block bank -implement adding/removing players to/from a town as a resident of the town -implement adding/removing players to/from territories. districts and plots -display MOTD and other relevant info on login
TO DO: -implement check tool to see if a WG region is managed by MCTowns -implement flag management via MCTowns -finish implementing assistants -implement moving of plots within a district -implement listing of towns, territs in a town, dists in a territ, and plots in a dist -display MOTD to players on spawn warp -move players to their town spawn on death
I'm going to start refocusing what I talk about in this thread a bit. I'll pick a different facet of the plugin each update and talk about it, as well as including any other interesting tidbits as I think of them.
So, today: The Town Block Bank and the Town Join Invite/Request System
Block Bank: I tried to stay away from using an economy plugin, mainly because I feel like they don't mesh very well with minecraft as a whole. Also, it seems like every server uses a different one, so even with a 'meta' plugin like Register, it still has a lot of compatibility/portability issues.
So, that brings us back to the Block Bank. It's pretty simple. Say I'm a player named Everdras who is a normal member of a town called Anvil. I've been mining all day and have a ton of cobblestone that I don't need. I remember the mayors of Anvil had been talking about needing more stone to build a wall extension. So, I figured I'd help out! I just type /town bank deposit cobblestone 300.
And boom, 300 gone from my inventory, 300 added to the town's bank. Now, whenever a mayor logs in, they can go to build the wall and go "Oh, cool, here's some cobblestone we can use to build the wall right here in the town bank!"
With such a simple concept, there's a lot of "sprinkles" I could put on the idea. Maybe put a "Biggest Donators" list that stores info on who donated the most to their town of the entire server? Maybe I should make it so that withdrawls and deposits can only be made from within one of the Territories of a town? I could integrate some sort of block tax, etc etc. Lots of ideas here. For MCTowns v1.0.0 (Release), I'm only aiming for the core bank system.
Town Join Invite/Request System
As I was writing the "add this player as a resident of this town, but don't put him in any WG regions yet" method, I finally had to make a design decision I'd been balking at for a while. How do I make it so that a player has some sort of say in whether or not he's added to the town? The simple, plain-English answer that comes to mind is "Ask him, duh!"
So I thought around. This is definitely an important part of the town management system. So I considered, how did I do it when I was still just using raw WorldGuard to manage towns? Well, simple. I was lucky enough to have already been a Senior Mod by the time I was making my town back then, so I was able to modify WorldGuard protections myself. So all I had to do was be online when someone wanted to join. But what if I wasn't online? Tough, no-one could join my town. And what about the non-mods who owned towns? Not only did they have to be online, they also had to have a mod online at the same time who was willing to help them. It was a terrible mess for everyone involved. Plus, it strained the mod team, especially when we had lots of normal non-town traffic.
So I thought, I can definitely do better than THAT. So the next step is, look at existing solutions. How does Towny do it? They handled it in a way pretty similar to the plain-English way. The mayor invites a player, the player gets a message saying "so-and-so wants you to join their town" and you typed /accept to join. Simple, clean, easy. I liked it, but there were still some small qualms I had. While I took the whole "I need a mod online to even do this simple task of adding people to my town" problem out of the picture, it still had the lingering issues that the Mayor needed to be online for people to be able to join his town.
So, I started thinking. Well, we can't just let players join all willy-nilly without the mayor's approval. But we can definitely help ease the issue. So, I came up with my solution. Addressing the worst-case scenario (mayor is offline, player still wants to join), the player will be able to submit a "Request" to join the town. Then, when the mayor logs in, they get alerted to the fact that there is a "join request" pending. Then, they simply submit an invite to the player and the plugin handles the rest on its own (even if the player has since gone offline). The reverse works similarily. For a mayor to be the one to make the first move, they submit an invitation to an online player. The mayor could then log off, and the player log on, and the player is notified of the pending invite. They then submit a request, and they're added!
Essentially, when an invite and a request match at any time, the player is added to the town. Should the player not wish to join, or the mayor not wish to accept an invite, they can simply decline it.
And finally, a note on release dates: After I get all of my "core" functionality done, I'm going to force myself to stop adding new features. I'll then focus on fixing bugs that pop up in Alpha and Beta, and in the meantime I'm going to pore over every bit of my code in what I'm going to call the "REFACTORING RAMPAGE." Basically, I'm going to look over my code and try to take the terribad out of it wherever I can find it.
Then, once refactoring is done, I'm going to work through to get JavaDoc done for every inch of the code. If I remember correctly, that was one downfall of Towny (and, in all fairness, many OSS projects) was that very little of the source code was documented.
Here are my past update messages from my server's private forums:
Little update on progress:
I've worked out a lot of kinks I hit initially (I realized I'd never actually tried to serialize such a customized and extensive database before), and laid out a lot of the groundwork for all the features.
It'll support multiple worlds. Aside from the overall permissions (defined in the server config files), there will be a few levels of permission.
Block-modification permissions will be handled completely by worldguard, and as such is heavily based on inheritance. The mayor and assistants will be omnipotent, then other players can be manually added to plots, districts, and territories individually. Organizationally, the Mayor will have Mayor-Level powers and the Assistants will have "pseudo-mayor" powers. Essentially, an assistant can do anything a mayor can do except very tip-top things (like completely deleting the town.)
The hierarchy of regions will be:
A Town doesn't have a protection of its own. It is instead comprised of Territories. A Territory has its own protection region, and inside that region are Districts. A District has its own protection region, and inside that region are Plots. A Plot has its own protection region.
So: Town > Territory > District > Plot.
I've done a lot of work to make adding people to towns and removing them, as well as adding and deleting the individual regions completely Fire and Forget. In this case, that means that any additional cleanup is done automatically. So, if I delete a Territory, the territory is deleted as well as all its districts, and all the districts' plots. Removing a person automatically cleans their names from all other regions.
So far, that's all that's either implemented or about to be implemented.
Another progress update:
I've got everything related to managing regions implemented and somewhat tested. So, I can make and remove Towns, Territories, districts, and plots.
In short, here's a to-do list before I move it to Alpha (and we start testing it! yay debugging):
TO DO: -implement check tool to see if a WG region is managed by MCTowns -implement warping (to own spawn & to foreign spawn) -implement flag management via MCTowns -implement the town block bank -finish implementing assistants -implement adding/removing players to/from a town as a resident of the town -implement moving of plots within a district -implement adding/removing players to/from territories. districts and plots -implement listing of towns, territs in a town, dists in a territ, and plots in a dist -display MOTD to players on login and spawn warp -move players to their town spawn on death
@glowfisch
I tried to stay away from using an economy plugin, mainly because I feel like they don't mesh very well with minecraft as a whole. Also, it seems like every server uses a different one, so even with a 'meta' plugin like Register, it still has a lot of compatibility/portability issues.
As for adding land, chunks have nothing to do with it. That's one of the things I didn't like about any of the Towny flavors, that everything was based on either chunks or on some arbitrarily chosen static "town block" size.
As for town tags, I'm not planning on messing with chat yet. Mainly because I feel like other plugins like HeroChat (alongside GroupManager) do it better than I could trying to implement my own system. There will, however, be a sort of global "lookup tool" where you can just type something similar to "/mct lookup player Everdras" and it'll tell you all about the town I'm in, like my rank in it and other such tidbits.
As-is, players cannot give themselves more land on their own. The hierarchy is:
1. Town 2. Territory 3. District 4. Plot
The "Town" isn't represented in-game in any tangible way. The Territories of the Town are where people build, as a Territory is what has the WorldGuard region associated with it.
So, as-is, admins define territories for mayors, then once the territory is added to the town, the mayors are free to divvy it up themselves into Districts, and then divvy those individual districts up into plots. As a server manager, I designed this with the sanity of the mods in mind. In essence, I feel like this will be a median between just using plain ole' WorldGuard regions to manage towns (which is ultimately flexible, but very moderator-intensive) and Towny (which has a lot of draconic structural features, but puts very little stress on the mod team).
I'll start copying the posts I make on my server's forum over to here too.
Oh, and a last note, on customization. So far, with a lot of what I've implemented, all the "options" you'd want can be configured using the Permissions nodes I've included. There's not really a lot of "turn this on" or "turn this off" yet since I've mainly just been hitting core functionality so far. The main configurations you'd be concerned with are about who can do what, which is exactly what Permissions is for.
when do you think that it will be finished?.
love* this give towns a bank/donation system based on blocks, not money.
i hope that your planing on adding a Config file to disable/enable the programed features
add a system based on items (not economy) to claim more land xx item = x chunks
(and an admin command to give a specific town more land with a simple command [/mct addland amount] (this counted in chunks)
and If you you could add an tag. of the town your in.. as a prefix then that would be super !!! Perfect
keep us up to date :)
Sounds good. I look forward to being able to use this on my server.