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 4 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
7 changes: 2 additions & 5 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ repositories {

dependencies {
// minecraft development api
compileOnly("org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT")
compileOnly("org.spigotmc:spigot-api:1.20.2-R0.1-SNAPSHOT")
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 Down Expand Up @@ -140,11 +140,8 @@ tasks {
"org.bstats",
"dev.rollczi",
"net.kyori",
"okhttp3",
"org.json",
"com.fasterxml"
).forEach { pack ->
relocate(pack, "$prefix.$pack")
}
).forEach { relocate(it, prefix) }
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.eternalcode.parcellockers;

import com.eternalcode.parcellockers.command.ParcelCommand;
import com.eternalcode.parcellockers.command.argument.ParcelArgument;
import com.eternalcode.parcellockers.command.argument.PlayerArgument;
import com.eternalcode.parcellockers.command.handler.InvalidUsage;
import com.eternalcode.parcellockers.command.handler.PermissionMessage;
Expand All @@ -17,6 +15,8 @@
import com.eternalcode.parcellockers.notification.NotificationAnnouncer;
import com.eternalcode.parcellockers.parcel.Parcel;
import com.eternalcode.parcellockers.parcel.ParcelManager;
import com.eternalcode.parcellockers.parcel.command.ParcelCommand;
import com.eternalcode.parcellockers.parcel.command.argument.ParcelArgument;
import com.eternalcode.parcellockers.parcel.database.ParcelDatabaseService;
import com.eternalcode.parcellockers.parcel.gui.ParcelListGUI;
import com.eternalcode.parcellockers.updater.UpdaterService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ public CompletableFuture<Void> save(Locker locker) {
statement.setString(2, locker.description());
statement.setString(3, locker.position().toString());
statement.execute();

this.cache.put(locker.uuid(), locker);
this.positionCache.put(locker.position(), locker.uuid());
}
Expand Down Expand Up @@ -122,9 +123,9 @@ private List<Locker> extractParcelLockers(PreparedStatement statement) throws SQ

while (rs.next()) {
Locker locker = new Locker(
UUID.fromString(rs.getString("uuid")),
rs.getString("description"),
Position.parse(rs.getString("position"))
UUID.fromString(rs.getString("uuid")),
rs.getString("description"),
Position.parse(rs.getString("position"))
);

list.add(locker);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.eternalcode.parcellockers.configuration.implementation.PluginConfiguration;
import com.eternalcode.parcellockers.gui.GuiView;
import com.eternalcode.parcellockers.locker.repository.LockerRepository;
import com.eternalcode.parcellockers.locker.database.LockerDatabaseService;
import com.eternalcode.parcellockers.parcel.gui.ParcelListGUI;
import com.eternalcode.parcellockers.parcel.gui.SentParcelsGUI;
import com.eternalcode.parcellockers.parcel.repository.ParcelRepository;
Expand All @@ -23,9 +23,9 @@ public class MainGUI extends GuiView {
private final MiniMessage miniMessage;
private final PluginConfiguration config;
private final ParcelRepository parcelRepository;
private final LockerRepository lockerRepository;
private final LockerDatabaseService lockerRepository;

public MainGUI(Plugin plugin, Server server, MiniMessage miniMessage, PluginConfiguration config, ParcelRepository parcelRepository, LockerRepository lockerRepository) {
public MainGUI(Plugin plugin, Server server, MiniMessage miniMessage, PluginConfiguration config, ParcelRepository parcelRepository, LockerDatabaseService lockerRepository) {
this.plugin = plugin;
this.server = server;
this.miniMessage = miniMessage;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.eternalcode.parcellockers.command;
package com.eternalcode.parcellockers.parcel.command;

import com.eternalcode.parcellockers.configuration.implementation.PluginConfiguration;
import com.eternalcode.parcellockers.locker.gui.MainGUI;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.eternalcode.parcellockers.command.argument;
package com.eternalcode.parcellockers.parcel.command.argument;

import com.eternalcode.parcellockers.parcel.Parcel;
import com.eternalcode.parcellockers.parcel.database.ParcelDatabaseService;
Expand Down Expand Up @@ -30,7 +30,6 @@ public ParcelArgument(ParcelDatabaseService cache) {
return Result.ok(parcel);
}


@Override
public List<Suggestion> suggest(LiteInvocation invocation) {
return this.databaseService.cache().values().stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import com.eternalcode.parcellockers.configuration.implementation.PluginConfiguration;
import com.eternalcode.parcellockers.gui.GuiView;
import com.eternalcode.parcellockers.locker.database.LockerDatabaseService;
import com.eternalcode.parcellockers.locker.gui.MainGUI;
import com.eternalcode.parcellockers.locker.repository.LockerRepository;
import com.eternalcode.parcellockers.parcel.Parcel;
import com.eternalcode.parcellockers.parcel.repository.ParcelRepository;
import com.eternalcode.parcellockers.shared.Page;
Expand All @@ -13,13 +13,15 @@
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.Plugin;
import panda.utilities.text.Formatter;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.UUID;

public class ParcelListGUI extends GuiView {

Expand All @@ -28,14 +30,14 @@ public class ParcelListGUI extends GuiView {
private final MiniMessage miniMessage;
private final PluginConfiguration config;
private final ParcelRepository parcelRepository;
private final LockerRepository lockerRepository;
private final LockerDatabaseService lockerRepository;
private final MainGUI mainGUI;

private static final int WIDTH = 7;
private static final int HEIGHT = 4;
private static final Page FIRST_PAGE = new Page(0, WIDTH * HEIGHT);

public ParcelListGUI(Plugin plugin, Server server, MiniMessage miniMessage, PluginConfiguration config, ParcelRepository parcelRepository, LockerRepository lockerRepository, MainGUI mainGUI) {
public ParcelListGUI(Plugin plugin, Server server, MiniMessage miniMessage, PluginConfiguration config, ParcelRepository parcelRepository, LockerDatabaseService lockerRepository, MainGUI mainGUI) {
this.plugin = plugin;
this.server = server;
this.miniMessage = miniMessage;
Expand Down Expand Up @@ -90,9 +92,11 @@ private void show(Player player, Page page) {
continue;
}

List<String> newLore = this.replaceParcelPlaceholders(parcel, parcelItem.getItemStack().getItemMeta().getLore());
ItemMeta parcelItemMeta = parcelItem.getItemStack().getItemMeta();

List<String> newLore = this.replaceParcelPlaceholders(parcel, parcelItemMeta.getLore());

parcelItem.getItemStack().getItemMeta().setLore(newLore);
parcelItemMeta.setLore(newLore);
gui.addItem(parcelItem);

}
Expand All @@ -112,7 +116,7 @@ private void show(Player player, Page page) {

}

public List<String> replaceParcelPlaceholders(Parcel parcel, List<String> lore) {
private List<String> replaceParcelPlaceholders(Parcel parcel, List<String> lore) {
if (lore == null || lore.isEmpty()) {
return Collections.emptyList();
}
Expand All @@ -133,12 +137,22 @@ public List<String> replaceParcelPlaceholders(Parcel parcel, List<String> lore)
.toString()
);

this.lockerRepository.findByUUID(parcel.destinationLocker()).join().ifPresent(locker -> formatter
UUID destinationLocker = parcel.destinationLocker();
if (!this.lockerRepository.isInCache(destinationLocker)) {
this.lockerRepository.findByUUID(destinationLocker).join().ifPresent(locker -> formatter
.register("{POSITION_X}", locker.position().x())
.register("{POSITION_Y}", locker.position().y())
.register("{POSITION_Z}", locker.position().z())
);
}

this.lockerRepository.findLocker(destinationLocker).ifPresent(locker -> formatter
.register("{POSITION_X}", locker.position().x())
.register("{POSITION_Y}", locker.position().y())
.register("{POSITION_Z}", locker.position().z())
);
Jakubk15 marked this conversation as resolved.
Show resolved Hide resolved


List<String> newLore = new ArrayList<>();

for (String line : lore) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.eternalcode.parcellockers.configuration.implementation.PluginConfiguration;
import com.eternalcode.parcellockers.gui.GuiView;
import com.eternalcode.parcellockers.locker.Locker;
import com.eternalcode.parcellockers.locker.gui.MainGUI;
import com.eternalcode.parcellockers.locker.repository.LockerRepository;
import com.eternalcode.parcellockers.parcel.Parcel;
Expand Down Expand Up @@ -80,7 +79,6 @@ public List<String> replaceParcelPlaceholders(Parcel parcel, List<String> lore)
return Collections.emptyList();
}

Locker destination = this.lockerRepository.findByUUID(parcel.destinationLocker()).join().get();
Formatter formatter = new Formatter()
.register("{UUID}", parcel.uuid().toString())
.register("{NAME}", parcel.name())
Expand Down