Add JDK 11+ support.
* Add missing contexts for global option lookups. * Fix min/max claim size messages.
This commit is contained in:
parent
d23e070e68
commit
ebf5f6ad3e
|
@ -134,6 +134,15 @@ public class GDBootstrap extends JavaPlugin {
|
|||
name = "me.lucko:jar-relocator:1.3";
|
||||
file = this.jarMap.get(name);
|
||||
BootstrapUtil.addUrlToClassLoader(name, file);
|
||||
// inject reflect helper
|
||||
final String javaVersion = System.getProperty("java.version");
|
||||
if (javaVersion.startsWith("11") || javaVersion.startsWith("12")) {
|
||||
name = "com.griefdefender:reflect-helper:2.0";
|
||||
} else {
|
||||
name = "com.griefdefender:reflect-helper:1.0";
|
||||
}
|
||||
file = this.jarMap.get(name);
|
||||
BootstrapUtil.addUrlToClassLoader(name, file);
|
||||
}
|
||||
|
||||
public void downloadLibrary(String name, String relocate, String sha1, String url, Path libPath) {
|
||||
|
|
|
@ -707,7 +707,7 @@ public class GDClaim implements Claim {
|
|||
|
||||
public double getOwnerEconomyBlockCost(GDPlayerData playerData) {
|
||||
final GDPermissionHolder subject = playerData == null ? GriefDefenderPlugin.DEFAULT_HOLDER : playerData.getSubject();
|
||||
return GDPermissionManager.getInstance().getGlobalInternalOptionValue(subject, Options.ECONOMY_BLOCK_COST, playerData).intValue();
|
||||
return GDPermissionManager.getInstance().getGlobalInternalOptionValue(subject, Options.ECONOMY_BLOCK_COST, this, playerData).intValue();
|
||||
}
|
||||
|
||||
public int getOwnerMinClaimLevel() {
|
||||
|
@ -716,7 +716,7 @@ public class GDClaim implements Claim {
|
|||
|
||||
public int getOwnerMinClaimLevel(GDPlayerData playerData) {
|
||||
final GDPermissionHolder subject = playerData == null ? GriefDefenderPlugin.DEFAULT_HOLDER : playerData.getSubject();
|
||||
return GDPermissionManager.getInstance().getGlobalInternalOptionValue(subject, Options.MIN_LEVEL, playerData).intValue();
|
||||
return GDPermissionManager.getInstance().getGlobalInternalOptionValue(subject, Options.MIN_LEVEL, this, playerData).intValue();
|
||||
}
|
||||
|
||||
public int getOwnerMaxClaimLevel() {
|
||||
|
@ -725,7 +725,7 @@ public class GDClaim implements Claim {
|
|||
|
||||
public int getOwnerMaxClaimLevel(GDPlayerData playerData) {
|
||||
final GDPermissionHolder subject = playerData == null ? GriefDefenderPlugin.DEFAULT_HOLDER : playerData.getSubject();
|
||||
return GDPermissionManager.getInstance().getGlobalInternalOptionValue(subject, Options.MAX_LEVEL, playerData).intValue();
|
||||
return GDPermissionManager.getInstance().getGlobalInternalOptionValue(subject, Options.MAX_LEVEL, this, playerData).intValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1428,6 +1428,15 @@ public class GDClaim implements Claim {
|
|||
}
|
||||
}
|
||||
Component message = null;
|
||||
String maxCuboidArea = maxClaimX + "x" + maxClaimY + "x" + maxClaimZ;
|
||||
if (maxClaimX == 0 && maxClaimY == 0 && maxClaimZ == 0) {
|
||||
maxCuboidArea = "∞";
|
||||
}
|
||||
String maxArea = maxClaimX + "x" + maxClaimZ;
|
||||
if (maxClaimX == 0 && maxClaimZ == 0) {
|
||||
maxArea = "∞";
|
||||
}
|
||||
|
||||
if (maxClaimX > 0) {
|
||||
int size = Math.abs(greaterCorner.getX() - lesserCorner.getX()) + 1;
|
||||
if (size > maxClaimX) {
|
||||
|
@ -1436,16 +1445,16 @@ public class GDClaim implements Claim {
|
|||
message = messageData.getMessage(MessageStorage.CLAIM_SIZE_MAX, ImmutableMap.of(
|
||||
"axis", "x",
|
||||
"size", size,
|
||||
"max-size", maxClaimX,
|
||||
"max-size", maxClaimX == 0 ? "∞" : maxClaimX,
|
||||
"min-area", minClaimX + "x" + minClaimY + "x" + minClaimZ,
|
||||
"max-area", maxClaimX + "x" + maxClaimY + "x" + minClaimZ));
|
||||
"max-area", maxCuboidArea));
|
||||
} else {
|
||||
message = messageData.getMessage(MessageStorage.CLAIM_SIZE_MAX, ImmutableMap.of(
|
||||
"axis", "x",
|
||||
"size", size,
|
||||
"max-size", maxClaimX,
|
||||
"max-size", maxClaimX == 0 ? "∞" : maxClaimX,
|
||||
"min-area", minClaimX + "x" + minClaimZ,
|
||||
"max-area", maxClaimX + "x" + minClaimZ));
|
||||
"max-area", maxArea));
|
||||
}
|
||||
GriefDefenderPlugin.sendMessage(player, message);
|
||||
}
|
||||
|
@ -1460,16 +1469,16 @@ public class GDClaim implements Claim {
|
|||
message = messageData.getMessage(MessageStorage.CLAIM_SIZE_MAX, ImmutableMap.of(
|
||||
"axis", "y",
|
||||
"size", size,
|
||||
"max-size", maxClaimY,
|
||||
"max-size", maxClaimY == 0 ? "∞" : maxClaimY,
|
||||
"min-area", minClaimX + "x" + minClaimY + "x" + minClaimZ,
|
||||
"max-area", maxClaimX + "x" + maxClaimY + "x" + minClaimZ));
|
||||
"max-area", maxCuboidArea));
|
||||
} else {
|
||||
message = messageData.getMessage(MessageStorage.CLAIM_SIZE_MAX, ImmutableMap.of(
|
||||
"axis", "y",
|
||||
"size", size,
|
||||
"max-size", maxClaimY,
|
||||
"max-size", maxClaimY == 0 ? "∞" : maxClaimY,
|
||||
"min-area", minClaimX + "x" + minClaimZ,
|
||||
"max-area", maxClaimX + "x" + minClaimZ));
|
||||
"max-area", maxArea));
|
||||
}
|
||||
GriefDefenderPlugin.sendMessage(player, message);
|
||||
}
|
||||
|
@ -1484,16 +1493,16 @@ public class GDClaim implements Claim {
|
|||
message = messageData.getMessage(MessageStorage.CLAIM_SIZE_MAX, ImmutableMap.of(
|
||||
"axis", "z",
|
||||
"size", size,
|
||||
"max-size", maxClaimY,
|
||||
"max-size", maxClaimZ == 0 ? "∞" : maxClaimZ,
|
||||
"min-area", minClaimX + "x" + minClaimY + "x" + minClaimZ,
|
||||
"max-area", maxClaimX + "x" + maxClaimY + "x" + minClaimZ));
|
||||
"max-area", maxCuboidArea));
|
||||
} else {
|
||||
message = messageData.getMessage(MessageStorage.CLAIM_SIZE_MAX, ImmutableMap.of(
|
||||
"axis", "z",
|
||||
"size", size,
|
||||
"max-size", maxClaimY,
|
||||
"max-size", maxClaimZ == 0 ? "∞" : maxClaimZ,
|
||||
"min-area", minClaimX + "x" + minClaimZ,
|
||||
"max-area", maxClaimX + "x" + minClaimZ));
|
||||
"max-area", maxArea));
|
||||
}
|
||||
GriefDefenderPlugin.sendMessage(player, message);
|
||||
}
|
||||
|
@ -1508,16 +1517,16 @@ public class GDClaim implements Claim {
|
|||
message = messageData.getMessage(MessageStorage.CLAIM_SIZE_MIN, ImmutableMap.of(
|
||||
"axis", "x",
|
||||
"size", size,
|
||||
"min-size", minClaimX,
|
||||
"min-size", minClaimX == 0 ? "∞" : minClaimX,
|
||||
"min-area", minClaimX + "x" + minClaimY + "x" + minClaimZ,
|
||||
"max-area", maxClaimX + "x" + maxClaimY + "x" + maxClaimZ));
|
||||
"max-area", maxCuboidArea));
|
||||
} else {
|
||||
message = messageData.getMessage(MessageStorage.CLAIM_SIZE_MIN, ImmutableMap.of(
|
||||
"axis", "x",
|
||||
"size", size,
|
||||
"min-size", minClaimX,
|
||||
"min-area", minClaimX + "x" + minClaimZ,
|
||||
"max-area", maxClaimX + "x" + maxClaimZ));
|
||||
"max-area", maxArea));
|
||||
}
|
||||
GriefDefenderPlugin.sendMessage(player, message);
|
||||
}
|
||||
|
@ -1532,16 +1541,16 @@ public class GDClaim implements Claim {
|
|||
message = messageData.getMessage(MessageStorage.CLAIM_SIZE_MIN, ImmutableMap.of(
|
||||
"axis", "y",
|
||||
"size", size,
|
||||
"min-size", minClaimX,
|
||||
"min-size", minClaimY == 0 ? "∞" : minClaimY,
|
||||
"min-area", minClaimX + "x" + minClaimY + "x" + minClaimZ,
|
||||
"max-area", maxClaimX + "x" + maxClaimY + "x" + maxClaimZ));
|
||||
"max-area", maxCuboidArea));
|
||||
} else {
|
||||
message = messageData.getMessage(MessageStorage.CLAIM_SIZE_MIN, ImmutableMap.of(
|
||||
"axis", "y",
|
||||
"size", size,
|
||||
"min-size", minClaimX,
|
||||
"min-size", minClaimY == 0 ? "∞" : minClaimY,
|
||||
"min-area", minClaimX + "x" + minClaimZ,
|
||||
"max-area", maxClaimX + "x" + maxClaimZ));
|
||||
"max-area", maxArea));
|
||||
}
|
||||
GriefDefenderPlugin.sendMessage(player, message);
|
||||
}
|
||||
|
@ -1556,16 +1565,16 @@ public class GDClaim implements Claim {
|
|||
message = messageData.getMessage(MessageStorage.CLAIM_SIZE_MIN, ImmutableMap.of(
|
||||
"axis", "z",
|
||||
"size", size,
|
||||
"min-size", minClaimX,
|
||||
"min-size", minClaimZ == 0 ? "∞" : minClaimZ,
|
||||
"min-area", minClaimX + "x" + minClaimY + "x" + minClaimZ,
|
||||
"max-area", maxClaimX + "x" + maxClaimY + "x" + maxClaimZ));
|
||||
"max-area", maxCuboidArea));
|
||||
} else {
|
||||
message = messageData.getMessage(MessageStorage.CLAIM_SIZE_MIN, ImmutableMap.of(
|
||||
"axis", "z",
|
||||
"size", size,
|
||||
"min-size", minClaimX,
|
||||
"min-size", minClaimZ == 0 ? "∞" : minClaimZ,
|
||||
"min-area", minClaimX + "x" + minClaimZ,
|
||||
"max-area", maxClaimX + "x" + maxClaimZ));
|
||||
"max-area", maxArea));
|
||||
}
|
||||
GriefDefenderPlugin.sendMessage(player, message);
|
||||
}
|
||||
|
|
|
@ -799,6 +799,11 @@ public class GDPermissionManager implements PermissionManager {
|
|||
contexts.addAll(PermissionUtil.getInstance().getActiveContexts(holder, playerData, claim));
|
||||
}
|
||||
|
||||
if (claim != null) {
|
||||
contexts.add(claim.getDefaultTypeContext());
|
||||
contexts.add(claim.getOverrideTypeContext());
|
||||
contexts.add(claim.getOverrideClaimContext());
|
||||
}
|
||||
Contexts context = Contexts.global().setContexts(contexts);
|
||||
MetaData metaData = holder.getLuckPermsHolder().getCachedData().getMetaData(context);
|
||||
String value = metaData.getMeta().get(option.getPermission());
|
||||
|
@ -846,7 +851,8 @@ public class GDPermissionManager implements PermissionManager {
|
|||
if (playerData != null) {
|
||||
playerData.ignoreActiveContexts = true;
|
||||
}
|
||||
contexts.addAll(PermissionUtil.getInstance().getActiveContexts(holder));
|
||||
//contexts.addAll(PermissionUtil.getInstance().getActiveContexts(holder));
|
||||
contexts.addAll(PermissionUtil.getInstance().getActiveContexts(holder, playerData, claim));
|
||||
}
|
||||
|
||||
// Check type override
|
||||
|
@ -878,8 +884,13 @@ public class GDPermissionManager implements PermissionManager {
|
|||
return this.getDoubleValue(value);
|
||||
}
|
||||
|
||||
// Check global
|
||||
return this.getGlobalInternalOptionValue(holder, option, claim, playerData);
|
||||
// Check default holder
|
||||
if (holder != GriefDefenderPlugin.DEFAULT_HOLDER) {
|
||||
return getInternalOptionValue(GriefDefenderPlugin.DEFAULT_HOLDER, option, claim, type, playerData);
|
||||
}
|
||||
|
||||
// Should never happen
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
private Double getDoubleValue(String option) {
|
||||
|
|
|
@ -1,98 +0,0 @@
|
|||
/*
|
||||
* This file is part of GriefDefender, licensed under the MIT License (MIT).
|
||||
*
|
||||
* Copyright (c) SpongePowered <https://www.spongepowered.org>
|
||||
* Copyright (c) contributors
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
package com.griefdefender.util;
|
||||
|
||||
import com.griefdefender.GriefDefenderPlugin;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public final class RegistryHelper {
|
||||
|
||||
public static boolean mapFields(Class<?> apiClass, Map<String, ?> mapping) {
|
||||
return mapFields(apiClass, mapping, null);
|
||||
}
|
||||
|
||||
public static boolean mapFields(Class<?> apiClass, Map<String, ?> mapping, @Nullable Set<String> ignoredFields) {
|
||||
return mapFields(apiClass, fieldName -> mapping.get(fieldName.toLowerCase(Locale.ENGLISH)), ignoredFields, false);
|
||||
}
|
||||
|
||||
public static boolean mapFields(Class<?> apiClass, Function<String, ?> mapFunction) {
|
||||
return mapFields(apiClass, mapFunction, null, false);
|
||||
}
|
||||
|
||||
public static boolean mapFields(Class<?> apiClass, Function<String, ?> mapFunction, @Nullable Set<String> ignoredFields, boolean ignore) {
|
||||
boolean mappingSuccess = true;
|
||||
for (Field f : apiClass.getDeclaredFields()) {
|
||||
final String fieldName = f.getName();
|
||||
if (ignoredFields != null && ignoredFields.contains(fieldName)) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
Object value = mapFunction.apply(fieldName);
|
||||
if (value == null) {
|
||||
// check for minecraft id
|
||||
value = mapFunction.apply("minecraft:" + fieldName);
|
||||
}
|
||||
if (value == null && !ignore) {
|
||||
GriefDefenderPlugin.getInstance().getLogger().warning("Skipping " + f.getDeclaringClass().getName() + "." + fieldName);
|
||||
continue;
|
||||
}
|
||||
f.setAccessible(true);
|
||||
Field modifiers = f.getClass().getDeclaredField("modifiers");
|
||||
modifiers.setAccessible(true);
|
||||
modifiers.setInt(f, f.getModifiers() & ~Modifier.FINAL);
|
||||
f.set(null, value);
|
||||
} catch (Exception e) {
|
||||
if (!ignore) {
|
||||
GriefDefenderPlugin.getInstance().getLogger().severe("Error while mapping " + f.getDeclaringClass().getName() + "." + fieldName);
|
||||
e.printStackTrace();
|
||||
}
|
||||
mappingSuccess = false;
|
||||
}
|
||||
}
|
||||
return mappingSuccess;
|
||||
}
|
||||
|
||||
public static void setFinalStatic(Class<?> clazz, String fieldName, Object newValue) {
|
||||
try {
|
||||
Field field = clazz.getDeclaredField(fieldName);
|
||||
field.setAccessible(true);
|
||||
Field modifiers = field.getClass().getDeclaredField("modifiers");
|
||||
modifiers.setAccessible(true);
|
||||
modifiers.setInt(field, field.getModifiers() & ~Modifier.FINAL);
|
||||
field.set(null, newValue);
|
||||
} catch (Exception e) {
|
||||
GriefDefenderPlugin.getInstance().getLogger().severe("Error while setting field " + clazz.getName() + "." + fieldName);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -13,6 +13,18 @@
|
|||
"path": "com/griefdefender/api/1.0.0-SNAPSHOT/api-1.0.0-20190727.235445-3.jar",
|
||||
"url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/api/1.0.0-SNAPSHOT/api-1.0.0-20190727.235445-3.jar"
|
||||
},
|
||||
{
|
||||
"name": "com.griefdefender:reflect-helper:1.0",
|
||||
"sha1": "7a50bffa9f0062ac4ca376d95a0e6599aa5f3257",
|
||||
"path": "com/griefdefender/reflect-helper/1.0/reflect-helper-1.0.jar",
|
||||
"url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/reflect-helper/1.0/reflect-helper-1.0.jar"
|
||||
},
|
||||
{
|
||||
"name": "com.griefdefender:reflect-helper:2.0",
|
||||
"sha1": "ee45d077344ae67e155e37eb61025401944ffabc",
|
||||
"path": "com/griefdefender/reflect-helper/2.0/reflect-helper-2.0.jar",
|
||||
"url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/reflect-helper/2.0/reflect-helper-2.0.jar"
|
||||
},
|
||||
{
|
||||
"name": "org.ow2.asm:asm-debug-all:5.2",
|
||||
"sha1": "3354e11e2b34215f06dab629ab88e06aca477c19",
|
||||
|
|
|
@ -13,6 +13,18 @@
|
|||
"path": "com/griefdefender/api/1.0.0-SNAPSHOT/api-1.0.0-20190727.235445-3.jar",
|
||||
"url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/api/1.0.0-SNAPSHOT/api-1.0.0-20190727.235445-3.jar"
|
||||
},
|
||||
{
|
||||
"name": "com.griefdefender:reflect-helper:1.0",
|
||||
"sha1": "7a50bffa9f0062ac4ca376d95a0e6599aa5f3257",
|
||||
"path": "com/griefdefender/reflect-helper/1.0/reflect-helper-1.0.jar",
|
||||
"url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/reflect-helper/1.0/reflect-helper-1.0.jar"
|
||||
},
|
||||
{
|
||||
"name": "com.griefdefender:reflect-helper:2.0",
|
||||
"sha1": "ee45d077344ae67e155e37eb61025401944ffabc",
|
||||
"path": "com/griefdefender/reflect-helper/2.0/reflect-helper-2.0.jar",
|
||||
"url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/reflect-helper/2.0/reflect-helper-2.0.jar"
|
||||
},
|
||||
{
|
||||
"name": "org.ow2.asm:asm-debug-all:5.2",
|
||||
"sha1": "3354e11e2b34215f06dab629ab88e06aca477c19",
|
||||
|
|
|
@ -13,6 +13,18 @@
|
|||
"path": "com/griefdefender/api/1.0.0-SNAPSHOT/api-1.0.0-20190727.235445-3.jar",
|
||||
"url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/api/1.0.0-SNAPSHOT/api-1.0.0-20190727.235445-3.jar"
|
||||
},
|
||||
{
|
||||
"name": "com.griefdefender:reflect-helper:1.0",
|
||||
"sha1": "7a50bffa9f0062ac4ca376d95a0e6599aa5f3257",
|
||||
"path": "com/griefdefender/reflect-helper/1.0/reflect-helper-1.0.jar",
|
||||
"url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/reflect-helper/1.0/reflect-helper-1.0.jar"
|
||||
},
|
||||
{
|
||||
"name": "com.griefdefender:reflect-helper:2.0",
|
||||
"sha1": "ee45d077344ae67e155e37eb61025401944ffabc",
|
||||
"path": "com/griefdefender/reflect-helper/2.0/reflect-helper-2.0.jar",
|
||||
"url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/reflect-helper/2.0/reflect-helper-2.0.jar"
|
||||
},
|
||||
{
|
||||
"name": "org.ow2.asm:asm-debug-all:5.2",
|
||||
"sha1": "3354e11e2b34215f06dab629ab88e06aca477c19",
|
||||
|
|
|
@ -13,6 +13,18 @@
|
|||
"path": "com/griefdefender/api/1.0.0-SNAPSHOT/api-1.0.0-20190727.235445-3.jar",
|
||||
"url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/api/1.0.0-SNAPSHOT/api-1.0.0-20190727.235445-3.jar"
|
||||
},
|
||||
{
|
||||
"name": "com.griefdefender:reflect-helper:1.0",
|
||||
"sha1": "7a50bffa9f0062ac4ca376d95a0e6599aa5f3257",
|
||||
"path": "com/griefdefender/reflect-helper/1.0/reflect-helper-1.0.jar",
|
||||
"url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/reflect-helper/1.0/reflect-helper-1.0.jar"
|
||||
},
|
||||
{
|
||||
"name": "com.griefdefender:reflect-helper:2.0",
|
||||
"sha1": "ee45d077344ae67e155e37eb61025401944ffabc",
|
||||
"path": "com/griefdefender/reflect-helper/2.0/reflect-helper-2.0.jar",
|
||||
"url": "https://repo.glaremasters.me/repository/bloodshot/com/griefdefender/reflect-helper/2.0/reflect-helper-2.0.jar"
|
||||
},
|
||||
{
|
||||
"name": "org.ow2.asm:asm-debug-all:5.2",
|
||||
"sha1": "3354e11e2b34215f06dab629ab88e06aca477c19",
|
||||
|
|
Loading…
Reference in New Issue