HS-Workspace
TODO
Extra Storage
Mine more efficiently! Let your players store their mined/picked items! Includes many unique and special features such as filtering, sorting or selling!
Overview
Note
This plugin can be used in almost any game modes, but works best in Skyblock and Prison server. Giving each player almost unlimited storage, which can be used to contain the vanilla items. For example, after you have mined any block, instead of being dropped to the ground, it will be automatically picked up into your storage. It also eliminates the lag caused by dropped items.
Core Features
- Support multiple versions: from 1.16 to the latest version.
- Support most popular skyblock plugins.
- Support multiple currency plugins
- Support multiple marketplaces
- PlaceholderAPI Supported.
- HeadDatabase for custom head.
- ItemsAdder and Oraxen for custom ui texture and items.
- Very detailed explanation in every configuration files.
- And a lot more that are not mentioned here.
- Powerful developer APIs.
Installation Guide
Download
This plugin is now available on these marketplaces as a premium plugin:
You can purchase it on those marketplaces. But we strongly recommend you to purchase on BuiltByBit, because it supports you more payment methods.
Prerequisites
- Java version: 8 or newer
- Server software: SpigotMC, PaperMC and its forks
- Server versions: 1.16 or newer
Soft-Dependencies
| Name | Link | Price | Required |
|---|---|---|---|
| HeadDatabase | Buy Now | Premium | Optional |
| ShopGUIPlus | Buy Now | Premium | Optional |
| ItemsAdder | Buy Now | Premium | Optional |
| Oraxen | Buy Now | Premium | Optional |
| Nexo | Buy Now | Premium | Optional |
| UltraEconomy | Buy Now | Premium | Optional |
| UltimateStacker | Download Now | Premium | Optional |
| Vault | Download Now | Free | Optional |
| PlayerPoints | Download Now | Free | Optional |
| PlaceholderAPI | Download Now | Free | Optional |
| TokenManager | Download Now | Free | Optional |
| WildStacker | Download Now | Free | Optional |
| EconomyShopGUI | Download Now | Free | Optional |
| BetterEconomy | Download Now | Free | Optional |
| GemEconomy | Download Now | Free | Optional |
Install steps
It is very simple to install this plugin, just following these steps:
- Step 1: Stop your server if it is running.
- Step 2: Download the plugin via marketplaces we have metioned above.
- Step 3: Copy the jar file you just downloaded (normally named ExtraStorage.jar) to your plugins folder.
- Step 4: Start your server and enjoy.
Custom UI Texture
Caution
Join our Discord to get the custom UI texture.
Commands & Permissions
These commands for players:
| Player Command | Permission | Description |
|---|---|---|
| /exstorage help | exstorage.command.player.help | Players can see help page. |
| /exstorage [player] | exstorage.command.player.open | Players can open their storage, or open another player’s storage. |
| /exstorage toggle | exstorage.command.player.toggle | Players can turn on / off the feature if they don’t want to use. |
| /exstorage filter [%material-key%] | exstorage.command.player.filter | Players can open their filter, or toggle the filter for a specific item. |
| /exstorage partner [add/remove/clear][player] | exstorage.command.player.partner | Players can use the partner feature. Or open a GUI to see who was their partners. |
| /exstorage sell [%material-key% [amount]] | exstorage.command.player.sell | Players can open the market to sell items that contain in their storage. |
| /exstorage withdraw %material-key% [amount] | exstorage.command.player.withdraw | Withdraw items without opening the GUI. |
| /exstorage deposit %material-key% [amount] | exstorage.command.player.deposit | Players can deposit items from their inventory into their storage. |
These commands for administrator only:
Note
These commands can also be executed from the console.
| Admin Command | Permission | Description |
|---|---|---|
exstorage.* | The highest permission. | |
| /esadmin open %player% | exstorage.command.admin.open | Open and use another player’s storage without any conditions. |
| /esadmin space %amount% [player/*] /esadmin addspace %amount% [player/*] | exstorage.command.admin.space | Change the maximum space of the player’s storage (* for all of players). |
| /esadmin add %material-key% %amount% [player] | exstorage.command.admin.add | Allows the player to add item quantity to the storage. |
| /esadmin subtract %material-key% %amount% [player] | exstorage.command.admin.subtract | Allows the player to subtract item quantity to the storage. |
| /esadmin set %material-key% %amount% [player] | exstorage.command.admin.set | Allows the player to set their item quantity in the storage. |
| /exstorage withdraw %material-key% [amount] | exstorage.command.player.withdraw | Withdraw items without opening the GUI. |
| /esadmin whitelist | exstorage.command.admin.whitelist | Modify the “Whitelist” section in config.yml in-game. Apply changes immediately when adding/removing an item. |
| /esadmin reload | exstorage.command.admin.reload | Reload the configurations. |
Additional Permission
| Permission | Description |
|---|---|
exstorage.storage.unlimited | Allow player to have unlimited storage |
exstorage.storage.pickup | Allow player to send pickup items to their storage |
Placeholders
Use placeholders to aid in many other features. These placeholders require PlaceholderAPI
| Placeholder | Description |
|---|---|
%exstorage_space[_formatted]% | Displays the maximum storage space. |
%exstorage_used_space[_formatted]% | Displays the total amount of space used. |
%exstorage_free_space[_formatted]% | Displays the total amount of free space. |
%exstorage_used_percent[_formatted]% | Same with used_space, but in percentage. |
%exstorage_free_percent[_formatted]% | Same with free_space, but in percentage. |
%exstorage_quantity[_formatted]_<material-key>% | Displays the quantity of the item, -1 if it is not exist. |
%exstorage_status[_formatted]% | Displays the status of the storage. |
%exstorage_items% | Lists all the items in the storage. |
%exstorage_items_material% | Lists all the items in the storage in alphabetic order of the item material. |
%exstorage_items_name% | Lists all the items in the storage in alphabetic order of the item name. |
%exstorage_items_quantity% | Lists all the items in the storage in highest-first order of the item quantity. |
%exstorage_item_quantity_<material-key>% | Shows the quantity of the item in the storage, similar to %exstorage_quantity_<material-key>%. |
%exstorage_item_material_<material-key>% | Shows the material of the item. |
%exstorage_item_name_<material-key>% | Shows the name of the item. |
%exstorage_item_lore_<material-key>% | Shows the lore of the item. |
Custom Item Support
Thanks to UniItem, the plugin now has support for custom items from many item plugins.
The key for these items would be in the format:
<type>:<id>
<type>: The type of the plugin that the item belongs to<id>: The ID of the item
Here are a list of supported plugins and their types
Here are some examples from some item plugins:
- ItemsAdder:
ITEMSADDER:your_item - Oraxen:
ORAXEN:onyx_axe - Nexo:
NEXO:my_item
Hyronic Friends
HyronicFriends is a plugin that adds to your friend system. With this plugin, you can send friend requests, receive notifications when your friends are online, teleport instantly to your friends, and most importantly, you can send mail to your friends, including items as attachments.
Now available on marketplaces
Features
- Support multiple server versions.
- Support MySQL and SQLite database.
- Support BungeeCord/Velocity for cross-server (see how to setup).
- Support custom texture for GUI.
- Support Oraxen and ItemsAdder.
- Support multiple languages. You can translate it into your native language.
- Add (or unfriend) a player.
- Send an email to your friend. You can also attach your item before sending.
- Immediately teleport to your friend (BungeeCord/Velocity support).
- Blocking any player from requesting friend, teleporting, or sending email.
- Each friend has different permissions. You can set it up on GUI.
- Manage your friend list (or what your friend can do with you) on GUI.
- Sending private message to your friend. If your server is BungeeCord, then it will be sent across the server.
- Quickly reply to the most recent message.
- Fully customizable.
- And more…
Installation Guide
Download
This plugin is now available on these marketplaces as a premium plugin:
You can purchase it on those marketplaces. But we strongly recommend you to purchase on BuiltByBit, because it supports you more payment methods.
Prerequisites
- Java version: 16 or newer
- Server software: SpigotMC, PaperMC and PurpurMC
- Server versions: 1.16 to 1.20.1
Soft-Dependencies
| Name | Open Source | Paid | Required |
|---|---|---|---|
| HeadDatabase | No | Premium | No |
| Oraxen | Yes | Premium | No |
| ItemsAdder | No | Premium | No |
| PlaceholderAPI | Yes | Free | No |
| HyronicFriends-BungeeCord | No | Free | No |
HyronicFriends-Velocity TODO | No | Free | No |
Install steps
It is very simple to install this plugin, just following these steps:
- Step 1: Stop your server if it is running.
- Step 2: Download the plugin via marketplaces we have metioned above.
- Step 3: Copy the jar file you just downloaded (normally named HyronicFriends.jar) to your plugins folder.
- Step 4: Start your server and enjoy.
Resource pack
Caution
If you’re SpigotMC user, you have to join our Discord in order to get the configuration for the texture pack (Oraxen/ItemsAdder Configuration).
Please follow these steps for the most accurate installation:
- Step 1: Open your Downloads folder, where files are saved after downloading.
- Step 2: Open the zip file you have downloaded.
- Step 3: There is a folder named Texturepack, just open it.
- Step 4: Drag & Drop 3 folders included there to your “
_<your server folder>/plugins/_”. If the system asks you about replacing files, just click “Yes to all”. - Step 5: This zip file contains the resource-pack of the Oraxen and ItemsAdder plugin. Depending on which one you want to use, reload its configuration.
- Step 6: Reload the HyronicFriends configuration and enjoy.
BungeeCord/Velocity
Caution
HyronicFriends has two versions: one for bukkit and one for BungeeCord. The BungeeCord/Velocity version is just a middleware (I will also call it’s “middleware” in this instruction), it will not work if you don’t have the bukkit version in your server. Then, just follow our instructions for the most accurate installation.
Download middleware plugin
- For HyronicFriends-BungeeCord plugin, it is available on SpigotMC for free.
- For HyronicFriends-Velocity plugin, you can download it via this link.
Installation Guide
- Step 1: Put the middleware jar file into /[BungeeCord/Velocity]/plugins/ folder.
- Step 2: Load the BungeeCord/Velocity for the first time.
- Step 3: Open the config.yml file and configure it. Any changes made after being officially used may result in data loss.
- Step 4: Go to your HyronicFriends folder (start your server if you don’t see it) for bukkit/spigot/paper version. Open the config.yml file, then change the value of
MultiNetworkstotrue, andDatabase.TypetoMySQL. Make sure you stopped your server before changing. - Step 5: Start your BungeeCord/Velocity first, then your servers.
Commands & Permissions
Permissions
General permissions
| Permissions | Default | Description |
|---|---|---|
hyronicfriends.* | FALSE | Allows the player to access everything of the plugin. |
hyronicfriends.mails.size.maximum | OP | Allows the player to have the maximum number of attached item slots. |
hyronicfriends.friends.size.unlimited | OP | Allows the player to have an unlimited list of friends. |
Command permissions
| Permissions | Default | Description |
|---|---|---|
hyronicfriends.command.* | FALSE | Allows the player to access all commands of the plugin. |
hyronicfriends.command.help | OP | Allows the player to view the help page command. |
hyronicfriends.command.friends | OP | Allows the player to manage their friend list. |
hyronicfriends.command.block | OP | Allows the player to block (or unblock) a player. |
hyronicfriends.command.teleport | OP | Allows the player to teleport to their friends. |
hyronicfriends.command.mail | OP | Allows the player to send (or read) mail to their friends. |
hyronicfriends.command.reload | OP | Allows the player to reload the configuration. |
Commands
Caution
We provide you with many commands. Some of them have been shortened, so we’ll split them up into different tables.
General commands
| Commands | Description |
|---|---|
/friend help [page] | View the help page command |
/friend | Open main menu |
/friend toggle | Toggle receive friend request |
/friend notify | Turn on/off your friend online status |
/friend add <player> | Send a friend request |
/friend accept <player> | Accept a friend request |
/friend decline <player> | Decline a friend request |
/friend cancel <player> | Cancel the sent friend request |
/friend list | Open your friend list |
/friend reload | Reload the configuration |
/unfriend <player> | Unfriend a player |
Blocking commands
| Commands | Description |
|---|---|
/blockedlist | Open your blocked list |
/block <player> | Block a player |
/unblock <player> | Unblock a player |
Teleport commands
| Commands | Description |
|---|---|
/ftp <player> | Teleport to your friend |
/toggletp <player> | Allow/Disallow your friend to teleport to you |
Private message commands
| Commands | Description |
|---|---|
/togglemsg <player> | Enable/Disable receiving your friend message |
/fmsg <player> <message> | Send private message to your friend |
/freply <message> | Quick reply to the most recent message |
Mail commands
| Commands | Description |
|---|---|
/mail help | View the list of mail commands |
/mailbox | Open your mailbox |
/mail <player> | See all mails sent/received to/from a player |
/mail send <player> <content> | Send mail to your friend |
/mail read <player> | Read the recently received mail |
/togglemail <player> | Allow/Disallow your friend to send mail to you |
Placeholders
We also provide you with a few placeholders. If you don’t find what you need, please join our Discord server and suggest it.
Caution
These placeholders require the PlaceholderAPI plugin to work.
| Placeholders | Description |
|---|---|
%hfriends_friendlist_size% | Shows the number of players on your friend list. |
%hfriends_friendlist_max% | Shows the maximum number of friends a player can have on the list. -1 means unlimited. |
%hfriends_friendlist_is_max% | Shows whether the player has reached the maximum number of friends. |
%hfriends_blockedlist_size% | Shows the number of players on your blocked list. |
%hfriends_has_unread_mail% | Shows whether the player has unread mails. |
%hfriends_has_waiting_request | Shows whether the player has requests are waiting to respond. |
%hfriends_is_friend_<player>% | Checks whether a player is your friend. |
%hfriends_is_blocked_<player>% | Checks whether a player is blocked by you. |
%hfriends_can_teleport_to_<player>% | Checks whether you can teleport to a player. |
%hfriends_can_send_msg_to_<player>% | Checks whether you can send private message to a player. |
%hfriends_can_send_mail_to_<player>% | Checks whether you can send mail to a player. |
Developer APIs
General player data
We provide you with a class named /api/user/User.java that gives you general player data, including the list of friends, the list of blocked players, mailbox, and more… You can use 2 methods provided from public class FriendAPI to get the player data:
File: /api/FriendAPI.java
Optional<User> FriendAPI.findUser(UUID);
Optional<User> FriendAPI.findUser(OfflinePlayer);
List of friends
To get the list of all your friends:
File: /api/friend/FriendList.java
List<Friend> getList();
List of online friends
To get the list of online friends:
File: /api/friend/FriendList.java
List<Friend> getOnlineFriends();
List of blocked players
To get the list of blocked players:
File: /api/blocked/BlockedList.java
BlockedList getBlockedList();
Blocking a player
To block a player you are hating:
File: /api/blocked/BlockedList.java
void block(UUID target);
Unblocking a player
To unblock a player:
File: /api/blocked/BlockedList.java
void unblock(UUID target);
Friend request
To send a friend request to a player:
File: /api/user/User.java
void sendRequest(UUID target);
Find pending friend request
To find a friend request you received recently but are waiting for response:
File: /api/request/RequestList.java
Optional<Request> findWaitingRequest(UUID target, boolean checkExpire);
Add new friend
To immediately add a player to your friend list:
File: /api/friend/FriendList.java
void addFriend(UUID target);
Unfriend a player
To remove a player from your friend list:
File: /api/friend/FriendList.java
void unfriend(UUID target);
Allow the player’s friends to teleport to them
Before teleporting to your friend, you should check whether your friend allows you to teleport to them by using the method below:
File: /api/friend/Friend.java
boolean canTeleportTo();
To check whether your friend can teleport to you, use this method:
File: /api/friend/Friend.java
boolean canTeleport();
To allow/disallow your friend to teleport to you, use this method:
File: /api/friend/Friend.java
boolean setCanTeleport(boolean canTeleport);
Allow to receive mail from friends
File: /api/friend/Friend.java
boolean canMail(); // Checks whether the player can receive the mail of their friend or not.
void setCanMail(boolean canMail); // Sets whether the player can receive the mail of their friend or not.
Mailbox
This mailbox will contain all mails, including mails you have sent and mails you have received from your friends. It can be invoked from the User class:
File: /api/mail/Mailbox.java
Mailbox getMailbox();
Send new mail
To send a mail to your friend:
File: /api/mail/Mail.java
Mail mail = new MailImpl(UUID sender, UUID target, String content, ItemStack... items);
mail.send();
Attached items
To get attached items from a letter:
File: /api/mail/Mail.java
List<ItemStack> getAttachedItem();
Sender - revoke items from mail
There are 2 methods that allow you to revoke your items from the letter:
File: /api/mail/Mail.java
boolean revokeItem(ItemStack item); // Revoke the specified item.
boolean revokeAllItems(); // Revoke all items contained in the letter.
Receiver - take items from mail
Same as revoke items, there are 2 methods that allow you to take items from the letter:
File: /api/mail/Mail.java
boolean takeItem(ItemStack item); // Take the specified item.
boolean takeAllItems(); // Take all items contained in the letter.
Events
We also provide you with some event classes, see details at: Events API.
Events
PreFriendRequestSendEvent
Called before a friend request is sent
File: /api/events/PreFriendRequestSendEvent.java
public final class PreFriendRequestSendEvent extends BaseEvent implements Cancellable {
private final Request request;
private boolean cancelled;
public PreFriendRequestSendEvent(Request request) {
this.request = request;
this.cancelled = false;
}
public Request getRequest() {
return request;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
}
PreFriendRequestRespondEvent
Called when a friend request is ready to respond (accept/decline/cancel)
File: /api/events/PreFriendRequestRespondEvent.java
public final class PreFriendRequestRespondEvent extends BaseEvent implements Cancellable {
private final Request request;
private Request.Status status;
private boolean cancelled;
public PreFriendRequestRespondEvent(Request request, Request.Status status) {
this.request = request;
this.status = status;
this.cancelled = false;
}
public Request getRequest() {
return request;
}
public Request.Status getStatus() {
return status;
}
public void setStatus(Request.Status status) {
this.status = status;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
}
FriendTeleportEvent
Called before your friend teleports to you
File: /api/events/FriendTeleportEvent.java
public final class FriendTeleportEvent extends BaseEvent implements Cancellable {
private final User user, target;
private boolean cancelled;
public FriendTeleportEvent(User user, User target) {
this.user = user;
this.target = target;
this.cancelled = false;
}
public User getUser() {
return user;
}
public User getTarget() {
return target;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
}
AttachingItemToMailEvent
Called before attaching items to your mail
File: /api/events/AttachingItemToMailEvent.java
public final class AttachingItemToMailEvent extends BaseEvent implements Cancellable {
private ItemStack item;
private boolean cancelled;
public AttachingItemToMailEvent(ItemStack item) {
this.item = item;
this.cancelled = false;
}
public ItemStack getAttachedItem() {
return item;
}
public void setAttachedItem(ItemStack item) {
this.item = item;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
}
PreMailSendEvent
Called before your mail is sent
File: /api/events/PreMailSendEvent.java
public final class PreMailSendEvent extends BaseEvent implements Cancellable {
private final Mail mail;
private boolean cancelled;
public PreMailSendEvent(Mail mail) {
this.mail = mail;
this.cancelled = false;
}
public Mail getMail() {
return mail;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
}
PreMailRespondEvent
Called when a mail is ready to respond (read/cancel)
File: /api/events/PreMailRespondEvent.java
public final class PreMailRespondEvent extends BaseEvent implements Cancellable {
private final Mail mail;
private Mail.Status status;
private boolean cancelled;
public PreMailRespondEvent(Mail mail, Mail.Status status) {
this.mail = mail;
this.status = status;
this.cancelled = false;
}
public Mail getMail() {
return mail;
}
public Mail.Status getStatus() {
return status;
}
public void setStatus(Mail.Status status) {
this.status = status;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancel) {
this.cancelled = cancel;
}
}