mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-24 17:39:30 +00:00
添加entity.item链式参数
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
package net.momirealms.craftengine.bukkit.entity;
|
||||
|
||||
import net.momirealms.craftengine.bukkit.item.BukkitItemManager;
|
||||
import net.momirealms.craftengine.core.entity.ItemEntity;
|
||||
import org.bukkit.entity.Item;
|
||||
|
||||
public class BukkitItemEntity extends BukkitEntity implements ItemEntity {
|
||||
|
||||
public BukkitItemEntity(Item entity) {
|
||||
super(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public net.momirealms.craftengine.core.item.Item<?> getItem() {
|
||||
return BukkitItemManager.instance().wrap(((Item) platformEntity()).getItemStack());
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import io.papermc.paper.event.block.CompostItemEvent;
|
||||
import net.momirealms.craftengine.bukkit.api.BukkitAdaptors;
|
||||
import net.momirealms.craftengine.bukkit.api.event.CustomBlockInteractEvent;
|
||||
import net.momirealms.craftengine.bukkit.entity.BukkitEntity;
|
||||
import net.momirealms.craftengine.bukkit.entity.BukkitItemEntity;
|
||||
import net.momirealms.craftengine.bukkit.item.BukkitCustomItem;
|
||||
import net.momirealms.craftengine.bukkit.item.BukkitItemManager;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
@@ -594,7 +595,7 @@ public class ItemEventListener implements Listener {
|
||||
}
|
||||
Cancellable dummy = Cancellable.dummy();
|
||||
customItem.execute(PlayerOptionalContext.of(serverPlayer, ContextHolder.builder()
|
||||
.withParameter(DirectContextParameters.ENTITY, new BukkitEntity(itemDrop))
|
||||
.withParameter(DirectContextParameters.ENTITY, new BukkitItemEntity(itemDrop))
|
||||
.withParameter(DirectContextParameters.POSITION, LocationUtils.toWorldPosition(itemDrop.getLocation()))
|
||||
.withParameter(DirectContextParameters.EVENT, dummy)
|
||||
), EventTrigger.PICK_UP);
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package net.momirealms.craftengine.core.entity;
|
||||
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
|
||||
public interface ItemEntity {
|
||||
|
||||
Item<?> getItem();
|
||||
}
|
||||
@@ -38,7 +38,6 @@ public class StringKeyConstructor extends SafeConstructor {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
|
||||
private boolean isVersionMatch(String versionSpec) {
|
||||
int index = versionSpec.indexOf('~');
|
||||
// 没有范围值
|
||||
|
||||
@@ -21,6 +21,7 @@ public abstract class AbstractChainParameterContext extends AbstractCommonContex
|
||||
CHAIN_PARAMETERS.put(DirectContextParameters.OFF_HAND_ITEM, itemProvider);
|
||||
CHAIN_PARAMETERS.put(DirectContextParameters.FURNITURE_ITEM, itemProvider);
|
||||
CHAIN_PARAMETERS.put(DirectContextParameters.ITEM_IN_HAND, itemProvider);
|
||||
CHAIN_PARAMETERS.put(DirectContextParameters.ITEM, itemProvider);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
||||
@@ -48,6 +48,7 @@ public final class DirectContextParameters {
|
||||
public static final ContextKey<UUID> UUID = ContextKey.direct("uuid");
|
||||
public static final ContextKey<Item<?>> MAIN_HAND_ITEM = ContextKey.direct("main_hand_item");
|
||||
public static final ContextKey<Item<?>> OFF_HAND_ITEM = ContextKey.direct("off_hand_item");
|
||||
public static final ContextKey<Item<?>> ITEM = ContextKey.direct("item");
|
||||
public static final ContextKey<CustomBlock> CUSTOM_BLOCK = ContextKey.direct("custom_block");
|
||||
public static final ContextKey<ExistingBlock> BLOCK = ContextKey.direct("block");
|
||||
public static final ContextKey<Long> TIME = ContextKey.direct("time");
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package net.momirealms.craftengine.core.plugin.context.parameter;
|
||||
|
||||
import net.momirealms.craftengine.core.entity.Entity;
|
||||
import net.momirealms.craftengine.core.entity.ItemEntity;
|
||||
import net.momirealms.craftengine.core.plugin.context.ChainParameterProvider;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||
@@ -25,6 +26,12 @@ public class EntityParameterProvider implements ChainParameterProvider<Entity> {
|
||||
CONTEXT_FUNCTIONS.put(DirectContextParameters.NAME, Entity::name);
|
||||
CONTEXT_FUNCTIONS.put(DirectContextParameters.UUID, Entity::uuid);
|
||||
CONTEXT_FUNCTIONS.put(DirectContextParameters.WORLD, Entity::world);
|
||||
CONTEXT_FUNCTIONS.put(DirectContextParameters.ITEM, e -> {
|
||||
if (e instanceof ItemEntity itemEntity) {
|
||||
return itemEntity.getItem();
|
||||
}
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
||||
Reference in New Issue
Block a user