Skip to content

Commit

Permalink
Reduce lag caused by getOfflinePlayer (#114)
Browse files Browse the repository at this point in the history
* Ignore .vscode/tasks.json & .vscode/launch.json

* Stock result of getOfflinePlayer()
  • Loading branch information
GroobleDierne committed Oct 9, 2022
1 parent 5612082 commit 072fbae
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 50 deletions.
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,8 @@ buildNumber.properties
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
.vscode/tasks.json
.vscode/launch.json
!.vscode/extensions.json
*.code-workspace

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
package org.gestern.gringotts.accountholder;

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.gestern.gringotts.event.VaultCreationEvent;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
* Manages creating various types of AccountHolder centrally.
*
Expand Down
10 changes: 6 additions & 4 deletions src/main/java/org/gestern/gringotts/api/impl/GringottsEco.java
Original file line number Diff line number Diff line change
Expand Up @@ -164,15 +164,17 @@ public Account getAccount(String id) {

if (player == null) {
//noinspection deprecation
if (Bukkit.getOfflinePlayer(id).hasPlayedBefore()) {
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(id);
if (offlinePlayer.hasPlayedBefore()) {
//noinspection deprecation
player = Bukkit.getOfflinePlayer(id);
player = offlinePlayer;
} else {
try {
UUID targetUuid = UUID.fromString(id);
offlinePlayer = Bukkit.getOfflinePlayer(targetUuid);

if (Bukkit.getOfflinePlayer(targetUuid).hasPlayedBefore()) {
player = Bukkit.getOfflinePlayer(targetUuid);
if (offlinePlayer.hasPlayedBefore()) {
player = offlinePlayer;
}
} catch (IllegalArgumentException ignored) {
}
Expand Down
52 changes: 28 additions & 24 deletions src/main/java/org/gestern/gringotts/api/impl/VaultConnector.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,18 +65,19 @@ public boolean hasAccount(String accountId) {

if (player == null) {
//noinspection deprecation
if (Bukkit.getOfflinePlayer(accountId).hasPlayedBefore()) {
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(accountId);
if (offlinePlayer.hasPlayedBefore()) {
//noinspection deprecation
player = Bukkit.getOfflinePlayer(accountId);
player = offlinePlayer;
} else {
try {
UUID targetUuid = UUID.fromString(accountId);
offlinePlayer = Bukkit.getOfflinePlayer(targetUuid);

if (Bukkit.getOfflinePlayer(targetUuid).hasPlayedBefore()) {
player = Bukkit.getOfflinePlayer(targetUuid);
if (offlinePlayer.hasPlayedBefore()) {
player = offlinePlayer;
}
} catch (IllegalArgumentException ignored) {
}
} catch (IllegalArgumentException ignored) {}
}
}

Expand All @@ -98,18 +99,19 @@ public double getBalance(String accountId) {

if (player == null) {
//noinspection deprecation
if (Bukkit.getOfflinePlayer(accountId).hasPlayedBefore()) {
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(accountId);
if (offlinePlayer.hasPlayedBefore()) {
//noinspection deprecation
player = Bukkit.getOfflinePlayer(accountId);
player = offlinePlayer;
} else {
try {
UUID targetUuid = UUID.fromString(accountId);

if (Bukkit.getOfflinePlayer(targetUuid).hasPlayedBefore()) {
player = Bukkit.getOfflinePlayer(targetUuid);
offlinePlayer = Bukkit.getOfflinePlayer(targetUuid);
if (offlinePlayer.hasPlayedBefore()) {
player = offlinePlayer;
}
} catch (IllegalArgumentException ignored) {
}
} catch (IllegalArgumentException ignored) {}
}
}

Expand All @@ -131,18 +133,19 @@ public boolean has(String accountId, double amount) {

if (player == null) {
//noinspection deprecation
if (Bukkit.getOfflinePlayer(accountId).hasPlayedBefore()) {
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(accountId);
if (offlinePlayer.hasPlayedBefore()) {
//noinspection deprecation
player = Bukkit.getOfflinePlayer(accountId);
player = offlinePlayer;
} else {
try {
UUID targetUuid = UUID.fromString(accountId);
offlinePlayer = Bukkit.getOfflinePlayer(targetUuid);

if (Bukkit.getOfflinePlayer(targetUuid).hasPlayedBefore()) {
player = Bukkit.getOfflinePlayer(targetUuid);
if (offlinePlayer.hasPlayedBefore()) {
player = offlinePlayer;
}
} catch (IllegalArgumentException ignored) {
}
} catch (IllegalArgumentException ignored) {}
}
}

Expand All @@ -164,18 +167,19 @@ public EconomyResponse withdrawPlayer(String accountId, double amount) {

if (player == null) {
//noinspection deprecation
if (Bukkit.getOfflinePlayer(accountId).hasPlayedBefore()) {
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(accountId);
if (offlinePlayer.hasPlayedBefore()) {
//noinspection deprecation
player = Bukkit.getOfflinePlayer(accountId);
player = offlinePlayer;
} else {
try {
UUID targetUuid = UUID.fromString(accountId);
offlinePlayer = Bukkit.getOfflinePlayer(targetUuid);

if (Bukkit.getOfflinePlayer(targetUuid).hasPlayedBefore()) {
player = Bukkit.getOfflinePlayer(targetUuid);
if (offlinePlayer.hasPlayedBefore()) {
player = offlinePlayer;
}
} catch (IllegalArgumentException ignored) {
}
} catch (IllegalArgumentException ignored) {}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
package org.gestern.gringotts.commands;

import com.google.common.collect.Lists;
import net.md_5.bungee.api.chat.ComponentBuilder;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
Expand All @@ -14,12 +20,15 @@
import org.gestern.gringotts.Language;
import org.gestern.gringotts.Permissions;
import org.gestern.gringotts.accountholder.AccountHolderProvider;
import org.gestern.gringotts.api.*;
import org.gestern.gringotts.event.VaultCreationEvent;
import org.gestern.gringotts.api.Account;
import org.gestern.gringotts.api.Eco;
import org.gestern.gringotts.api.PlayerAccount;
import org.gestern.gringotts.api.TaxedTransaction;
import org.gestern.gringotts.api.TransactionResult;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import com.google.common.collect.Lists;

import net.md_5.bungee.api.chat.ComponentBuilder;

public abstract class GringottsAbstractExecutor implements TabExecutor {
static final String TAG_BALANCE = "%balance";
Expand Down Expand Up @@ -77,26 +86,28 @@ boolean pay(Player player, double value, String recipientName) {
return true;
}

OfflinePlayer reciepienPlayer = Bukkit.getPlayer(recipientName);
OfflinePlayer recipientPlayer = Bukkit.getPlayer(recipientName);

if (reciepienPlayer == null) {
if (recipientPlayer == null) {
//noinspection deprecation
if (Bukkit.getOfflinePlayer(recipientName).hasPlayedBefore()) {
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(recipientName);
if (offlinePlayer.hasPlayedBefore()) {
//noinspection deprecation
reciepienPlayer = Bukkit.getOfflinePlayer(recipientName);
recipientPlayer = offlinePlayer;
} else {
try {
UUID targetUuid = UUID.fromString(recipientName);
offlinePlayer = Bukkit.getOfflinePlayer(targetUuid);

if (Bukkit.getOfflinePlayer(targetUuid).hasPlayedBefore()) {
reciepienPlayer = Bukkit.getOfflinePlayer(targetUuid);
if (offlinePlayer.hasPlayedBefore()) {
recipientPlayer = offlinePlayer;
}
} catch (IllegalArgumentException ignored) {
}
}
}

if (reciepienPlayer == null) {
if (recipientPlayer == null) {
player.spigot().sendMessage(
new ComponentBuilder(
"Player with name `" + recipientName + "` never played in this server before."
Expand All @@ -110,7 +121,7 @@ boolean pay(Player player, double value, String recipientName) {
Account to = eco.account(recipientName);

TaxedTransaction transaction = from.send(value).withTaxes();
TransactionResult result = transaction.to(eco.player(reciepienPlayer.getUniqueId()));
TransactionResult result = transaction.to(eco.player(recipientPlayer.getUniqueId()));

double tax = transaction.getTax();
double valueAdded = value + tax;
Expand Down

0 comments on commit 072fbae

Please sign in to comment.