YiC200333 / XConomy

An economy plugin that supports data synchronization between multiple servers
GNU General Public License v3.0
101 stars 36 forks source link

XConomy occasionally causes players to experience rare disconnections from the server. However, it frequently results in disconnections for AFK players. #118

Closed ArifErdoganK closed 1 year ago

ArifErdoganK commented 1 year ago

Version of XConomy
XConomy V2.25.7

Server version
Paper 1.8.8 #445

Storage-type
MySQL and Bungeecord/Redis Sync

Describe the issues
After extensive testing, I've identified a bug in the XConomy plugin that causes our players to be kicked from the game. This issue only arises when XConomy is used on multiple servers with Redis or Bungeecord.


XConomy's config.yml `#Default Online Offline SemiOnline

Default mode will automatically detect the player's UUID(support GeyserMC)

Online mode is better for servers that enable online-mode(support Yggdrasil)

Offline mode does not support ignoring username case

If you use floodgate(GeyserMC) and the option 'username-prefix' is set to empty, Please use SemiOnline mode

UUID-mode: SemiOnline

In convertion mode, can use command '/xconomy' import data from other plugins based on Vault

Conflicting data will be skipped, The imported data will be saved in XConomy/importdata/data.yml

In this mode, XConomy will not start normally

After the conversion, please check data and turn off this mode

Sponge version does not have this function

Importdata-mode: false

Settings

Settings:

Chinese ChineseTW English French Spanish Russian Turkish Japanese German

Indonesia Portuguese Italian

language: English

Whether to check for new version

check-update: false

TOP10 and the Server Total refresh time interval (Seconds)

refresh-time: 300

If set to true, XConomy will register the following commands:

# - economy
# - eco
# - ebalancetop
# - ebaltop
# - eeconomy

Please keep in mind that if Essentials is installed on your server

XConomy will take over these commands.

eco-command: false

XConomy will disable the economic function of Essentials.

Just the economic function.

disable-essentials: false

Initial balance

initial-bal: 300000

Tax to be paid for pay command (0.5 means 50%, 1 means 100%)

payment-tax: 0

Ranking size (Max value 100)

ranking-size: 10

Rows per page of list (Ranking and help menu)

lines-per-page: 10

If you need to modify the data in the database directly, it is recommended to enable it

Asynchronous saving of data is not supported after caching is disabled

Disabling caching will increase the pressure on the database

disable-cache: false

Dose save transaction record

Only MySQL is supported

transaction-record: false

Record transaction information of pay command while player offline.

The player will receive tips when they reconnect.

Transaction-record function must be enabled.

offline-pay-transfer-tips: false

Ignore the case of player names

username-ignore-case: false

It can solve the problem that some plugins need to create non-player accounts, such as Factions

==========================================================================================

Plugins supported by default (no requirement to enable non-player-account)

Towny

==========================================================================================

Non-player account data is not synced with BC

non-player-account:

Whether to enable non-player accounts.

enable: true

If the account name contains fields in the whitelist, it will be recognized as non-player accounts.

Otherwise, it is recognized as a player account

If the player's name contains fields in the whitelist, it will be denied access to the server.

This function can reduce the times that reading data from the database.

whitelist:

Whether to enable whitelist.

enable: false
fields-list:
  - tax
  - nation-

The display of the currency

Currency: singular-name: TL plural-name: TL

Is the balance an integer

integer-bal: false thousands-separator: ','

%format_balance% indicate the balance after the format

display-format: '%balance%'

Maximum amount (default is maximum)

max-number: '10000000000000000' format-balance: 10000000000000000: m

SyncData settings

SyncData:

Whether to enable data synchronization between multiple servers

enable: true

BungeeCord Redis

================================================== BungeeCord Channel ==================================================

After BungeeCord sync is turned on, the console and other plugins will not be able to modify the balance in the server without player

Please Set bungeecord to true in the spigot.yml

================================================== Redis Channel ==================================================

Require 'slf4j' dependencies

channel-type: Redis

Server ID, keep the ID and the MySQL settings is the same between the servers requiring synchronization

sign: Faction`

XConomy's database.yml `Settings:

SQLite MySQL

storage-type: MySQL

Use connection pool or not

Require 'slf4j' dependencies

At least java version 11 is required

usepool: true

Set the maximum number of threads (SQLite no such setting)

max-threads: 5

SQLite settings

SQLite:

Address is the folder path

path: Default

MySQL settings

MySQL: host: localhost port: 3306 user: xxxx_eko pass: xxxxxxx database: xxxx_eko

auto add "_", can use %sign% to indicate Server ID (BungeeCord settings)

table-suffix: '' property: usessl: false encoding: utf8 timezone: '' allowPublicKeyRetrieval: false

Connection pool settings

Pool-Settings: maximum-pool-size: 10 minimum-idle: 10 maximum-lifetime: 180000 idle-timeout: 60000

Redis settings

Redis: host: localhost port: 6379 db-index: 1 pool-settings: max-total: 10 max-idle: 10 min-idle: 0 auth: user: '' pass: 'xxxxxxxx'`

YiC200333 commented 1 year ago

Can you provide more information? There were no issues with my testing, including my own server