- Full Customization everything can be within your tastes
- Turf map - the map of the nearby turfs
- You can take a look at your surroundings to check for neighbors.
- You can manage your own turfs, expand your realm, or delete existing turfs right from the menu, so no more calculating, walking to a ton of locations, and so on.
- Economy support with Vault and an economy handler such as EssentialsX you can set a price for a turf
- The prices can be fixes, or they can increase with the number of turfs a players has.
- You can offer full or partial refunds on turf deletion
- Not 100% mandatory, but the plugin revolves around economy.
- Turf Tokens so you can reward players with a 'free turf'
- If a player has a token, it automatically subtracts one instead of charging the player money
- BossBar communication so no more spam in the chat
- Intuitive colored bars and text are shown at the top of the screen, replacing the pesky chat messages
- Beginner friendly
- You can give new players the chance to claim a few turfs for free
- You can give beginners a 'turf block' in order to get accustomed to the new system.
- You can offer full refunds to beginners
- You can opt to automatically set home (if applicable) so that new players don't lose their new turf
- Deny unwanted visitors
- If you don't want a certain player entering your turfs, just block him with a simple command.
- You can always unblock him from the menu which shows you all blocked players
- Turf Flags so players can control how they use their protection
- Menus for easy navigation and interaction with the plugin.
- Main menu with information about the turf, owner and a button to edit the turf
- Turf editor in which you can add players to the turf, delete, visualise and edit the flags
- Flag editor in which you edit the turf's flags
- Denied players to manage people that you don't want inside your protection
- Turf map for check your premises and expanding your turfs.
- Locate your turfs easily and teleport to them by clicking the text in chat (temporary - will do something cool soon)
- Allow and remove players from all your turfs at once
- Potion effects
- You can give players any potion effects while in their turf, such as regeneration, haste or any other combination
- Invincibility
- You can make players invincible inside their turfs
- No fly zone
- Deny flying in turfs, without the worry that someone may die. The plugin lands them safely on the ground.
- MySQL
- For storage we use MySQL, so that is a requirement.
- Smart visualization
- Particles that show you the bounds of the turf for 30s
- You can visualise all turfs at once
- The visualisation is shown only near you, so it doesn't use excessive resources
- PlaceholderAPI support inside the menus.
- WorldGuard support so no turfs are placed inside regions
- ChunkyBorder support so no turfs are placed beyond borders
- 1.21, no need to change things. This plugin was made with compatibility in mind
- HEX and color codes support everywhere
- You can set cooldowns
- You can set a cooldown for claiming turfs. Persistent after restart.
- Lightweight. I work constantly to reduce excess code and to make everything as efficient as possible.
- Reload your config with a simple command.
- Set max turfs for a certain rank simply by giving the mysticturfs.use.5 (for example) to give the players access to claiming 5 turfs. REQUIRES LUCKPERMS. If you don't have LuckPerms installed, you can set a global maximum in the config.
- TabCompleter so that you don't have to worry about typing all the commands by yourself
- Updater lets you know when the latest version is available
- Everything is toggleable, if you don't want something to be available to the players, you can just turn it off in the config, and reload the plugin.
- Friendly developer, always ready to answer questions and squash bugs
- Constant updates, as many as I can
- Attention! The plugin claims chunks as turfs. You cannot resize a turf, you can only expand by buying more turfs. It makes keeping protections in the world more tidy, and allows for the use of the turf map, which makes it easy to take multiple turfs!
Config
mysql:
username : "user"
password : "pass"
database : "mc"
port : "3306"
settings:
auto-set-home : true
unlimited-with-wand : true
base-price : 2500
cooldown : 10
price-multipliyer : 1500 #Formula: price + multiplier * (number_of_turfs / 10)
price-grows-every-x-turfs : 10 #The 10 in the above formula
max-turfs : 10 #If LuckPerms is unavailable
max-allowed-players : 40
visualise-particle : FLAME
delete-moneyback-percentage : 10
effects:
enabled : false
disable-flight : false
invincible : false
potion-effects :
- "REGENERATION:1"
beginner:
hours-for-beginner : 5
free-first-x-turfs : 4
allowed-worlds :
- "world"
bossbar:
own-turf:
text : "&8(&a&l➷&8)&f You are in &ayour own &fturf"
color : GREEN
time : 100
allowed-turf:
text : "&8(&a&l➷&8)&f You are in &a{player}'s &fturf"
color : GREEN
time : 100
stranger-turf:
text : "&8(&a&l➷&8)&f You are in &a{player}'s &fturf"
color : RED
wand:
item : EMERALD_BLOCK
name : "&aProtection (1 chunk)"
lore :
- ""
- " &f&l| &7Place the protection on the ground"
- " &7 and claim the chunk you're standing in."
- ""
- " &f&l &cAFTER YOU USE THESE BLOCKS"
- " &f&l &cYOU WILL NEED TO USE &F/TURFS"
- ""
menu:
glass : BLACK_STAINED_GLASS_PANE
main:
title : "Turf information"
buttons:
turf-owner:
name : "&5&l&oTURF OWNER"
lore :
- ""
- " &d✦ &5&lOWNER : &f{owner}"
- " &d Playing since : &f%player_first_join_date%"
- " &d Last seen : &f%player_last_join_date%"
- " &d Online : &f%player_online%"
- " &8&o Reach out to him in order"
- " &8&o to gain access to this turf"
- ""
about:
item : GRASS_BLOCK
name : "&5&l&oTURF INFO"
lore :
- ""
- " &d&l➷ &5Coordinates : &f{x} {z } "
- " &d &dBiome : &f%world_biome%"
- " &d &dWorld : &f%player_world%"
- " &8Chunk : {chunk-x } {chunk-y } "
- " "
edit:
item: IRON_PICKAXE
name: "&5&l&oEDIT TURF "
lore:
- " "
- " &7Allow players, delete turf, "
- " &7visualise and change flags. "
- " &8&oClick to open "
created:
item: ENDER_EYE
name: "&5&l&oMORE INFO "
lore:
- " "
- " &d✦ &5&lCREATED &f {time-ago } day (s ) ago "
- " &8Date created : {date } "
- " "
edit:
title: "Edit your turf "
buttons:
add-to-turf:
name: "&5&l&oADD TO TURF "
lore:
- " "
- "&7 Manage allowed players "
- "&7 inside your turfs! "
- " "
- "&7 &5&lTIP: "
- "&f You can also run "
- "&f /turf allow (Player ) all "
- "&f to allow a player to all your! "
- "&f turfs at once! "
- " "
- "&8&o Click to open "
delete:
item: TNT
name: "&5&l&oDELETE TURF "
lore:
- " "
- "&7 Return your land to nature. "
- " "
- " &d&l✦ &5&lWARNING "
- "&F This action can't be undone "
- "&F If your turf was placed recently, "
- "&F you may get a full refund otherwise, "
- "&F you may only get a percentage back. "
- " "
- " &8&oClick to confirm "
visualise:
item: ENDER_EYE
name: "&5&l&oVISUALISE TURF "
lore:
- " "
- "&7 View your turf's bounds "
- "&7 for 30 seconds "
- " "
- "&7 &5&lTIP: "
- "&f You can also run "
- "&f /turf visualise all "
- "&f to view all your turfs at once! "
- " "
- " &8&oClick to begin "
flags:
item: CYAN_BANNER
name: "&5&l&oCHANGE FLAGS "
lore:
- " "
- "&7 Manage your turf's flags "
- " &8&oClick to open "
add-to-turf:
title: "Edit access to turf "
buttons:
player-head:
name: "&7 {name } "
lore:
- " "
- "&7 This player is allowed "
- "&7 inside this turf "
- " "
- "&8 Right Click to remove "
- " "
add-player:
item: TOTEM_OF_UNDYING
name: "&5&l&oADD A PLAYER "
lore:
- " "
- " &D&L✦ &5&LHOW TO USE? "
- "&f Left click here and type the player's name "
- "&f in the chat box once this window closes "
- " "
flags:
title: "Edit your turfs' flags "
buttons:
mob-spawning:
item: ZOMBIE_HEAD
name: "&5&l&oMOB SPAWNING "
lore:
- " "
- "&7 Allow mobs to spawn "
- "&7 on your turf "
- "&7 &lSTATUS : &f{status}"
- ""
explosions:
item : TNT
name : "&5&l&oEXPLOSIONS"
lore :
- ""
- "&7 Allow explosions"
- "&7 on your turf"
- "&7 &lSTATUS : &f{status}"
- ""
turf:
item-on : REDSTONE_TORCH
item-off : LEVER
name : "&5&l&oTOGGLE TURF"
lore :
- ""
- "&7 Toggle protection on this turf"
- "&7 Disabling won't delete your turf"
- "&7 but it won't be protected anymore"
- "&7 &lSTATUS : &f{status}"
- ""
map:
title : "Turfs Map N↑"
free-chunk:
item : LIME_CONCRETE
name : "&a✔ Free Chunk | X: {x}, Z: {z}"
owned-turf:
item : LIGHT_BLUE_CONCRETE
name : "&b➷ Your turf | X: {x}, Z: {z}"
unavailable-chunk:
item : RED_CONCRETE
name : "&c❌ Unavailable Chunk | X: {x}, Z: {z}"
current-location:
lore :
- " "
- " &7You are here"
- " &7Map is oriented to north"
- " "
free:
item : GREEN_BANNER
unavailable:
item : RED_BANNER
owned:
item : LIGHT_BLUE_BANNER
help:
item : WRITABLE_BOOK
name : "&5&l&oHOW TO USE THE MAP?"
lore :
- ""
- " &D&L✦ &5&LLEFT CLICK"
- " &F Free chunks to claim them"
- ""
- " &D&L✦ &5&LRIGHT CLICK"
- " &F Your turfs to delete them"
- ""
- " &aGreen | &aFree chunks"
- " &bBlue | &aYour Turfs"
- " &cRed | &cUnavailable chunks "
- ""
- " &8The map is oriented north"
- " &8You can use a &ccompass to navigate"
- ""
blocked-players-menu:
title : "Blocked players from your turfs"
head:
name : "&c{name}"
lore :
- ""
- "&f&nRight Click&f |&7&o Unignore."
- ""
Messages
messages:
claim:
title : "&5&lTurfs"
subtitle : "&fYou claimed this turf"
cooldown : "&5&l➷ &fYou need to wait {cooldown}s to claim another turf"
wrong-world : "&5&l➷ &fTurfs are disabled in this world"
already-turf : "&5&l➷ &fThere is already a turf here"
in-region : "&5&l➷ &fYou cannot place a turf in a region"
max-turfs : "&5&l➷ &fYou reached the max amount of turfs"
bought-with-token : "&5&l➷ &fYou claimed this turf for 1 token"
bought-with-money : "&5&l➷ &fYou claimed this turf for {price}"
no-money : "&5&l➷ &fYou don't have enough money, ${price} needed"
success : "&5&l➷ &fYou claimed this turf"
allow:
max-allowed : "&5&l➷ &fYou reached the max allowed people in this turf"
self-allow : "&5&l➷ &fYou can't allow yourself"
already-allowed : "&5&l➷ &fThis player is already allowed"
success : "&5&l➷ &fYou added {player} to your turf"
success-target : "&5&l➷ &fYou were added by {player} in his turf"
not-the-owner : "&5&l➷ &fYou aren't the owner of this turf"
allow-all : "&5&l➷ &fYou added {player} to all of your turfs"
allow-all-other : "&5&l➷ &fYou were added to all of {player}'s turfs"
chat-instructions : "&5&l➷ &fWrite in chat the name of the player you wish to allow or 'cancel' to cancel the action"
remove:
self-remove : "&5&l➷ &fYou can't remove yourself"
not-allowed : "&5&l➷ &fPlayers is not allowed"
success : "&5&l➷ &fYou removed {player} from this turf"
remove-all : "&5&l➷ &fYou removed {player} from all of your turfs"
delete:
title : "&5&lTurfs"
subtitle : "&fYou deleted this turf"
no-turf : "&5&l➷ &fThere is no turf here"
not-the-owner : "&5&l➷ &fThis isn't your turf so you can't delete it"
moneyback : "&5&l➷ &fBecause the turf was placed recently, you got your money back!"
moneyback-percent : "&5&l➷ &fYou got ${price} back for selling your turf"
visualise:
no-turf : "&5&l➷ &fThere is no turf here"
already-visualising : "&5&l➷ &fYou are already visualising your turf"
visualising :
- "&5&l➷ &fYou're visualising your turf for 30s!"
- "&7&o((Tip : You have to have your particles on! ) ) "
flags:
not-in-turf: "&5&l➷ &fYou aren't in a turf "
set: "&5&l➷ &fYou set the {flag } flag to {value } "
wand:
received: "&5&l➷ &fYou received 1 turf block "
locate:
max-pages: "&5&l➷ &fThere are only {pages } pages "
page: "&8Page {page }/ {pages } "
format: " &d&l {index }. &5X : &F{x}, &5Z : &F{z}"
hover-text : "&7Click to teleport"
header : "&d&l➷ &5&l&o{player}'s TURFS"
no-turfs : "&5&lOops! &fNo turfs detected!"
tokens:
received : "&5&l➷ &fYou receieved {amount} tokens"
taken-away : "&5&l➷ &fYou were deducted {amount} tokens"
balance : "&5&l➷ &fYou have {amount} tokens"
other-player-balance : "&5&l➷ &f{player} has {tokens} Turf Tokens"
give : "&5&l➷ &fYou gave {amount} tokens to {player}"
take : "&5&l➷ &fYou took {amount} tokens from {player}"
deny:
empty : "&8(&c✖&8) &fYou didn't deny anyone yet"
max-denies : "&8(&c✖&8) &fYou can only ignore 10 people at once"
already-denied : "&8(&c✖&8) &fYou're already ignoring this player"
denied : "&8(&a✔&8) &fYou're now ignoring {player}"
stop-denying : "&8(&a✔&8) &fYou've lifted the restriction for {player}"
cost:
money : " &5Your next turf will cost &f${price}"
tokens : " &5Your next turf will cost &f1 turf token &8({tokens} available)"
help :
- " "
- "&5&lTurfs &8(&5&l➷&8) -----------"
- " "
- " &5/turf claim &8(&fCreate a protection&8)"
- " &5/turf delete &8(&fDelete your protection&8)"
- " &5/turf menu &8(&fOpen the protection's menu&8)"
- " &5/turf allow (Player) &7all &8(&fAdd a player to the field&8)"
- " &5/turf remove (Player) &7all &8(&fRemove a player from the field&8)"
- " &5/turf locate &8(&fLocate your protections&8)"
- " &5/turf visualise &7all &8(&fSee the bounds of the field&8)"
- " &5/turf map &8(&fSee the nearest turfs&8)"
- " &5/turf flags &8(&fChange turf's flags&8)"
- " &5/turf tokens &8(&fSee your turf tokens&8)"
- " &5/turf deny &8(&fDeny players to your turfs&8)"
- " &5/turf denied &8(&fSee denied players&8)"
- " "
- " &5You have &f{turfs}&7/{maxturfs} &5turfs"
general:
target-null : "&8(&c✖&8) &fPlayer is not online"
no-access : "&8(&c✖&8) &fYou don't have access to this command"
unknown-command : "&8(&c✖&8) &fThis command doesn't exist! Use /turfs"
cannot-enter : "&5&l➷ &fYou cannot enter this turf"
cannot-interact : "&5&l➷ &fYou cannot interact with this"
Plugin
##########################################
# #
# HEADER #
# #
##########################################
main : com.Moshu.MysticTurfs.Main
name : MysticTurfs
version : 24.07.2024
description : New turfs plugin, packed with every feature you could want
author : Moshu
website : mc.b-zone.ro
softdepend : [Vault, WorldGuard, ChunkyBorder, EssentialsX, Citizens, LuckPerms ]
api-version : "1.21"
commands:
turfs:
permission : mysticturfs.use
aliases :
- turf
- ps
- protection
- protections
permissions:
mysticturfs.use:
default : true
description : Use the main command
mysticturfs.map:
default : true
description : Let players use the turf map
mysticturfs.admin:
default : op
description : Acces to admin commands
mysticturfs.bypass:
default : op
description : Bypass protections
mysticturfs.locate:
default : op
mysticturfs.beginner-bypass:
default : op
description : Bypass the beginner stage