Started using data lock
This commit is contained in:
1 parent
bd8c6f414c
commit
e28d6c4e34
13 files changed
+109
-59
No files matched your search
@@ -1,35 +1,13 @@
|
||||
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 org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class LoginEvent implements Listener {
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
//TODO lock user
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
UUID uuid = player.getUniqueId();
|
||||
EconUser user = EconUser.getUser(uuid);
|
||||
int minutes = Queries.getMinutesSinceUpdated(uuid);
|
||||
|
||||
user.removePoints(minutes * 2);
|
||||
if (Config.DEBUG)
|
||||
Logger.info("Loaded EconUser for % and removed % points",
|
||||
player.getName(), String.valueOf(minutes * 2));
|
||||
}
|
||||
}.runTask(VillagerUI.getInstance());
|
||||
EconUser.tryLoadUser(event.getPlayer().getUniqueId());
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,17 @@
|
||||
package com.alttd.events;
|
||||
|
||||
import com.alttd.GUI.GUI;
|
||||
import com.alttd.VillagerUI;
|
||||
import com.alttd.config.Config;
|
||||
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;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -17,8 +22,17 @@ public class LogoutEvent implements Listener {
|
||||
|
||||
if (Config.DEBUG)
|
||||
Logger.info("Syncing %", event.getPlayer().getName());
|
||||
EconUser.getUser(uuid).syncPoints();
|
||||
EconUser.removeUser(uuid);
|
||||
GUI.GUIByUUID.remove(uuid);
|
||||
ByteArrayDataOutput out = ByteStreams.newDataOutput();
|
||||
out.writeUTF("try-unlock");
|
||||
out.writeUTF(uuid.toString());
|
||||
Bukkit.getServer().sendPluginMessage(VillagerUI.getInstance(),
|
||||
"villagerui:player-data",
|
||||
out.toByteArray());
|
||||
EconUser user = EconUser.getUser(uuid);
|
||||
if (user == null)
|
||||
return;
|
||||
user.syncPoints();
|
||||
EconUser.removeUser(uuid);
|
||||
}
|
||||
}
|
||||
@@ -1,22 +1,73 @@
|
||||
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;
|
||||
|
||||
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")) {
|
||||
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);
|
||||
|
||||
int minutes = Queries.getMinutesSinceUpdated(uuid);
|
||||
user.removePoints(minutes * 2);
|
||||
if (Config.DEBUG)
|
||||
Logger.info("Loaded EconUser for % and removed % points",
|
||||
uuid.toString(), String.valueOf(minutes * 2));
|
||||
|
||||
EconUser.addUser(uuid, user);
|
||||
EconUser.removeQueriedUser(uuid);
|
||||
}
|
||||
}.runTaskAsynchronously(VillagerUI.getInstance());
|
||||
}
|
||||
}
|
||||
@@ -42,7 +42,7 @@ public class VillagerEvents implements Listener {
|
||||
}
|
||||
EconUser user = EconUser.getUser(player.getUniqueId());
|
||||
if (user == null) {
|
||||
Utilities.econSyncingMessage(player);
|
||||
player.sendMiniMessage(Config.LOADING_ECON_DATA, null);
|
||||
return;
|
||||
}
|
||||
new BukkitRunnable() {
|
||||
|
||||
Reference in new issue
Block a user