If radius is 1 (as it is when called elsewhere in the class), the loop
conditions fail to refresh some of the neighboring chunks, allowing for
ghost blocks to continue to occur on eastern and southern edges of the
chunk the player is in.
This commit fixes the loop conditions.
= Chunk diagram of old behavior =
-----
-RR--
-RP--
-----
-----
= Chunk diagram of new behavior =
-----
-RRR-
-RPR-
-RRR-
-----
= Legend =
P: the chunk the player is in
R and P: chunks that are refreshed
-: chunks that do not get refreshed
Fixed a glitch that let players remove the ingredient of a custom potion
from the brewing stand without cancelling the brewing task (this doesn't
seem to have caused any duplicates, once the task finished nothing
happened).
This adds on top of the diminishing returns system a mechanic such that gains will expire the configured number of minutes after they occured, rather than all being reset at once.
This prevents someone from not getting diminishing returns on the xp gain they recieved just before the reset would have occured.
Obligatory explanatory graphs: http://i.imgur.com/uSzicIR.png
When a player reaches a certain (configurable) threshold value of total
XP earned in a specific skill, his earned XP in this skill will be
decreased.
Depending on how far the player has exceeded the threshold value, his
XP will decrease more. After the (configurable) time interval of 10
minutes, the registered data will be cleared and the player can earn XP
as normal again.
This commit changes our shared connection into a connection pool utility to prevent
thread locks from multiple actions attempting to access the database at the same time.
In additon, profile loading has been moved off the main thread at login time, to
allieviate the performance issues caused by it.
Fixes#2138, Fixes#2119, Fixes#1982, Fixes#1953