mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2026-01-06 15:52:03 +00:00
改进构建
This commit is contained in:
@@ -1,9 +1,7 @@
|
||||
package net.momirealms.craftengine.bukkit.item;
|
||||
|
||||
import cn.gtemc.itembridge.api.Provider;
|
||||
import cn.gtemc.itembridge.api.context.BuildContext;
|
||||
import cn.gtemc.itembridge.core.BukkitItemBridge;
|
||||
import cn.gtemc.itembridge.hook.context.ItemContextKeys;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
@@ -26,7 +24,10 @@ import net.momirealms.craftengine.core.item.recipe.UniqueIdItem;
|
||||
import net.momirealms.craftengine.core.pack.AbstractPackManager;
|
||||
import net.momirealms.craftengine.core.plugin.config.Config;
|
||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||
import net.momirealms.craftengine.core.util.*;
|
||||
import net.momirealms.craftengine.core.util.GsonHelper;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.UniqueKey;
|
||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@@ -40,6 +41,7 @@ import java.nio.file.Path;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public class BukkitItemManager extends AbstractItemManager<ItemStack> {
|
||||
static {
|
||||
registerVanillaItemExtraBehavior(FlintAndSteelItemBehavior.INSTANCE, ItemKeys.FLINT_AND_STEEL);
|
||||
@@ -84,10 +86,10 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
|
||||
@Override
|
||||
public void delayedLoad() {
|
||||
super.delayedLoad();
|
||||
List<Provider<ItemStack>> sources = new ArrayList<>();
|
||||
List<Provider<ItemStack, org.bukkit.entity.Player>> sources = new ArrayList<>();
|
||||
for (String externalSource : Config.recipeIngredientSources()) {
|
||||
String sourceId = externalSource.toLowerCase(Locale.ENGLISH);
|
||||
Optional<Provider<ItemStack>> provider = itemBridgeProvider().provider(sourceId);
|
||||
Optional<Provider<ItemStack, org.bukkit.entity.Player>> provider = itemBridgeProvider().provider(sourceId);
|
||||
provider.ifPresent(sources::add);
|
||||
}
|
||||
this.factory.resetRecipeIngredientSources(sources.isEmpty() ? null : sources.toArray(new Provider[0]));
|
||||
@@ -452,11 +454,4 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
|
||||
}
|
||||
return this.itemBridge;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<ItemStack> buildPlatformItem(Provider<ItemStack> provider, String id, ItemBuildContext context) {
|
||||
Player player = context.player();
|
||||
org.bukkit.entity.Player bukkitPlayer = player == null ? null : (org.bukkit.entity.Player) player.platformPlayer();
|
||||
return provider.build(id, BuildContext.builder().withOptional(ItemContextKeys.PLAYER, bukkitPlayer).build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import net.momirealms.craftengine.core.util.UniqueKey;
|
||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||
import net.momirealms.sparrow.nbt.Tag;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.Objects;
|
||||
@@ -26,7 +27,7 @@ import java.util.Optional;
|
||||
|
||||
public abstract class BukkitItemFactory<W extends ItemWrapper<ItemStack>> extends ItemFactory<W, ItemStack> {
|
||||
private boolean hasExternalRecipeSource = false;
|
||||
private Provider<ItemStack>[] recipeIngredientSources = null;
|
||||
private Provider<ItemStack, Player>[] recipeIngredientSources = null;
|
||||
|
||||
protected BukkitItemFactory(CraftEngine plugin) {
|
||||
super(plugin);
|
||||
@@ -50,7 +51,7 @@ public abstract class BukkitItemFactory<W extends ItemWrapper<ItemStack>> extend
|
||||
throw new IllegalStateException("Unsupported server version: " + VersionHelper.MINECRAFT_VERSION.version());
|
||||
}
|
||||
|
||||
public void resetRecipeIngredientSources(Provider<ItemStack>[] recipeIngredientSources) {
|
||||
public void resetRecipeIngredientSources(Provider<ItemStack, Player>[] recipeIngredientSources) {
|
||||
if (recipeIngredientSources == null || recipeIngredientSources.length == 0) {
|
||||
this.recipeIngredientSources = null;
|
||||
this.hasExternalRecipeSource = false;
|
||||
@@ -102,7 +103,7 @@ public abstract class BukkitItemFactory<W extends ItemWrapper<ItemStack>> extend
|
||||
return null;
|
||||
}
|
||||
if (this.hasExternalRecipeSource) {
|
||||
for (Provider<ItemStack> source : this.recipeIngredientSources) {
|
||||
for (Provider<ItemStack, Player> source : this.recipeIngredientSources) {
|
||||
Optional<String> id = source.id(item.getItem());
|
||||
if (id.isPresent()) {
|
||||
return UniqueKey.create(Key.of(source.plugin(), StringUtils.toLowerCase(id.get())));
|
||||
|
||||
Reference in New Issue
Block a user