SPIGOT-1916: Attribute modifiers for ItemStacks
By: Senmori <thesenmori@gmail.com>
This commit is contained in:
@@ -65,11 +65,11 @@ public class CraftAttributeInstance implements AttributeInstance {
|
||||
return handle.getAttribute().getDefault();
|
||||
}
|
||||
|
||||
private static net.minecraft.server.AttributeModifier convert(AttributeModifier bukkit) {
|
||||
public static net.minecraft.server.AttributeModifier convert(AttributeModifier bukkit) {
|
||||
return new net.minecraft.server.AttributeModifier(bukkit.getUniqueId(), bukkit.getName(), bukkit.getAmount(), bukkit.getOperation().ordinal());
|
||||
}
|
||||
|
||||
private static AttributeModifier convert(net.minecraft.server.AttributeModifier nms) {
|
||||
public static AttributeModifier convert(net.minecraft.server.AttributeModifier nms) {
|
||||
return new AttributeModifier(nms.a(), nms.b(), nms.d(), AttributeModifier.Operation.values()[nms.c()]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package org.bukkit.craftbukkit.attribute;
|
||||
|
||||
import com.google.common.base.CaseFormat;
|
||||
import com.google.common.base.Preconditions;
|
||||
import java.util.Locale;
|
||||
import net.minecraft.server.AttributeMapBase;
|
||||
import org.apache.commons.lang3.EnumUtils;
|
||||
import org.bukkit.attribute.Attributable;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.attribute.AttributeInstance;
|
||||
@@ -22,7 +25,7 @@ public class CraftAttributeMap implements Attributable {
|
||||
return (nms == null) ? null : new CraftAttributeInstance(nms, attribute);
|
||||
}
|
||||
|
||||
static String toMinecraft(String bukkit) {
|
||||
public static String toMinecraft(String bukkit) {
|
||||
int first = bukkit.indexOf('_');
|
||||
int second = bukkit.indexOf('_', first + 1);
|
||||
|
||||
@@ -36,4 +39,17 @@ public class CraftAttributeMap implements Attributable {
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static String toMinecraft(Attribute attribute) {
|
||||
return toMinecraft(attribute.name());
|
||||
}
|
||||
|
||||
public static Attribute fromMinecraft(String nms) {
|
||||
String[] split = nms.split("\\.", 2);
|
||||
|
||||
String generic = split[0];
|
||||
String descriptor = CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, split[1]); // movementSpeed -> MOVEMENT_SPEED
|
||||
String fin = generic + "_" + descriptor;
|
||||
return EnumUtils.getEnum(Attribute.class, fin.toUpperCase(Locale.ROOT)); // so we can return null without throwing exceptions
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user