Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60c3b58a33 | ||
|
|
7216d0b09f | ||
|
|
97eeea8d48 | ||
|
|
82061ee6a3 | ||
|
|
f274b9045e | ||
|
|
2241a5c90f | ||
|
|
bbc38ae801 | ||
|
|
e77346ed62 | ||
|
|
6117abca56 |
@@ -47,6 +47,21 @@ public interface FastItemStack {
|
|||||||
*/
|
*/
|
||||||
List<String> getLore();
|
List<String> getLore();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the rework penalty.
|
||||||
|
*
|
||||||
|
* @param cost The rework penalty to set.
|
||||||
|
*/
|
||||||
|
void setRepairCost(int cost);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the rework penalty.
|
||||||
|
*.
|
||||||
|
* @return The rework penalty found on the item.
|
||||||
|
*/
|
||||||
|
int getRepairCost();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the Bukkit ItemStack again.
|
* Get the Bukkit ItemStack again.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -47,6 +47,15 @@ public class StringUtils {
|
|||||||
.add(Pattern.compile("<#" + "([A-Fa-f0-9]{6})" + ">"))
|
.add(Pattern.compile("<#" + "([A-Fa-f0-9]{6})" + ">"))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Legacy serializer.
|
||||||
|
*/
|
||||||
|
private static final LegacyComponentSerializer LEGACY_COMPONENT_SERIALIZER = LegacyComponentSerializer.builder()
|
||||||
|
.character('\u00a7')
|
||||||
|
.useUnusualXRepeatedCharacterHexFormat()
|
||||||
|
.hexColors()
|
||||||
|
.build();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format a list of strings - converts Placeholders and Color codes.
|
* Format a list of strings - converts Placeholders and Color codes.
|
||||||
*
|
*
|
||||||
@@ -246,7 +255,7 @@ public class StringUtils {
|
|||||||
public String legacyToJson(@NotNull final String legacy) {
|
public String legacyToJson(@NotNull final String legacy) {
|
||||||
return GsonComponentSerializer.gson().serialize(
|
return GsonComponentSerializer.gson().serialize(
|
||||||
Component.empty().decoration(TextDecoration.ITALIC, false).append(
|
Component.empty().decoration(TextDecoration.ITALIC, false).append(
|
||||||
LegacyComponentSerializer.legacySection().deserialize(legacy)
|
LEGACY_COMPONENT_SERIALIZER.deserialize(legacy)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -258,7 +267,7 @@ public class StringUtils {
|
|||||||
* @return The legacy string.
|
* @return The legacy string.
|
||||||
*/
|
*/
|
||||||
public String jsonToLegacy(@NotNull final String json) {
|
public String jsonToLegacy(@NotNull final String json) {
|
||||||
return LegacyComponentSerializer.legacySection().serialize(
|
return LEGACY_COMPONENT_SERIALIZER.serialize(
|
||||||
GsonComponentSerializer.gson().deserialize(json)
|
GsonComponentSerializer.gson().deserialize(json)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -207,7 +207,8 @@ open class EcoYamlConfigWrapper<T : ConfigurationSection> : Config {
|
|||||||
return if (cache.containsKey("$path\$FMT")) {
|
return if (cache.containsKey("$path\$FMT")) {
|
||||||
cache["$path\$FMT"] as List<String>
|
cache["$path\$FMT"] as List<String>
|
||||||
} else {
|
} else {
|
||||||
cache["$path\$FMT"] = StringUtils.formatList(if (has(path)) ArrayList(handle.getStringList(path)) else ArrayList<String>())
|
val list = if (has(path)) handle.getStringList(path) else ArrayList()
|
||||||
|
cache["$path\$FMT"] = StringUtils.formatList(list);
|
||||||
getStrings(path, true)
|
getStrings(path, true)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.willfp.eco.proxy.v1_16_R3;
|
||||||
|
|
||||||
|
import org.bukkit.craftbukkit.libs.org.apache.commons.lang3.Validate;
|
||||||
|
import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
|
public class FastItemStackUtils {
|
||||||
|
private static final Field FIELD;
|
||||||
|
|
||||||
|
public static net.minecraft.server.v1_16_R3.ItemStack getNMSStack(@NotNull final ItemStack itemStack) {
|
||||||
|
if (!(itemStack instanceof CraftItemStack)) {
|
||||||
|
return CraftItemStack.asNMSCopy(itemStack);
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
net.minecraft.server.v1_16_R3.ItemStack nms = (net.minecraft.server.v1_16_R3.ItemStack) FIELD.get(itemStack);
|
||||||
|
return nms == null ? CraftItemStack.asNMSCopy(itemStack) : nms;
|
||||||
|
} catch (ReflectiveOperationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return net.minecraft.server.v1_16_R3.ItemStack.b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
Field temp = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
Field handleField = CraftItemStack.class.getDeclaredField("handle");
|
||||||
|
handleField.setAccessible(true);
|
||||||
|
temp = handleField;
|
||||||
|
} catch (ReflectiveOperationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
assert temp != null;
|
||||||
|
Validate.notNull(temp, "Error occurred in initialization!");
|
||||||
|
|
||||||
|
FIELD = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.willfp.eco.proxy.v1_16_R3.fast
|
package com.willfp.eco.proxy.v1_16_R3.fast
|
||||||
|
|
||||||
import com.willfp.eco.internal.fast.EcoFastItemStack
|
import com.willfp.eco.internal.fast.EcoFastItemStack
|
||||||
|
import com.willfp.eco.proxy.v1_16_R3.FastItemStackUtils
|
||||||
import com.willfp.eco.util.StringUtils
|
import com.willfp.eco.util.StringUtils
|
||||||
import net.minecraft.server.v1_16_R3.*
|
import net.minecraft.server.v1_16_R3.*
|
||||||
import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack
|
import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack
|
||||||
@@ -11,7 +12,7 @@ import java.lang.reflect.Field
|
|||||||
import kotlin.experimental.and
|
import kotlin.experimental.and
|
||||||
|
|
||||||
class NMSFastItemStack(itemStack: org.bukkit.inventory.ItemStack) : EcoFastItemStack<ItemStack>(
|
class NMSFastItemStack(itemStack: org.bukkit.inventory.ItemStack) : EcoFastItemStack<ItemStack>(
|
||||||
getNMSStack(itemStack)!!, itemStack
|
FastItemStackUtils.getNMSStack(itemStack), itemStack
|
||||||
) {
|
) {
|
||||||
private var loreCache: List<String>? = null
|
private var loreCache: List<String>? = null
|
||||||
override fun getEnchantmentsOnItem(checkStored: Boolean): Map<Enchantment, Int> {
|
override fun getEnchantmentsOnItem(checkStored: Boolean): Map<Enchantment, Int> {
|
||||||
@@ -95,6 +96,14 @@ class NMSFastItemStack(itemStack: org.bukkit.inventory.ItemStack) : EcoFastItemS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getRepairCost(): Int {
|
||||||
|
return handle.repairCost;
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setRepairCost(cost: Int) {
|
||||||
|
handle.repairCost = cost;
|
||||||
|
}
|
||||||
|
|
||||||
private fun apply() {
|
private fun apply() {
|
||||||
if (bukkit !is CraftItemStack) {
|
if (bukkit !is CraftItemStack) {
|
||||||
bukkit.itemMeta = CraftItemStack.asCraftMirror(handle).itemMeta
|
bukkit.itemMeta = CraftItemStack.asCraftMirror(handle).itemMeta
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package com.willfp.eco.proxy.v1_17_R1;
|
||||||
|
|
||||||
|
import lombok.experimental.UtilityClass;
|
||||||
|
import org.bukkit.craftbukkit.libs.org.apache.commons.lang3.Validate;
|
||||||
|
import org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
|
@UtilityClass
|
||||||
|
public class FastItemStackUtils {
|
||||||
|
private static final Field FIELD;
|
||||||
|
|
||||||
|
public static net.minecraft.world.item.ItemStack getNMSStack(@NotNull final ItemStack itemStack) {
|
||||||
|
if (!(itemStack instanceof CraftItemStack)) {
|
||||||
|
return CraftItemStack.asNMSCopy(itemStack);
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
net.minecraft.world.item.ItemStack nms = (net.minecraft.world.item.ItemStack) FIELD.get(itemStack);
|
||||||
|
return nms == null ? CraftItemStack.asNMSCopy(itemStack) : nms;
|
||||||
|
} catch (ReflectiveOperationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return net.minecraft.world.item.ItemStack.EMPTY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
Field temp = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
Field handleField = CraftItemStack.class.getDeclaredField("handle");
|
||||||
|
handleField.setAccessible(true);
|
||||||
|
temp = handleField;
|
||||||
|
} catch (ReflectiveOperationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
assert temp != null;
|
||||||
|
Validate.notNull(temp, "Error occurred in initialization!");
|
||||||
|
|
||||||
|
FIELD = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.willfp.eco.proxy.v1_17_R1.fast
|
package com.willfp.eco.proxy.v1_17_R1.fast
|
||||||
|
|
||||||
import com.willfp.eco.internal.fast.EcoFastItemStack
|
import com.willfp.eco.internal.fast.EcoFastItemStack
|
||||||
|
import com.willfp.eco.proxy.v1_17_R1.FastItemStackUtils
|
||||||
import com.willfp.eco.util.StringUtils
|
import com.willfp.eco.util.StringUtils
|
||||||
import net.minecraft.nbt.CompoundTag
|
import net.minecraft.nbt.CompoundTag
|
||||||
import net.minecraft.nbt.ListTag
|
import net.minecraft.nbt.ListTag
|
||||||
@@ -12,11 +13,10 @@ import org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack
|
|||||||
import org.bukkit.craftbukkit.v1_17_R1.util.CraftMagicNumbers
|
import org.bukkit.craftbukkit.v1_17_R1.util.CraftMagicNumbers
|
||||||
import org.bukkit.craftbukkit.v1_17_R1.util.CraftNamespacedKey
|
import org.bukkit.craftbukkit.v1_17_R1.util.CraftNamespacedKey
|
||||||
import org.bukkit.enchantments.Enchantment
|
import org.bukkit.enchantments.Enchantment
|
||||||
import java.lang.reflect.Field
|
|
||||||
import kotlin.experimental.and
|
import kotlin.experimental.and
|
||||||
|
|
||||||
class NMSFastItemStack(itemStack: org.bukkit.inventory.ItemStack) : EcoFastItemStack<ItemStack>(
|
class NMSFastItemStack(itemStack: org.bukkit.inventory.ItemStack) : EcoFastItemStack<ItemStack>(
|
||||||
getNMSStack(itemStack)!!, itemStack
|
FastItemStackUtils.getNMSStack(itemStack), itemStack
|
||||||
) {
|
) {
|
||||||
private var loreCache: List<String>? = null
|
private var loreCache: List<String>? = null
|
||||||
|
|
||||||
@@ -115,33 +115,17 @@ class NMSFastItemStack(itemStack: org.bukkit.inventory.ItemStack) : EcoFastItemS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getRepairCost(): Int {
|
||||||
|
return handle.baseRepairCost;
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setRepairCost(cost: Int) {
|
||||||
|
handle.setRepairCost(cost);
|
||||||
|
}
|
||||||
|
|
||||||
private fun apply() {
|
private fun apply() {
|
||||||
if (bukkit !is CraftItemStack) {
|
if (bukkit !is CraftItemStack) {
|
||||||
bukkit.itemMeta = CraftItemStack.asCraftMirror(handle).itemMeta
|
bukkit.itemMeta = CraftItemStack.asCraftMirror(handle).itemMeta
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
|
||||||
private var field: Field
|
|
||||||
|
|
||||||
init {
|
|
||||||
lateinit var temp: Field
|
|
||||||
try {
|
|
||||||
val handleField = CraftItemStack::class.java.getDeclaredField("handle")
|
|
||||||
handleField.isAccessible = true
|
|
||||||
temp = handleField
|
|
||||||
} catch (e: ReflectiveOperationException) {
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
field = temp
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getNMSStack(itemStack: org.bukkit.inventory.ItemStack): ItemStack? {
|
|
||||||
return if (itemStack !is CraftItemStack) {
|
|
||||||
CraftItemStack.asNMSCopy(itemStack)
|
|
||||||
} else {
|
|
||||||
field.get(itemStack) as ItemStack
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
version = 6.3.1
|
version = 6.3.3
|
||||||
plugin-name = eco
|
plugin-name = eco
|
||||||
Reference in New Issue
Block a user