Fix preemptive setting of owner metadata on to trade signs (#4835)

Fixes #4836.
This commit is contained in:
Josh Roy 2022-03-08 10:08:34 -05:00 committed by GitHub
parent 3984bddd9d
commit 997fb1800e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -31,6 +31,7 @@ import java.util.Set;
import static com.earth2me.essentials.I18n.tl; import static com.earth2me.essentials.I18n.tl;
public class EssentialsSign { public class EssentialsSign {
private static final String SIGN_OWNER_KEY = "sign-owner";
protected static final BigDecimal MINTRANSACTION = new BigDecimal("0.01"); protected static final BigDecimal MINTRANSACTION = new BigDecimal("0.01");
private static final Set<Material> EMPTY_SET = new HashSet<>(); private static final Set<Material> EMPTY_SET = new HashSet<>();
protected transient final String signName; protected transient final String signName;
@ -166,19 +167,20 @@ public class EssentialsSign {
return; return;
} }
final Sign sign = (Sign) signProvider.getBlock().getState(); final Sign sign = (Sign) signProvider.getBlock().getState();
ess.getSignDataProvider().setSignData(sign, "owner", user.getUUID().toString()); ess.getSignDataProvider().setSignData(sign, SIGN_OWNER_KEY, user.getUUID().toString());
} }
public boolean isOwner(final IEssentials ess, final User user, final ISign signProvider, final int nameIndex, final String namePrefix) { public boolean isOwner(final IEssentials ess, final User user, final ISign signProvider, final int nameIndex, final String namePrefix) {
final Sign sign = (Sign) signProvider.getBlock().getState(); final Sign sign = (Sign) signProvider.getBlock().getState();
if (ess.getSignDataProvider() == null || ess.getSignDataProvider().getSignData(sign, "owner") == null) { if (ess.getSignDataProvider() == null || ess.getSignDataProvider().getSignData(sign, SIGN_OWNER_KEY) == null) {
if (ess.getSignDataProvider() != null) { final boolean isLegacyOwner = FormatUtil.stripFormat(signProvider.getLine(nameIndex)).equalsIgnoreCase(getUsername(user));
ess.getSignDataProvider().setSignData(sign, "owner", user.getUUID().toString()); if (ess.getSignDataProvider() != null && isLegacyOwner) {
ess.getSignDataProvider().setSignData(sign, SIGN_OWNER_KEY, user.getUUID().toString());
} }
return FormatUtil.stripFormat(signProvider.getLine(nameIndex)).equalsIgnoreCase(getUsername(user)); return isLegacyOwner;
} }
if (user.getUUID().toString().equals(ess.getSignDataProvider().getSignData(sign, "owner"))) { if (user.getUUID().toString().equals(ess.getSignDataProvider().getSignData(sign, SIGN_OWNER_KEY))) {
signProvider.setLine(nameIndex, namePrefix + getUsername(user)); signProvider.setLine(nameIndex, namePrefix + getUsername(user));
return true; return true;
} }