DevotedMC / PrisonPearl

Minecraft plugin which allows players to imprison other players inside ender pearls. Check branch v1.9-master for 1.9 support.
https://www.devotedmc.com/prisonpearl.html
BSD 3-Clause "New" or "Revised" License
1 stars 1 forks source link

Full spec for ExilePearl #5

Open ShadedJon opened 7 years ago

ShadedJon commented 7 years ago

ExilePearl

"PrisonPearl for Pussies"

PrisonPearl was a plugin designed to let players control justice on a Minecraft server. They could control chaos and imprison griefers, or enslave entire nations.

What was created was a tool left entirely open to abuse, especially by large coordinated groups.

Instead of making actions have consequences, it made total abuse entirely possible.

ExilePearl tries to limit the downsides of a tool that allows banishment, with the upside of controlling griefers and criminals.


Feature one: Exiling someone.

Same as with PrisonPearl, simply kill someone with an enderpearl in your hotbar and you will receive an ExilePearl. That person who was exiled is now randomspawned instead of sent to the end. Their name is added to a flatfile and they will face a loss of permissions. Not sure if you want to plug into PEX for this or handle it internally.

Feature two: Being exiled and loss of perms.

Loss of privileges (for Devoted) when exiled, each of these needs to be toggleable in the config:

Cannot break reinforced blocks. (Citadel can stop damage, use that) Cannot break bastions by placing blocks. (Might need bastion change) Cannot throw enderpearls at all. Cannot enter a bastion field they are not on. Same teleport back feature as worldborder. Cannot do damage to other players. Cannot light fires. Cannot light TNT. Cannot chat in local chat. Given a message suggesting chatting in a group chat in Citadel. Cannot use water or lava buckets. Cannot use any potions. Cannot set a bed. Cannot enter within 1k of their ExilePearl. Same teleport back feature as worldborder. Can use a /suicide command after a 180 second timeout. (In case they get stuck in a reinforced box). Cannot place noteblocks.

Exiled players can still play, mine, enchant, trade, grind, and explore.

Options we'll need in the config as well, but which we current want turned to off:

Inability to mine. (Adventure mode) Inability to use potion stands. Inability to use enchanting tables. Dependency with Towny: Disallow players from entering towns they are not in. Dependency with Factions: Disallow players from entering enemy faction land.

Feature three: Finding a raider who dumbly exiled his friend for some reason.

When killed, an Exiled prisoner will broadcast their pearl's location to the murderer. Same feature as in the end with PrisonPearl.

Feature four: PrisonPearl for now.

I'm interested in keeping PrisonPearl in for extreme cases. This will be probably the highest pearl cost of all servers.

The way I'm thinking it'll work is using a vault factory on an exile pearl to convert it to a prisonpearl. It'll cost 8 of each T3 material just to run the recipe.

So we'll need a way to toggle ExilePearl or PrisonPearl on the pearl.

I'm thinking a simple rename to PrisonPearl should be enough?

ProgrammerDan commented 7 years ago

I'm thinking a simple rename to PrisonPearl should be enough?

PrisonPearls have to be created within the plugin, just calling the pearl a PrisonPearl doesn't necessarily do anything :p

But toggling should be do-able.

Aleksey-Terzi commented 7 years ago

What about development? What did you decide? I see Gordon created his own branch in ExilePearl project. I don't think this will be reasonable to start development by few developers at the same time and do the same work :)

PrisonPearls have to be created within the plugin, just calling the pearl a PrisonPearl doesn't necessarily do anything :p

:D

ShadedJon commented 7 years ago

Would you like to try and tackle the plugin changes outside of ExilePearl that will be needed?

Aleksey-Terzi commented 7 years ago

Would you like to try and tackle the plugin changes outside of ExilePearl that will be needed?

What do you mean, help with another plugins? Sure, if help is needed - just tell me and I will try to help.

ghost commented 7 years ago

For the bastion requirement, I think Bastion will have to take ExilePearl as a dependency and do the check in the bastion player move event.

Aleksey-Terzi commented 7 years ago

For the bastion requirement, I think Bastion will have to take ExilePearl as a dependency and do the check in the bastion player move event.

I think better to make dependency to Bastion in ExilePearl. Bastion should be independent from plugin-addons. If needed better to introduce to Bastion new events and functions which allows other plugins to interact with it.

@ShadedJon

In some of comments on sub (and here too) you told that ExilePearl will coexist with PrisonPearl. Probably this should be counted from beginning when developing ExilePearl. Just to clarify - in my understanding both Prison and Exile pearl should coexist in the same plugin just to share the same codebase and better interact with together.

ghost commented 7 years ago

Ok yeah you're probably right, however I don't think there's an API exposed to see whether someone is in a bastion field or not, so exposing a public API for that sort of thing would something good to do. Unless it exists and I'm just not seeing it.

Aleksey-Terzi commented 7 years ago

Probably Bastion plugin haven't special one function you need, but I'm sure it is providing helper methods and fields for this. You can implement your own method based on this (and probably make new API function in Bastion)

This is how I worked with Bastion in CastleGates plugin: https://github.com/Aleksey-Terzi/CastleGates/blob/master/src/main/java/com/aleksey/castlegates/bastion/BastionManager.java