feat: removed deadlock from reset/update, updated items/translations
This commit is contained in:
parent
a1919caa2a
commit
ea3fa9b52e
12 changed files with 41 additions and 23 deletions
|
@ -4,6 +4,7 @@ import net.kyori.adventure.text.Component;
|
|||
import net.wesjd.anvilgui.AnvilGUI;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
@ -11,8 +12,8 @@ import xyz.ineanto.nicko.Nicko;
|
|||
import xyz.ineanto.nicko.appearance.ActionResult;
|
||||
import xyz.ineanto.nicko.appearance.AppearanceManager;
|
||||
import xyz.ineanto.nicko.event.custom.PlayerDisguiseEvent;
|
||||
import xyz.ineanto.nicko.language.PlayerLanguage;
|
||||
import xyz.ineanto.nicko.language.LanguageKey;
|
||||
import xyz.ineanto.nicko.language.PlayerLanguage;
|
||||
import xyz.ineanto.nicko.mojang.MojangUtils;
|
||||
import xyz.ineanto.nicko.profile.NickoProfile;
|
||||
import xyz.ineanto.nicko.storage.PlayerDataStore;
|
||||
|
@ -116,14 +117,15 @@ public class AnvilManager {
|
|||
|
||||
final ActionResult actionResult = appearanceManager.update(skinChange, false);
|
||||
if (!actionResult.isError()) {
|
||||
player.sendMessage(playerLanguage.translate(LanguageKey.Event.Appearance.Set.OK, true));
|
||||
player.sendMessage(playerLanguage.translateWithWhoosh(LanguageKey.Event.Appearance.Set.OK));
|
||||
player.playSound(player, Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1f);
|
||||
} else {
|
||||
player.sendMessage(
|
||||
playerLanguage.translate(
|
||||
playerLanguage.translateWithOops(
|
||||
LanguageKey.Event.Appearance.Set.ERROR,
|
||||
true,
|
||||
playerLanguage.translate(actionResult.getErrorKey(), false)
|
||||
));
|
||||
player.playSound(player, Sound.BLOCK_ANVIL_PLACE, 0.5f, 1f);
|
||||
}
|
||||
return Collections.singletonList(AnvilGUI.ResponseAction.close());
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ public class AppearanceManager {
|
|||
this.packetSender = new InternalPacketSender(player, getNickoProfile());
|
||||
}
|
||||
|
||||
public ActionResult reset() {
|
||||
public ActionResult reset(boolean apply) {
|
||||
final NickoProfile profile = getNickoProfile();
|
||||
final String defaultName = nameStore.getStoredName(player);
|
||||
|
||||
|
@ -32,13 +32,17 @@ public class AppearanceManager {
|
|||
profile.setSkin(defaultName);
|
||||
dataStore.getCache().cache(player.getUniqueId(), profile);
|
||||
|
||||
final ActionResult result = update(true, true);
|
||||
if (apply) {
|
||||
final ActionResult result = update(true, true);
|
||||
|
||||
profile.setName(null);
|
||||
profile.setSkin(null);
|
||||
dataStore.getCache().cache(player.getUniqueId(), profile);
|
||||
profile.setName(null);
|
||||
profile.setSkin(null);
|
||||
dataStore.getCache().cache(player.getUniqueId(), profile);
|
||||
|
||||
return result;
|
||||
return result;
|
||||
}
|
||||
|
||||
return ActionResult.ok();
|
||||
}
|
||||
|
||||
public ActionResult update(boolean skinChange, boolean reset) {
|
||||
|
@ -47,7 +51,9 @@ public class AppearanceManager {
|
|||
|
||||
final ActionResult result = packetSender.sendGameProfileUpdate(displayName, skinChange, reset);
|
||||
|
||||
if (result.isError()) { reset(); }
|
||||
if (result.isError()) {
|
||||
return reset(false);
|
||||
}
|
||||
|
||||
packetSender.sendEntityMetadataUpdate();
|
||||
packetSender.sendTabListUpdate(displayName);
|
||||
|
|
|
@ -2,6 +2,7 @@ package xyz.ineanto.nicko.gui.items.admin.cache;
|
|||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
|
@ -55,7 +56,8 @@ public class CacheEntryItem extends AsyncItem {
|
|||
@Override
|
||||
public void onConfirm() {
|
||||
final PlayerLanguage playerLanguage = new PlayerLanguage(player);
|
||||
player.sendMessage(playerLanguage.translateWithWhoosh(LanguageKey.Event.Admin.Cache.INVALIDATE_ENTRY, name));
|
||||
player.sendMessage(playerLanguage.translate(LanguageKey.Event.Admin.Cache.INVALIDATE_ENTRY, true, name));
|
||||
player.playSound(player, Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1f);
|
||||
mojangAPI.eraseFromCache(uuid);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package xyz.ineanto.nicko.gui.items.admin.cache;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import xyz.ineanto.nicko.Nicko;
|
||||
|
@ -28,6 +29,7 @@ public class InvalidateCacheItem {
|
|||
final Player player = click.getPlayer();
|
||||
final PlayerLanguage playerLanguage = new PlayerLanguage(player);
|
||||
player.sendMessage(playerLanguage.translateWithWhoosh(LanguageKey.Event.Admin.Cache.INVALIDATE_CACHE));
|
||||
player.playSound(player, Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1f);
|
||||
Nicko.getInstance().getMojangAPI().getSkinCache().invalidateAll();
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package xyz.ineanto.nicko.gui.items.admin.check;
|
|||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
|
@ -77,7 +78,8 @@ public class PlayerInformationItem extends AsyncItem {
|
|||
@Override
|
||||
public void onConfirm() {
|
||||
final AppearanceManager appearanceManager = new AppearanceManager(target);
|
||||
appearanceManager.reset();
|
||||
appearanceManager.reset(true);
|
||||
player.playSound(player, Sound.ENTITY_VILLAGER_TRADE, 1, 1f);
|
||||
player.sendMessage(playerLanguage.translate(LanguageKey.Event.Admin.Check.REMOVE_SKIN, true, target.getName()));
|
||||
}
|
||||
|
||||
|
|
|
@ -3,9 +3,11 @@ package xyz.ineanto.nicko.gui.items.appearance;
|
|||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import xyz.ineanto.nicko.Nicko;
|
||||
import xyz.ineanto.nicko.anvil.AnvilManager;
|
||||
import xyz.ineanto.nicko.language.LanguageKey;
|
||||
import xyz.ineanto.nicko.language.PlayerLanguage;
|
||||
import xyz.ineanto.nicko.storage.name.PlayerNameStore;
|
||||
import xyz.xenondevs.invui.item.builder.AbstractItemBuilder;
|
||||
import xyz.xenondevs.invui.item.builder.ItemBuilder;
|
||||
import xyz.xenondevs.invui.item.builder.SkullBuilder;
|
||||
|
@ -16,10 +18,12 @@ import java.io.IOException;
|
|||
|
||||
public class ChangeSkinItem {
|
||||
private final PlayerLanguage playerLanguage;
|
||||
private final PlayerNameStore playerNameStore;
|
||||
private final Player player;
|
||||
|
||||
public ChangeSkinItem(Player player) {
|
||||
this.playerLanguage = new PlayerLanguage(player);
|
||||
this.playerNameStore = Nicko.getInstance().getNameStore();
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
|
@ -28,7 +32,7 @@ public class ChangeSkinItem {
|
|||
AbstractItemBuilder<?> builder;
|
||||
|
||||
try {
|
||||
builder = new SkullBuilder(player.getName());
|
||||
builder = new SkullBuilder(playerNameStore.getStoredName(player));
|
||||
} catch (MojangApiUtils.MojangApiException | IOException e) {
|
||||
builder = new ItemBuilder(Material.PLAYER_HEAD);
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ public class AdminAccessItem {
|
|||
|
||||
public SuppliedItem get() {
|
||||
return new SuppliedItem(() -> {
|
||||
final ItemBuilder builder = new ItemBuilder(Material.SCAFFOLDING);
|
||||
final ItemBuilder builder = new ItemBuilder(Material.COMMAND_BLOCK);
|
||||
return playerLanguage.translateItem(builder, LanguageKey.GUI.Home.ADMIN);
|
||||
}, click -> {
|
||||
final ClickType clickType = click.getClickType();
|
||||
|
|
|
@ -25,7 +25,7 @@ public class RandomSkinItem {
|
|||
|
||||
public SuppliedItem get() {
|
||||
return new SuppliedItem(() -> {
|
||||
final ItemBuilder builder = new ItemBuilder(Material.SPAWNER);
|
||||
final ItemBuilder builder = new ItemBuilder(Material.WIND_CHARGE);
|
||||
return playerLanguage.translateItem(builder, LanguageKey.GUI.Home.RANDOM_SKIN);
|
||||
}, (event) -> {
|
||||
final Player player = event.getPlayer();
|
||||
|
@ -42,14 +42,14 @@ public class RandomSkinItem {
|
|||
final AppearanceManager appearanceManager = new AppearanceManager(player);
|
||||
final ActionResult result = appearanceManager.update(true, false);
|
||||
if (!result.isError()) {
|
||||
player.sendMessage(playerLanguage.translate(LanguageKey.Event.Appearance.Set.OK, true));
|
||||
player.sendMessage(playerLanguage.translateWithWhoosh(LanguageKey.Event.Appearance.Set.OK));
|
||||
} else {
|
||||
player.sendMessage(playerLanguage.translate(
|
||||
player.sendMessage(playerLanguage.translateWithOops(
|
||||
LanguageKey.Event.Appearance.Set.ERROR,
|
||||
true,
|
||||
playerLanguage.translate(result.getErrorKey(), false)
|
||||
)
|
||||
);
|
||||
appearanceManager.reset(false);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
|
|
|
@ -36,7 +36,7 @@ public class ResetItem {
|
|||
}
|
||||
|
||||
final AppearanceManager appearanceManager = new AppearanceManager(player);
|
||||
if (!appearanceManager.reset().isError()) {
|
||||
if (!appearanceManager.reset(true).isError()) {
|
||||
player.sendMessage(playerLanguage.translateWithWhoosh(LanguageKey.Event.Appearance.Remove.OK));
|
||||
} else {
|
||||
player.sendMessage(playerLanguage.translateWithOops(LanguageKey.Event.Appearance.Remove.ERROR));
|
||||
|
|
|
@ -73,7 +73,7 @@ public class InternalPacketSender implements PacketSender {
|
|||
|
||||
@Override
|
||||
public ActionResult sendGameProfileUpdate(String name, boolean skinChange, boolean reset) {
|
||||
final GameProfile gameProfile = ((CraftPlayer) player).getProfile();
|
||||
final GameProfile gameProfile = new GameProfile(player.getUniqueId(), name);
|
||||
|
||||
// TODO (Ineanto, 31/10/2024): Could this be refactored to get rid of the boolean?
|
||||
if (skinChange) {
|
||||
|
|
|
@ -94,7 +94,7 @@ gui:
|
|||
change_both:
|
||||
name: "Change <gold>both</gold>"
|
||||
random_skin:
|
||||
name: "<rainbow>Get a random appearance!</rainbow>"
|
||||
name: "<bold>I feel <gold>lucky!</gold></bold>"
|
||||
reset:
|
||||
name: "Reset appearance"
|
||||
lore:
|
||||
|
|
|
@ -95,7 +95,7 @@ gui:
|
|||
change_both:
|
||||
name: "Changer les <gold>deux</gold>"
|
||||
random_skin:
|
||||
name: "<rainbow>Obtenir une apparence aléatoire !</rainbow>"
|
||||
name: "<bold>Je me sens <gold>chanceux !</gold></bold>"
|
||||
reset:
|
||||
name: "Réinitialiser l'apparence"
|
||||
lore:
|
||||
|
|
Loading…
Reference in a new issue