Moved to using DataLock API
This commit is contained in:
parent
9ef6d87d0a
commit
5ce29f3967
|
|
@ -65,4 +65,5 @@ dependencies {
|
|||
compileOnly("com.github.milkbowl:VaultAPI:1.7") {
|
||||
exclude("org.bukkit","bukkit")
|
||||
}
|
||||
compileOnly("com.alttd.datalock:api:1.1.0-SNAPSHOT")
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@ import com.alttd.config.Config;
|
|||
import com.alttd.config.VillagerConfig;
|
||||
import com.alttd.config.WorthConfig;
|
||||
import com.alttd.database.Queries;
|
||||
import com.alttd.datalock.DataLockAPI;
|
||||
import com.alttd.events.*;
|
||||
import com.alttd.logging.LogInOut;
|
||||
import com.alttd.objects.EconUser;
|
||||
|
|
@ -44,12 +45,13 @@ public class VillagerUI extends JavaPlugin {
|
|||
return;
|
||||
Database.getDatabase().init();
|
||||
scheduleTasks();
|
||||
getServer().getMessenger().registerOutgoingPluginChannel(this, "villagerui:player-data");
|
||||
getServer().getMessenger().registerIncomingPluginChannel(this, "villagerui:player-data", new PluginMessageListener());
|
||||
if (Config.DEBUG) {
|
||||
Logger.info("Incoming: %\nOutgoing: %",
|
||||
getServer().getMessenger().getIncomingChannels().toString(),
|
||||
getServer().getMessenger().getOutgoingChannels().toString());
|
||||
DataLockAPI dataLockAPI = DataLockAPI.get();
|
||||
if (dataLockAPI == null) {
|
||||
Logger.severe("Unable to load datalockapi");
|
||||
} else if (dataLockAPI.isActiveChannel("villagerui:player-data")) {
|
||||
Logger.warning("Unable to register aquest channel");
|
||||
} else {
|
||||
dataLockAPI.registerChannel("villagerui:player-data");
|
||||
}
|
||||
Logger.info("--------------------------------------------------");
|
||||
Logger.info("Villager UI started");
|
||||
|
|
@ -92,6 +94,7 @@ public class VillagerUI extends JavaPlugin {
|
|||
getServer().getPluginManager().registerEvents(new LoginEvent(), this);
|
||||
getServer().getPluginManager().registerEvents(new VehicleEvent(), this);
|
||||
getServer().getPluginManager().registerEvents(new SpawnShopListener(logInOut), this);
|
||||
getServer().getPluginManager().registerEvents(new DataLock(), this);
|
||||
}
|
||||
|
||||
public Economy getEconomy() {
|
||||
|
|
|
|||
44
src/main/java/com/alttd/events/DataLock.java
Normal file
44
src/main/java/com/alttd/events/DataLock.java
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
package com.alttd.events;
|
||||
|
||||
import com.alttd.VillagerUI;
|
||||
import com.alttd.config.Config;
|
||||
import com.alttd.datalock.LockResponseEvent;
|
||||
import com.alttd.util.LoadUser;
|
||||
import com.alttd.util.Logger;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class DataLock implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onLockResponseEvent(LockResponseEvent event) {
|
||||
UUID uuid;
|
||||
try {
|
||||
uuid = UUID.fromString(event.getData());
|
||||
} catch (Exception e) {
|
||||
Logger.warning("Invalid data received from lock response event [%]", event.getData());
|
||||
return;
|
||||
}
|
||||
if (Config.DEBUG) {
|
||||
Logger.info("Received lock response: channel: [%], response type: [%], data: [%]", event.getChannel(), event.getResponseType().toString(), event.getData());
|
||||
}
|
||||
switch (event.getResponseType()) {
|
||||
case TRY_LOCK_RESULT -> {
|
||||
if (!event.getResult())
|
||||
return;
|
||||
new LoadUser(uuid).runTaskAsynchronously(VillagerUI.getInstance());
|
||||
}
|
||||
case QUEUE_LOCK_FAILED -> {
|
||||
Logger.warning("Unable to queue lock");
|
||||
}
|
||||
case TRY_UNLOCK_RESULT -> {
|
||||
if (event.getResult())
|
||||
return;
|
||||
Logger.warning("Unable to unlock user [%]", uuid.toString());
|
||||
}
|
||||
default -> Logger.warning("Received unimplemented response type [%]", event.getResponseType().toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,11 +3,9 @@ package com.alttd.events;
|
|||
import com.alttd.GUI.GUI;
|
||||
import com.alttd.VillagerUI;
|
||||
import com.alttd.config.Config;
|
||||
import com.alttd.datalock.DataLockAPI;
|
||||
import com.alttd.objects.EconUser;
|
||||
import com.alttd.util.Logger;
|
||||
import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
|
@ -31,12 +29,7 @@ public class LogoutEvent implements Listener {
|
|||
user.syncPoints();
|
||||
EconUser.removeUser(uuid);
|
||||
}
|
||||
ByteArrayDataOutput out = ByteStreams.newDataOutput();
|
||||
out.writeUTF("try-unlock");
|
||||
out.writeUTF(uuid.toString());
|
||||
Bukkit.getServer().sendPluginMessage(VillagerUI.getInstance(),
|
||||
"villagerui:player-data",
|
||||
out.toByteArray());
|
||||
DataLockAPI.get().tryUnlock("villagerui:player-data", uuid.toString());
|
||||
}
|
||||
}.runTaskAsynchronously(VillagerUI.getInstance());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,72 +0,0 @@
|
|||
package com.alttd.events;
|
||||
|
||||
import com.alttd.VillagerUI;
|
||||
import com.alttd.config.Config;
|
||||
import com.alttd.database.Queries;
|
||||
import com.alttd.objects.EconUser;
|
||||
import com.alttd.util.Logger;
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class PluginMessageListener implements org.bukkit.plugin.messaging.PluginMessageListener {
|
||||
|
||||
@Override
|
||||
public void onPluginMessageReceived(@NotNull String channel, @NotNull Player player, @NotNull byte[] bytes) {
|
||||
if (!channel.equals("villagerui:player-data")) {
|
||||
Logger.warning("Received plugin message on invalid channel");
|
||||
return;
|
||||
}
|
||||
ByteArrayDataInput in = ByteStreams.newDataInput(bytes);
|
||||
switch (in.readUTF()) {
|
||||
case "try-lock-result" -> {
|
||||
if (!in.readBoolean()) {
|
||||
Logger.warning("Unable to lock row");
|
||||
return; //TODO handle
|
||||
}
|
||||
UUID uuid = UUID.fromString(in.readUTF());
|
||||
loadUser(uuid);
|
||||
}
|
||||
case "queue-lock-failed" -> Logger.warning("Encountered uuid that was locked and had a lock queued: %, lock is from %", in.readUTF(), in.readUTF());
|
||||
case "try-unlock-result" -> {
|
||||
if (in.readBoolean()) {
|
||||
// ignore?
|
||||
return;
|
||||
}
|
||||
Logger.severe("Unable to unlock %.", in.readUTF());
|
||||
}
|
||||
case "locked-queue-lock" -> {
|
||||
if (!in.readBoolean()) {
|
||||
Logger.warning("Got false back from locked queue lock");
|
||||
return; //TODO handle
|
||||
}
|
||||
UUID uuid = UUID.fromString(in.readUTF());
|
||||
loadUser(uuid);
|
||||
}
|
||||
case "check-lock-result" -> {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void loadUser(UUID uuid) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
EconUser user = Queries.getEconUser(uuid);
|
||||
if (Config.DEBUG)
|
||||
Logger.info("Loaded EconUser % with the following points:\n%",
|
||||
uuid.toString(), user.getPointsMap().object2ObjectEntrySet().stream()
|
||||
.map(entry -> entry.getKey() + " - " + entry.getValue().toString())
|
||||
.collect(Collectors.joining("\n")));
|
||||
int minutes = Queries.getMinutesSinceUpdated(uuid);
|
||||
user.removePoints(minutes * 2);
|
||||
}
|
||||
}.runTaskAsynchronously(VillagerUI.getInstance());
|
||||
}
|
||||
}
|
||||
|
|
@ -3,15 +3,18 @@ package com.alttd.objects;
|
|||
import com.alttd.VillagerUI;
|
||||
import com.alttd.config.Config;
|
||||
import com.alttd.database.Queries;
|
||||
import com.alttd.datalock.DataLockAPI;
|
||||
import com.alttd.util.Logger;
|
||||
import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.jetbrains.annotations.Unmodifiable;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class EconUser {
|
||||
|
|
@ -124,12 +127,7 @@ public class EconUser {
|
|||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
ByteArrayDataOutput out = ByteStreams.newDataOutput();
|
||||
out.writeUTF("try-lock");
|
||||
out.writeUTF(uuid.toString());
|
||||
Bukkit.getServer().sendPluginMessage(VillagerUI.getInstance(),
|
||||
"villagerui:player-data",
|
||||
out.toByteArray());
|
||||
DataLockAPI.get().tryLock("villagerui:player-data", uuid.toString());
|
||||
}
|
||||
}.runTaskAsynchronously(VillagerUI.getInstance());
|
||||
}
|
||||
|
|
|
|||
30
src/main/java/com/alttd/util/LoadUser.java
Normal file
30
src/main/java/com/alttd/util/LoadUser.java
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
package com.alttd.util;
|
||||
|
||||
import com.alttd.config.Config;
|
||||
import com.alttd.database.Queries;
|
||||
import com.alttd.objects.EconUser;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class LoadUser extends BukkitRunnable {
|
||||
|
||||
UUID uuid;
|
||||
|
||||
public LoadUser(UUID uuid) {
|
||||
this.uuid = uuid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
EconUser user = Queries.getEconUser(uuid);
|
||||
if (Config.DEBUG)
|
||||
Logger.info("Loaded EconUser % with the following points:\n%",
|
||||
uuid.toString(), user.getPointsMap().object2ObjectEntrySet().stream()
|
||||
.map(entry -> entry.getKey() + " - " + entry.getValue().toString())
|
||||
.collect(Collectors.joining("\n")));
|
||||
int minutes = Queries.getMinutesSinceUpdated(uuid);
|
||||
user.removePoints(minutes * 2);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user