geforkt von SteamWar/BungeeCore
Update language stuff
Dieser Commit ist enthalten in:
Ursprung
0dc49a3123
Commit
df310716d8
@ -20,7 +20,7 @@
|
|||||||
package de.steamwar.bungeecore.commands;
|
package de.steamwar.bungeecore.commands;
|
||||||
|
|
||||||
import de.steamwar.bungeecore.sql.SteamwarUser;
|
import de.steamwar.bungeecore.sql.SteamwarUser;
|
||||||
import de.steamwar.bungeecore.sql.UserConfig;
|
import de.steamwar.messages.ChatSender;
|
||||||
import net.md_5.bungee.api.CommandSender;
|
import net.md_5.bungee.api.CommandSender;
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
|
|
||||||
@ -40,12 +40,12 @@ public class LockCurrentLocaleCommand extends BasicCommand {
|
|||||||
ProxiedPlayer proxiedPlayer = (ProxiedPlayer) commandSender;
|
ProxiedPlayer proxiedPlayer = (ProxiedPlayer) commandSender;
|
||||||
SteamwarUser steamwarUser = SteamwarUser.get(proxiedPlayer);
|
SteamwarUser steamwarUser = SteamwarUser.get(proxiedPlayer);
|
||||||
|
|
||||||
// TODO: Hier fehlt noch eine Nachricht an den User. Sollte deswegen erst gemerged werden, wenn der branch 'english' germerged ist
|
|
||||||
Locale locale = proxiedPlayer.getLocale();
|
Locale locale = proxiedPlayer.getLocale();
|
||||||
if (locale == null) {
|
if (locale == null) {
|
||||||
// TODO: Fehlermeldung
|
ChatSender.of(proxiedPlayer).system("LOCK_LOCALE_ERROR");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
UserConfig.updatePlayerConfig(steamwarUser.getId(), "language", proxiedPlayer.getLocale().getLanguage());
|
steamwarUser.setLocale(locale, true);
|
||||||
|
ChatSender.of(proxiedPlayer).system("LOCK_LOCALE_CHANGED");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,8 @@ public class PacketIdManager {
|
|||||||
public static final byte BAUMEMBER_UPDATE = 0x04;
|
public static final byte BAUMEMBER_UPDATE = 0x04;
|
||||||
public static final byte EXECUTE_COMMAND = 0x05;
|
public static final byte EXECUTE_COMMAND = 0x05;
|
||||||
|
|
||||||
|
public static final byte LOCALE_INVALIDATION = 0x06;
|
||||||
|
|
||||||
//0x1(X) Bungee Inventory
|
//0x1(X) Bungee Inventory
|
||||||
public static final byte INVENTORY_PACKET = 0x10;
|
public static final byte INVENTORY_PACKET = 0x10;
|
||||||
public static final byte INVENTORY_CALLBACK_PACKET = 0x11;
|
public static final byte INVENTORY_CALLBACK_PACKET = 0x11;
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2020 SteamWar.de-Serverteam
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.steamwar.bungeecore.comms.packets;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataOutput;
|
||||||
|
import de.steamwar.bungeecore.comms.BungeePacket;
|
||||||
|
import de.steamwar.bungeecore.comms.PacketIdManager;
|
||||||
|
|
||||||
|
public class LocaleInvalidationPacket extends BungeePacket {
|
||||||
|
|
||||||
|
private int userId;
|
||||||
|
|
||||||
|
public LocaleInvalidationPacket(int userId) {
|
||||||
|
this.userId = userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getId() {
|
||||||
|
return PacketIdManager.LOCALE_INVALIDATION;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeVars(ByteArrayDataOutput byteArrayDataOutput) {
|
||||||
|
byteArrayDataOutput.writeInt(userId);
|
||||||
|
}
|
||||||
|
}
|
@ -23,6 +23,7 @@ import com.google.gson.JsonParser;
|
|||||||
import de.steamwar.bungeecore.BungeeCore;
|
import de.steamwar.bungeecore.BungeeCore;
|
||||||
import de.steamwar.bungeecore.Message;
|
import de.steamwar.bungeecore.Message;
|
||||||
import de.steamwar.bungeecore.commands.WebregisterCommand;
|
import de.steamwar.bungeecore.commands.WebregisterCommand;
|
||||||
|
import de.steamwar.bungeecore.comms.packets.LocaleInvalidationPacket;
|
||||||
import de.steamwar.bungeecore.listeners.ConnectionListener;
|
import de.steamwar.bungeecore.listeners.ConnectionListener;
|
||||||
import de.steamwar.messages.ChatSender;
|
import de.steamwar.messages.ChatSender;
|
||||||
import net.md_5.bungee.api.ProxyServer;
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
@ -45,6 +46,7 @@ public class SteamwarUser {
|
|||||||
|
|
||||||
private static final Statement updateName = new Statement("UPDATE UserData SET UserName = ? WHERE id = ?");
|
private static final Statement updateName = new Statement("UPDATE UserData SET UserName = ? WHERE id = ?");
|
||||||
private static final Statement updateBedrock = new Statement("UPDATE UserData SET Bedrock = ? WHERE id = ?");
|
private static final Statement updateBedrock = new Statement("UPDATE UserData SET Bedrock = ? WHERE id = ?");
|
||||||
|
private static final Statement updateLocale = new Statement("UPDATE UserData SET Locale = ?, ManualLocale = ? WHERE id = ?");
|
||||||
private static final Statement insert = new Statement("INSERT INTO UserData (UUID, UserName, UserGroup) VALUES (?, ?, 'Member')");
|
private static final Statement insert = new Statement("INSERT INTO UserData (UUID, UserName, UserGroup) VALUES (?, ?, 'Member')");
|
||||||
private static final Statement byUUID = new Statement("SELECT * FROM UserData WHERE UUID = ?");
|
private static final Statement byUUID = new Statement("SELECT * FROM UserData WHERE UUID = ?");
|
||||||
private static final Statement byName = new Statement("SELECT * FROM UserData WHERE lower(UserName) = ?");
|
private static final Statement byName = new Statement("SELECT * FROM UserData WHERE lower(UserName) = ?");
|
||||||
@ -74,6 +76,9 @@ public class SteamwarUser {
|
|||||||
private final Map<Punishment.PunishmentType, Punishment> punishments;
|
private final Map<Punishment.PunishmentType, Punishment> punishments;
|
||||||
private Long discordId;
|
private Long discordId;
|
||||||
|
|
||||||
|
private Locale locale;
|
||||||
|
private boolean manualLocale;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
try {
|
try {
|
||||||
LIXFEL_DE = InetAddress.getByAddress(new byte[]{(byte) 195, (byte) 201, (byte) 242, 43});
|
LIXFEL_DE = InetAddress.getByAddress(new byte[]{(byte) 195, (byte) 201, (byte) 242, 43});
|
||||||
@ -94,6 +99,15 @@ public class SteamwarUser {
|
|||||||
if(rs.wasNull()) {
|
if(rs.wasNull()) {
|
||||||
discordId = null;
|
discordId = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String dbLocale = rs.getString("Locale");
|
||||||
|
if (dbLocale == null) {
|
||||||
|
locale = null;
|
||||||
|
} else {
|
||||||
|
locale = new Locale(dbLocale);
|
||||||
|
}
|
||||||
|
manualLocale = rs.getBoolean("ManualLocale");
|
||||||
|
|
||||||
usersById.put(id, this);
|
usersById.put(id, this);
|
||||||
usersByName.put(userName.toLowerCase(), this);
|
usersByName.put(userName.toLowerCase(), this);
|
||||||
usersByUUID.put(uuid, this);
|
usersByUUID.put(uuid, this);
|
||||||
@ -101,6 +115,7 @@ public class SteamwarUser {
|
|||||||
usersByDiscord.put(discordId, this);
|
usersByDiscord.put(discordId, this);
|
||||||
}
|
}
|
||||||
punishments = Punishment.getPunishmentsOfPlayer(id);
|
punishments = Punishment.getPunishmentsOfPlayer(id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SteamwarUser getOrCreate(PendingConnection connection) {
|
public static SteamwarUser getOrCreate(PendingConnection connection) {
|
||||||
@ -364,4 +379,19 @@ public class SteamwarUser {
|
|||||||
this.leader = leader;
|
this.leader = leader;
|
||||||
updateLeader.update(leader, id);
|
updateLeader.update(leader, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Locale getLocale() {
|
||||||
|
return locale;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isManualLocale() {
|
||||||
|
return manualLocale;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLocale(Locale locale, boolean manualLocale) {
|
||||||
|
this.locale = locale;
|
||||||
|
this.manualLocale = manualLocale;
|
||||||
|
updateLocale.update(locale.getLanguage(), manualLocale, id);
|
||||||
|
new LocaleInvalidationPacket(id).send(getPlayer());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,62 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is a part of the SteamWar software.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2020 SteamWar.de-Serverteam
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.steamwar.bungeecore.sql;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
public class UserConfig {
|
|
||||||
private UserConfig() {}
|
|
||||||
|
|
||||||
private static final Statement getConfig = new Statement("SELECT Value FROM UserConfig WHERE User = ? AND Config = ?");
|
|
||||||
private static final Statement setConfig = new Statement("INSERT INTO UserConfig (User, Config, Value) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE Value = VALUES(Value)");
|
|
||||||
private static final Statement deleteConfig = new Statement("DELETE FROM UserConfig WHERE User = ? AND Config = ?");
|
|
||||||
|
|
||||||
public static String getConfig(UUID player, String config) {
|
|
||||||
return getConfig(SteamwarUser.get(player).getId(), config);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getConfig(int player, String config) {
|
|
||||||
return getConfig.select(rs -> {
|
|
||||||
if(rs.next())
|
|
||||||
return rs.getString("Value");
|
|
||||||
return null;
|
|
||||||
}, player, config);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void updatePlayerConfig(UUID uuid, String config, String value) {
|
|
||||||
updatePlayerConfig(SteamwarUser.get(uuid).getId(), config, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void updatePlayerConfig(int id, String config, String value) {
|
|
||||||
if (value == null) {
|
|
||||||
removePlayerConfig(id, config);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
setConfig.update(id, config, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void removePlayerConfig(UUID uuid, String config) {
|
|
||||||
removePlayerConfig(SteamwarUser.get(uuid).getId(), config);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void removePlayerConfig(int id, String config) {
|
|
||||||
deleteConfig.update(id, config);
|
|
||||||
}
|
|
||||||
}
|
|
@ -620,3 +620,7 @@ FIGHT_MERGE_ACCEPT=Join fight
|
|||||||
FIGHT_MERGE_INFO_LORE_1=§8By: §e{0}
|
FIGHT_MERGE_INFO_LORE_1=§8By: §e{0}
|
||||||
FIGHT_MERGE_OFFLINE=§7The proposed arena has been terminated in the meantime, a new arena will be started.
|
FIGHT_MERGE_OFFLINE=§7The proposed arena has been terminated in the meantime, a new arena will be started.
|
||||||
FIGHT_MERGE_INFO=§e{0}§8: §e{1}
|
FIGHT_MERGE_INFO=§e{0}§8: §e{1}
|
||||||
|
|
||||||
|
#Locale Locking
|
||||||
|
LOCK_LOCALE_ERROR=§cError while locking your language
|
||||||
|
LOCK_LOCALE_CHANGED=§aLanguage locked to your current minecraft language
|
@ -22,7 +22,6 @@ package de.steamwar.messages;
|
|||||||
import de.steamwar.bungeecore.*;
|
import de.steamwar.bungeecore.*;
|
||||||
import de.steamwar.bungeecore.bot.listeners.DiscordChatListener;
|
import de.steamwar.bungeecore.bot.listeners.DiscordChatListener;
|
||||||
import de.steamwar.bungeecore.sql.SteamwarUser;
|
import de.steamwar.bungeecore.sql.SteamwarUser;
|
||||||
import de.steamwar.bungeecore.sql.UserConfig;
|
|
||||||
import net.md_5.bungee.api.ChatMessageType;
|
import net.md_5.bungee.api.ChatMessageType;
|
||||||
import net.md_5.bungee.api.CommandSender;
|
import net.md_5.bungee.api.CommandSender;
|
||||||
import net.md_5.bungee.api.ProxyServer;
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
@ -47,14 +46,7 @@ import java.util.stream.Stream;
|
|||||||
public interface ChatSender {
|
public interface ChatSender {
|
||||||
|
|
||||||
static Locale getLocale(ProxiedPlayer player) {
|
static Locale getLocale(ProxiedPlayer player) {
|
||||||
String dbLocale = UserConfig.getConfig(SteamwarUser.get(player).getId(), "language");
|
return SteamwarUser.get(player).getLocale();
|
||||||
if (dbLocale != null) {
|
|
||||||
return new Locale(dbLocale);
|
|
||||||
}
|
|
||||||
Locale locale = player.getLocale();
|
|
||||||
if(locale == null)
|
|
||||||
locale = Locale.getDefault();
|
|
||||||
return locale;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Stream<ProxiedPlayer> all() {
|
static Stream<ProxiedPlayer> all() {
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren