diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DropExperienceBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DropExperienceBlockBehavior.java index 78de11707..d6b6262fb 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DropExperienceBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DropExperienceBlockBehavior.java @@ -15,11 +15,11 @@ import net.momirealms.craftengine.core.loot.LootContext; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.ContextHolder; -import net.momirealms.craftengine.core.plugin.context.condition.AllOfCondition; import net.momirealms.craftengine.core.plugin.context.event.EventConditions; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; +import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.BlockPos; import net.momirealms.craftengine.core.world.Vec3d; @@ -30,16 +30,17 @@ import org.bukkit.inventory.ItemStack; import java.util.List; import java.util.Map; import java.util.concurrent.Callable; +import java.util.function.Predicate; public class DropExperienceBlockBehavior extends BukkitBlockBehavior { public static final Factory FACTORY = new Factory(); private final NumberProvider amount; - private final Condition conditions; + private final Predicate condition; - public DropExperienceBlockBehavior(CustomBlock customBlock, NumberProvider amount, Condition conditions) { + public DropExperienceBlockBehavior(CustomBlock customBlock, NumberProvider amount, Predicate condition) { super(customBlock); this.amount = amount; - this.conditions = conditions; + this.condition = condition; } @Override @@ -76,7 +77,7 @@ public class DropExperienceBlockBehavior extends BukkitBlockBehavior { .withParameter(DirectContextParameters.ITEM_IN_HAND, item) .build(); LootContext context = new LootContext(world, null, 1.0f, holder); - if (this.conditions != null && !this.conditions.test(context)) { + if (!this.condition.test(context)) { return; } int finalAmount = this.amount.getInt(context); @@ -91,14 +92,8 @@ public class DropExperienceBlockBehavior extends BukkitBlockBehavior { @Override public BlockBehavior create(CustomBlock block, Map arguments) { NumberProvider amount = NumberProviders.fromObject(ResourceConfigUtils.get(arguments, "amount", "count")); - Condition conditions = null; List> conditionList = ResourceConfigUtils.parseConfigAsList(ResourceConfigUtils.get(arguments, "conditions", "condition"), EventConditions::fromMap); - if (conditionList.size() == 1) { - conditions = conditionList.getFirst(); - } else if (!conditionList.isEmpty()) { - conditions = new AllOfCondition<>(conditionList); - } - return new DropExperienceBlockBehavior(block, amount, conditions); + return new DropExperienceBlockBehavior(block, amount, MiscUtils.allOf(conditionList)); } } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java index f2631ddea..24a96b9f9 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java @@ -14,7 +14,6 @@ import io.netty.handler.codec.MessageToMessageDecoder; import io.netty.handler.codec.MessageToMessageEncoder; import io.netty.util.internal.logging.InternalLogger; import io.netty.util.internal.logging.InternalLoggerFactory; -import io.papermc.paper.event.player.AsyncPlayerSpawnLocationEvent; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; @@ -130,7 +129,6 @@ import java.nio.charset.StandardCharsets; import java.time.Instant; import java.util.*; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedQueue; import java.util.function.BiFunction; import java.util.function.Predicate; diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/Category.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/Category.java index 639ccbbfc..903e9264e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/Category.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/Category.java @@ -1,13 +1,12 @@ package net.momirealms.craftengine.core.plugin.gui.category; -import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; +import java.util.function.Predicate; public class Category implements Comparable { private final Key id; @@ -17,9 +16,9 @@ public class Category implements Comparable { private final List members; private final int priority; private final boolean hidden; - private final Condition condition; + private final Predicate condition; - public Category(Key id, String displayName, List displayLore, Key icon, List members, int priority, boolean hidden, Condition condition) { + public Category(Key id, String displayName, List displayLore, Key icon, List members, int priority, boolean hidden, Predicate condition) { this.id = id; this.displayName = displayName; this.members = new ArrayList<>(members); @@ -50,8 +49,8 @@ public class Category implements Comparable { return hidden; } - @Nullable - public Condition condition() { + @NotNull + public Predicate condition() { return condition; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManagerImpl.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManagerImpl.java index c4b664d83..43f881ac4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManagerImpl.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManagerImpl.java @@ -17,7 +17,6 @@ import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.ContextHolder; import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; -import net.momirealms.craftengine.core.plugin.context.condition.AllOfCondition; import net.momirealms.craftengine.core.plugin.context.event.EventConditions; import net.momirealms.craftengine.core.plugin.gui.*; import net.momirealms.craftengine.core.plugin.gui.Ingredient; @@ -127,8 +126,7 @@ public class ItemBrowserManagerImpl implements ItemBrowserManager { List lore = MiscUtils.getAsStringList(section.getOrDefault("lore", List.of())); boolean hidden = ResourceConfigUtils.getAsBoolean(section.getOrDefault("hidden", false), "hidden"); List> conditionList = ResourceConfigUtils.parseConfigAsList(ResourceConfigUtils.get(section, "conditions", "condition"), EventConditions::fromMap); - Condition conditions = conditionList.isEmpty() ? null : conditionList.size() == 1 ? conditionList.getFirst() : new AllOfCondition<>(conditionList); - Category category = new Category(id, name, lore, icon, new ArrayList<>(members), priority, hidden, conditions); + Category category = new Category(id, name, lore, icon, new ArrayList<>(members), priority, hidden, MiscUtils.allOf(conditionList)); if (ItemBrowserManagerImpl.this.byId.containsKey(id)) { ItemBrowserManagerImpl.this.byId.get(id).merge(category); } else { @@ -169,8 +167,7 @@ public class ItemBrowserManagerImpl implements ItemBrowserManager { ); List iconList = this.categoryOnMainPage.stream().map(it -> { - Condition condition = it.condition(); - if (condition != null && !condition.test(PlayerOptionalContext.of(player))) { + if (!it.condition().test(PlayerOptionalContext.of(player))) { return null; } Item item = this.plugin.itemManager().createWrappedItem(it.icon(), player); @@ -262,8 +259,7 @@ public class ItemBrowserManagerImpl implements ItemBrowserManager { item = Objects.requireNonNull(this.plugin.itemManager().createWrappedItem(ItemKeys.BARRIER, player)); item.customNameJson(AdventureHelper.componentToJson(Component.text(subCategoryId).color(NamedTextColor.RED).decoration(TextDecoration.ITALIC, false))); } else { - Condition condition = subCategory.condition(); - if (condition != null && !condition.test(PlayerOptionalContext.of(player))) { + if (!subCategory.condition().test(PlayerOptionalContext.of(player))) { return null; } item = this.plugin.itemManager().createWrappedItem(subCategory.icon(), player);