Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GH-58 Add basic Parcel locker business logic #58

Merged
merged 106 commits into from
Oct 14, 2023
Merged
Show file tree
Hide file tree
Changes from 51 commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
2708eef
Start business logic development
Jakubk15 Jul 1, 2023
788a9e0
Continue writing business logic
Jakubk15 Jul 2, 2023
e8ca8ef
Add missing import
Jakubk15 Jul 2, 2023
a452622
ParcelLockerRepository -> ParcelLockerDatabaseService
Jakubk15 Jul 2, 2023
14b769d
InventoryOpenEvent -> PlayerInteractEvent to fix StackOverflowError
Jakubk15 Jul 8, 2023
9836f2d
Add ParcelLockerBreakController
Jakubk15 Jul 9, 2023
6cc516f
Add more protection listeners and add timeout for parcel locker place…
Jakubk15 Jul 23, 2023
57f0e4e
Add economy integration (Vault), create parcel sending GUI, add ItemU…
Jakubk15 Jul 23, 2023
6627e3f
Enhance GUIs
Jakubk15 Jul 23, 2023
b7b5a99
Fix build
Jakubk15 Jul 23, 2023
0e9c5a0
fixup! Fix build
Jakubk15 Jul 23, 2023
e2d7834
Add RandomUtil, ParcelStatus enum
Jakubk15 Jul 25, 2023
dc5567f
fixup! Fix build
Jakubk15 Jul 29, 2023
a9714bc
Fix gui size and priority selector
Jakubk15 Jul 31, 2023
3f77249
Debugging
Jakubk15 Jul 31, 2023
7cebc5a
Merge remote-tracking branch 'origin/master' into business-logic
Jakubk15 Aug 26, 2023
d90edfb
Small fixes
Jakubk15 Aug 30, 2023
dd4118c
Merge remote-tracking branch 'origin/master' into business-logic
Jakubk15 Sep 1, 2023
eb517a4
Make Position class use Integers instead of Doubles
Jakubk15 Sep 1, 2023
63a4514
Fix Parcel locker break using an explosion
Jakubk15 Sep 1, 2023
3ca3e04
Merge branch 'master' into business-logic
Jakubk15 Sep 9, 2023
ed84f0d
Merge remote-tracking branch 'origin/business-logic' into business-logic
Jakubk15 Sep 9, 2023
e13228e
Integrate economy properly
Jakubk15 Sep 9, 2023
c11cbf0
Fix economy integration, change confirm/cancel items
Jakubk15 Sep 10, 2023
0314d75
Update src/main/java/com/eternalcode/parcellockers/controller/ParcelL…
Jakubk15 Sep 12, 2023
de94a33
Update src/main/java/com/eternalcode/parcellockers/database/ParcelLoc…
Jakubk15 Sep 12, 2023
fd7e17b
Update src/main/java/com/eternalcode/parcellockers/ParcelLockers.java
Jakubk15 Sep 12, 2023
f2048b2
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelItemStor…
Jakubk15 Sep 12, 2023
eb8fed3
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelItemStor…
Jakubk15 Sep 12, 2023
923e6e1
Update src/main/java/com/eternalcode/parcellockers/controller/ParcelL…
Jakubk15 Sep 12, 2023
d27b5b9
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelListGUI.…
Jakubk15 Sep 12, 2023
855dd58
Update src/main/java/com/eternalcode/parcellockers/database/ParcelLoc…
Jakubk15 Sep 12, 2023
24ec191
Remove final, move guiSettings to local variable
Jakubk15 Sep 12, 2023
4d67393
Update src/main/java/com/eternalcode/parcellockers/configuration/impl…
Jakubk15 Sep 12, 2023
6129a21
Update src/main/java/com/eternalcode/parcellockers/controller/ParcelL…
Jakubk15 Sep 12, 2023
3369d67
Update src/main/java/com/eternalcode/parcellockers/controller/ParcelL…
Jakubk15 Sep 12, 2023
01f8491
Update src/main/java/com/eternalcode/parcellockers/controller/ParcelL…
Jakubk15 Sep 12, 2023
3474e86
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelListGUI.…
Jakubk15 Sep 12, 2023
837d90e
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelListGUI.…
Jakubk15 Sep 12, 2023
d3111aa
Update src/main/java/com/eternalcode/parcellockers/ParcelLockers.java
Jakubk15 Sep 12, 2023
e8a49e3
Update src/main/java/com/eternalcode/parcellockers/ParcelLockers.java
Jakubk15 Sep 12, 2023
715c0e9
Fix build
Jakubk15 Sep 12, 2023
3cc6a13
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelSendingG…
Jakubk15 Sep 12, 2023
db20342
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelLockerMa…
Jakubk15 Sep 12, 2023
bced5dc
Update src/main/java/com/eternalcode/parcellockers/controller/ParcelL…
Jakubk15 Sep 12, 2023
5c6b803
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelSendingG…
Jakubk15 Sep 12, 2023
47b4952
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelSendingG…
Jakubk15 Sep 14, 2023
e861a0b
Update src/main/java/com/eternalcode/parcellockers/util/ItemUtil.java
Jakubk15 Sep 14, 2023
c795236
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelSendingG…
Jakubk15 Sep 14, 2023
806ea50
Update src/main/java/com/eternalcode/parcellockers/ParcelLockers.java
Jakubk15 Sep 14, 2023
cd0e5b9
Update src/main/java/com/eternalcode/parcellockers/notification/Notif…
Jakubk15 Sep 14, 2023
885c9d7
Merge branch 'master' into business-logic
Jakubk15 Sep 21, 2023
6dc9bb6
Shorten the code overall, apply review suggestions
Jakubk15 Sep 21, 2023
f27c6de
Change Set to List in repositories, use AbstractDatabaseService in da…
Jakubk15 Sep 21, 2023
b91726c
Add cache modification methods
Jakubk15 Sep 21, 2023
071f483
Add cache modification methods
Jakubk15 Sep 21, 2023
d58fc44
Use parcel name instead of unreadable UUID while suggesting parcels
Jakubk15 Sep 21, 2023
111abf4
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelListGUI.…
Jakubk15 Sep 28, 2023
658b292
Update src/main/java/com/eternalcode/parcellockers/database/ParcelDat…
Jakubk15 Sep 28, 2023
6575f08
Update src/main/java/com/eternalcode/parcellockers/database/ParcelDat…
Jakubk15 Sep 28, 2023
478d9d8
Update src/main/java/com/eternalcode/parcellockers/database/ParcelLoc…
Jakubk15 Sep 28, 2023
4df808e
Update src/main/java/com/eternalcode/parcellockers/gui/SentParcelsGUI…
Jakubk15 Sep 28, 2023
635e2a5
Update src/main/java/com/eternalcode/parcellockers/database/ParcelDat…
Jakubk15 Sep 28, 2023
cbcb294
Update src/main/java/com/eternalcode/parcellockers/database/ParcelDat…
Jakubk15 Sep 28, 2023
472ffb4
Update src/main/java/com/eternalcode/parcellockers/database/ParcelDat…
Jakubk15 Sep 28, 2023
59dfc53
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelListGUI.…
Jakubk15 Sep 28, 2023
256d03b
Update src/main/java/com/eternalcode/parcellockers/database/ParcelLoc…
Jakubk15 Sep 28, 2023
e21c856
Update src/main/java/com/eternalcode/parcellockers/database/ParcelDat…
Jakubk15 Sep 28, 2023
9052fb2
Update src/main/java/com/eternalcode/parcellockers/database/ParcelLoc…
Jakubk15 Sep 28, 2023
acafcdf
Update src/main/java/com/eternalcode/parcellockers/database/ParcelLoc…
Jakubk15 Sep 28, 2023
c815fd8
Update src/main/java/com/eternalcode/parcellockers/database/ParcelDat…
Jakubk15 Sep 28, 2023
b06da29
Update src/main/java/com/eternalcode/parcellockers/database/ParcelLoc…
Jakubk15 Sep 28, 2023
c526839
Update src/main/java/com/eternalcode/parcellockers/database/ParcelDat…
Jakubk15 Sep 28, 2023
f253efe
Update src/main/java/com/eternalcode/parcellockers/database/ParcelDat…
Jakubk15 Sep 28, 2023
e22e3c7
Fix build and tests, apply PR suggestions
Jakubk15 Sep 28, 2023
439c536
Fix suggestions
Jakubk15 Sep 30, 2023
03f31fa
Update ItemUtil.java
Jakubk15 Oct 1, 2023
1fa1c2e
Update ParcelDatabaseServiceIntegrationTest.java
Jakubk15 Oct 1, 2023
6ae8586
Update ParcelSendingGUI.java
Jakubk15 Oct 1, 2023
6c3e3d3
Update ParcelSendingGUI.java
Jakubk15 Oct 1, 2023
82cb20f
Apply PR suggestions, fix build
Jakubk15 Oct 6, 2023
72be238
Update src/main/java/com/eternalcode/parcellockers/controller/ParcelL…
Jakubk15 Oct 7, 2023
bc545f1
Update src/main/java/com/eternalcode/parcellockers/controller/ParcelL…
Jakubk15 Oct 7, 2023
9bb0b73
Update src/main/java/com/eternalcode/parcellockers/controller/ParcelL…
Jakubk15 Oct 7, 2023
245e859
Update src/main/java/com/eternalcode/parcellockers/controller/ParcelL…
Jakubk15 Oct 7, 2023
c5f13ee
Update src/main/java/com/eternalcode/parcellockers/controller/ParcelL…
Jakubk15 Oct 7, 2023
a62c533
Update src/main/java/com/eternalcode/parcellockers/util/ItemUtil.java
Jakubk15 Oct 7, 2023
9ada5b2
Update src/main/java/com/eternalcode/parcellockers/controller/ParcelL…
Jakubk15 Oct 7, 2023
ac8ab95
Update src/main/java/com/eternalcode/parcellockers/controller/ParcelL…
Jakubk15 Oct 7, 2023
c873ed2
Update src/main/java/com/eternalcode/parcellockers/gui/MainGUI.java
Jakubk15 Oct 7, 2023
1e26573
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelItemStor…
Jakubk15 Oct 7, 2023
4f99f6e
Update src/main/java/com/eternalcode/parcellockers/gui/ParcelListGUI.…
Jakubk15 Oct 7, 2023
22a9a1f
Update src/main/java/com/eternalcode/parcellockers/gui/SentParcelsGUI…
Jakubk15 Oct 7, 2023
b1ba067
Apply PR suggestions
Jakubk15 Oct 7, 2023
afa1ab0
Merge remote-tracking branch 'origin/business-logic' into business-logic
Jakubk15 Oct 7, 2023
33015e4
ParcelLocker -> Locker
Jakubk15 Oct 7, 2023
1faf5dc
Apply checkStyle fixes
Jakubk15 Oct 7, 2023
f3febf7
Simplify Gradle
Jakubk15 Oct 8, 2023
287ee36
Update src/main/java/com/eternalcode/parcellockers/parcel/gui/ParcelL…
Jakubk15 Oct 12, 2023
42ac216
Apply review changes
Jakubk15 Oct 12, 2023
c5666e0
Apply more review changes
Jakubk15 Oct 12, 2023
9012629
Fix build
Jakubk15 Oct 12, 2023
3d6c7e0
Refactor #findLocker method
Jakubk15 Oct 14, 2023
a5262d7
Update src/main/java/com/eternalcode/parcellockers/parcel/gui/ParcelL…
Jakubk15 Oct 14, 2023
a050b8f
Merge remote-tracking branch 'origin/business-logic' into business-logic
Jakubk15 Oct 14, 2023
5943387
Update src/main/java/com/eternalcode/parcellockers/locker/database/Lo…
Jakubk15 Oct 14, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,14 @@ more.
- [ ] Add translation system, more languages
- [ ] Add delivery codes, so any person knowing the code can pick up the parcel
- [ ] Add delivery time, so the parcel can be picked up only in a specific time
- [ ] Parcel permissions for user
- [ ] Parcel return logic
- [ ] Banned parcel items (configurable)
- [ ] Parcel fee
- [ ] Rewrite database to ORMLite (far in future)
- [ ] Add "business" logic
- [ ] Add more parcel types (fragile, etc...)
- [ ] Add option to config for parcel locker space (e.g. max parcels within a locker)
- [ ] Rewrite Position class to use Integers instead of Doubles
- [ ] Finish GUIs
- [ ] Add more GUIs (admin GUI, parcel create GUI, etc.)
Expand Down
7 changes: 6 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ repositories {

dependencies {
// minecraft development api
compileOnly("org.spigotmc:spigot-api:1.20.1-experimental-SNAPSHOT")
compileOnly("org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT")
Jakubk15 marked this conversation as resolved.
Show resolved Hide resolved
implementation("net.kyori:adventure-platform-bukkit:4.3.0")
implementation("net.kyori:adventure-text-minimessage:4.14.0")
implementation("dev.rollczi.litecommands:bukkit-adventure:2.8.9")
Expand All @@ -40,6 +40,9 @@ dependencies {
// gui library
implementation("dev.triumphteam:triumph-gui:3.1.5")

// economy
compileOnly("com.github.MilkBowl:VaultAPI:1.7.1")

// CDN
implementation("net.dzikoysk:cdn:1.14.4")

Expand Down Expand Up @@ -104,6 +107,8 @@ bukkit {
"Plugin that provides functionality of parcel lockers in Minecraft, allowing players to send and receive parcels safely."
website = "https://github.com/EternalCodeTeam/ParcelLockers"
version = "1.0.0-SNAPSHOT"
depend = listOf("Vault")
loadBefore = listOf("Vault")
Jakubk15 marked this conversation as resolved.
Show resolved Hide resolved
}

tasks.withType<JavaCompile> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
import dev.rollczi.litecommands.command.execute.Execute;
import dev.rollczi.litecommands.command.permission.Permission;
import dev.rollczi.litecommands.command.route.Route;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;

@Route(name = "parcellockers", aliases = {"parcellocker"})
@Permission("parcellockers.admin")
Expand All @@ -16,11 +19,13 @@ public class ParcelLockerCommand {
private final ConfigurationManager configManager;
private final PluginConfiguration config;
private final NotificationAnnouncer announcer;
private final MiniMessage miniMessage;

public ParcelLockerCommand(ConfigurationManager configManager, PluginConfiguration config, NotificationAnnouncer announcer) {
public ParcelLockerCommand(ConfigurationManager configManager, PluginConfiguration config, NotificationAnnouncer announcer, MiniMessage miniMessage) {
this.configManager = configManager;
this.config = config;
this.announcer = announcer;
this.miniMessage = miniMessage;
}

@Async
Expand All @@ -30,4 +35,10 @@ void reload(CommandSender sender) {
this.announcer.sendMessage(sender, this.config.messages.reload);
}

@Execute(route = "give")
void give(Player player) {
ItemStack parcelItem = this.config.settings.parcelLockerItem.toGuiItem(this.miniMessage).getItemStack();
player.getInventory().addItem(parcelItem);
}

}
57 changes: 48 additions & 9 deletions src/main/java/com/eternalcode/parcellockers/ParcelLockers.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
import com.eternalcode.parcellockers.command.handler.PermissionMessage;
import com.eternalcode.parcellockers.configuration.ConfigurationManager;
import com.eternalcode.parcellockers.configuration.implementation.PluginConfiguration;
import com.eternalcode.parcellockers.controller.ParcelLockerBreakController;
import com.eternalcode.parcellockers.controller.ParcelLockerInteractionController;
import com.eternalcode.parcellockers.controller.ParcelLockerPlaceController;
import com.eternalcode.parcellockers.database.DataSourceFactory;
import com.eternalcode.parcellockers.database.ParcelDatabaseService;
import com.eternalcode.parcellockers.database.ParcelLockerDatabaseService;
Expand All @@ -16,7 +19,6 @@
import com.eternalcode.parcellockers.parcel.Parcel;
import com.eternalcode.parcellockers.parcel.ParcelManager;
import com.eternalcode.parcellockers.parcellocker.ParcelLockerManager;
import com.eternalcode.parcellockers.parcellocker.repository.ParcelLockerRepository;
import com.eternalcode.parcellockers.updater.UpdaterService;
import com.eternalcode.parcellockers.util.legacy.LegacyColorProcessor;
import com.google.common.base.Stopwatch;
Expand All @@ -29,22 +31,27 @@
import io.sentry.Sentry;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.milkbowl.vault.economy.Economy;
import org.bstats.bukkit.Metrics;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Stream;

public final class ParcelLockers extends JavaPlugin {

private LiteCommands<CommandSender> liteCommands;

private BukkitAudiences audiences;

private Economy economy;

@Override
public void onEnable() {
Stopwatch started = Stopwatch.createStarted();
Expand Down Expand Up @@ -74,27 +81,41 @@ public void onEnable() {

HikariDataSource dataSource = DataSourceFactory.buildHikariDataSource(config, this.getDataFolder());

ParcelLockerRepository parcelLockerRepository = new ParcelLockerDatabaseService(dataSource);
ParcelLockerDatabaseService parcelLockerDatabaseService = new ParcelLockerDatabaseService(dataSource);
Jakubk15 marked this conversation as resolved.
Show resolved Hide resolved
parcelLockerDatabaseService.updatePositionCache();

ParcelDatabaseService parcelRepository = new ParcelDatabaseService(dataSource);

ParcelManager parcelManager = new ParcelManager(this, config, announcer, parcelRepository, parcelLockerRepository);
ParcelLockerManager parcelLockerManager = new ParcelLockerManager(parcelLockerRepository);

MainGUI mainGUI = new MainGUI(this, this.getServer(), miniMessage, config, parcelRepository, parcelLockerRepository);
ParcelListGUI parcelListGUI = new ParcelListGUI(this, this.getServer(), miniMessage, config, parcelRepository, parcelLockerRepository, mainGUI);
ParcelManager parcelManager = new ParcelManager(this, config, announcer, parcelRepository, parcelLockerDatabaseService);
ParcelLockerManager parcelLockerManager = new ParcelLockerManager(parcelLockerDatabaseService);

MainGUI mainGUI = new MainGUI(this, this.getServer(), miniMessage, config, parcelRepository, parcelLockerDatabaseService);
Jakubk15 marked this conversation as resolved.
Show resolved Hide resolved
Jakubk15 marked this conversation as resolved.
Show resolved Hide resolved
ParcelListGUI parcelListGUI = new ParcelListGUI(this, miniMessage, config, parcelRepository, parcelLockerDatabaseService, mainGUI);
Jakubk15 marked this conversation as resolved.
Show resolved Hide resolved

this.liteCommands = LiteBukkitAdventurePlatformFactory.builder(this.getServer(), "parcellockers", false, this.audiences, true)
Jakubk15 marked this conversation as resolved.
Show resolved Hide resolved
.argument(Parcel.class, new ParcelArgument(parcelRepository))
.argument(Player.class, new PlayerArgument(this.getServer(), config))
Jakubk15 marked this conversation as resolved.
Show resolved Hide resolved
.contextualBind(Player.class, new BukkitOnlyPlayerContextual<>(config.messages.onlyForPlayers))
.commandInstance(
new ParcelCommand(this.getServer(), parcelLockerRepository, announcer, config, mainGUI, parcelListGUI, parcelManager),
new ParcelLockerCommand(configManager, config, announcer)
new ParcelCommand(this.getServer(), parcelLockerDatabaseService, announcer, config, mainGUI, parcelListGUI, parcelManager),
Jakubk15 marked this conversation as resolved.
Show resolved Hide resolved
new ParcelLockerCommand(configManager, config, announcer, miniMessage)
)
.invalidUsageHandler(new InvalidUsage(announcer, config))
.permissionHandler(new PermissionMessage(announcer, config))
.register();

if (!this.setupEconomy()) {
this.getLogger().severe("Disabling due to no Vault dependency found!");
this.getServer().getPluginManager().disablePlugin(this);
return;
}

Stream.of(
new ParcelLockerInteractionController(parcelLockerDatabaseService, miniMessage, config),
new ParcelLockerPlaceController(config, miniMessage, this, parcelLockerDatabaseService, announcer),
new ParcelLockerBreakController(parcelLockerDatabaseService, announcer, config.messages)
).forEach(controller -> this.getServer().getPluginManager().registerEvents(controller, this));

new Metrics(this, 17677);
new UpdaterService(this.getDescription());

Expand Down Expand Up @@ -132,6 +153,24 @@ private void softwareCheck() {
logger.info("Your server is running on supported software, congratulations!");
logger.info("Server version: " + this.getServer().getVersion());
}

private boolean setupEconomy() {
if (this.getServer().getPluginManager().getPlugin("Vault") == null) {
return false;
}

RegisteredServiceProvider<Economy> rsp = this.getServer().getServicesManager().getRegistration(Economy.class);
if (rsp == null) {
return false;
}

this.economy = rsp.getProvider();
return true;
}

public Economy getEconomy() {
return this.economy;
}
Comment on lines +160 to +176
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't like this method in main class.

Copy link
Member Author

@Jakubk15 Jakubk15 Oct 12, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sorry to hear that, where else can I move this method to?

}


Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ public GuiItem toGuiItem(MiniMessage miniMessage, GuiAction<InventoryClickEvent>
.lore(this.lore.stream().map(element -> RESET_ITEM.append(miniMessage.deserialize(element))).toList())
.flags(ItemFlag.HIDE_ATTRIBUTES)
.flags(ItemFlag.HIDE_ENCHANTS)
.glow(this.glow)
.asGuiItem(action);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,21 @@ public static class Settings {

@Description({" ", "# The database password."})
public String password = "";

@Description({" ", "# The parcel locker item."})
public ConfigItem parcelLockerItem = new ConfigItem()
.setName("&3Parcel locker")
.setType(Material.CHEST)
.setLore(List.of("&bPlace to create a parcel locker."));

@Description({" ", "# Small parcel cost."})
public double smallParcelCost = 5.0;

@Description({" ", "# Medium parcel cost."})
public double mediumParcelCost = 10.0;

@Description({" ", "# Large parcel cost."})
public double largeParcelCost = 15.0;
}

@Contextual
Expand All @@ -71,7 +86,12 @@ public static class Messages {
public String failedToCreateParcel = "&7» &cAn error occurred while creating the parcel.";
public String parcelSuccessfullyDeleted = "&7» &aParcel deleted successfully.";
public String failedToDeleteParcel = "&7» &cAn error occurred while deleting the parcel.";

public String failedToCreateParcelLocker = "&7» &cCould not create the parcel locker.";
public String parcelLockerSuccessfullyCreated = "&7» &aParcel locker created successfully.";
public String enterDescriptionPrompt = "&7» &6Enter a description for the parcel locker:";
public String cannotBreakParcelLocker = "&7» &cYou have no permission to break the parcel locker.";
public String parcelLockerSuccessfullyDeleted = "&7» &aParcel locker deleted successfully.";
public String broadcastParcelLockerRemoved = "&7» &a&lWARNING! &r&4The parcel locker at &c{X} {Y} {Z} in world {WORLD} &4has been removed by &4{PLAYER}!";
@Description({" ", "# The parcel info message."})
public List<String> parcelInfoMessages = List.of(
"&7» &6Parcel info:",
Expand All @@ -98,6 +118,36 @@ public static class GuiSettings {
@Description({" ", "# The item of the sent parcels GUI"})
public String sentParcelsTitle = "&6Sent parcels";

@Description({" ", "# The item of the parcel locker main GUI"})
public String parcelLockerMainGuiTitle = "&3Parcel locker";

@Description({" ", "# The item of the parcel locker sending GUI"})
public String parcelLockerSendingGuiTitle = "&3Parcel sending";

@Description({" ", "# The item of the small parcel size button"})
public ConfigItem smallParcelSizeItem = new ConfigItem()
.setName("&aSmall")
.setLore(List.of("&bClick to select the small parcel size."))
.setType(Material.LIME_STAINED_GLASS);

@Description({" ", "# The item of the medium parcel size button"})
public ConfigItem mediumParcelSizeItem = new ConfigItem()
.setName("&eMedium")
.setLore(List.of("&bClick to select the medium parcel size."))
.setType(Material.YELLOW_STAINED_GLASS);

@Description({" ", "# The item of the large parcel size button"})
public ConfigItem largeParcelSizeItem = new ConfigItem()
.setName("&cLarge")
.setLore(List.of("&bClick to select the large parcel size."))
.setType(Material.RED_STAINED_GLASS);

@Description({" ", "# The item of the priority button"})
public ConfigItem priorityItem = new ConfigItem()
.setName("&aPriority")
.setLore(List.of("&bClick to select the priority."))
.setType(Material.REDSTONE);

@Description({" ", "# The close button item"})
public ConfigItem closeItem = new ConfigItem()
.setName("&cClose")
Expand Down Expand Up @@ -135,6 +185,27 @@ public static class GuiSettings {
.setLore(List.of("&eClick to show all parcels, which you sent or received in the past."))
.setType(Material.WRITTEN_BOOK);

@Description({" ", "# The item of the parcel locker collect button"})
public ConfigItem parcelLockerCollectItem = new ConfigItem()
.setName("&aCollect parcels")
.setLore(List.of("&aClick to collect your parcels."))
.setType(Material.HOPPER)
.setGlow(true);

@Description({" ", "# The item of the parcel locker send button"})
public ConfigItem parcelLockerSendItem = new ConfigItem()
.setName("&bSend parcels")
.setLore(List.of("&bClick to send parcels."))
.setType(Material.SCULK_SHRIEKER)
.setGlow(true);

@Description({" ", "# The item of the parcel locker status button"})
public ConfigItem parcelLockerStatusItem = new ConfigItem()
.setName("&3Parcel locker status")
.setLore(List.of("&bClick to show the status of your parcel locker."))
.setType(Material.END_PORTAL_FRAME)
.setGlow(true);

@Description({" ", "# The item of the parcel"})
public ConfigItem parcelItem = new ConfigItem()
.setName("&6{NAME}")
Expand All @@ -151,6 +222,12 @@ public static class GuiSettings {
)
.setType(Material.CHEST_MINECART);

@Description({" ", "# The item of the parcel item storage button"})
public ConfigItem parcelStorageItem = new ConfigItem()
.setName("&6Parcel storage")
.setLore(List.of("&eClick to edit the parcel content."))
.setType(Material.CHEST);

@Description({" ", "# The item of the previous page button"})
public ConfigItem previousPageItem = new ConfigItem()
.setName("&bPrevious page")
Expand All @@ -162,6 +239,27 @@ public static class GuiSettings {
.setName("&bNext page")
.setLore(List.of("&bClick to go to the next page."))
.setType(Material.ARROW);

@Description({" ", "# The item of the confirm items button"})
public ConfigItem confirmItemsItem = new ConfigItem()
.setName("&aConfirm items")
.setLore(List.of("&aClick to confirm the items."))
.setType(Material.LIME_WOOL);

@Description({" ", "# The item of the cancel items button"})
public ConfigItem cancelItemsItem = new ConfigItem()
.setName("&cCancel items")
.setLore(List.of("&cClick to cancel the items."))
.setType(Material.RED_WOOL);

@Description({" ", "# The name of the parcel small content GUI"})
public String parcelSmallContentGuiTitle = "&aSmall parcel content";

@Description({" ", "# The name of the parcel medium content GUI"})
public String parcelMediumContentGuiTitle = "&eMedium parcel content";

@Description({" ", "# The name of the parcel large content GUI"})
public String parcelLargeContentGuiTitle = "&cLarge parcel content";
}

@Override
Expand Down
Loading
Loading