mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-19 15:09:15 +00:00
旋转家具配置
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
package net.momirealms.craftengine.bukkit.compatibility.papi;
|
||||
|
||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
|
||||
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
|
||||
import net.momirealms.craftengine.bukkit.util.ItemStackUtils;
|
||||
import net.momirealms.craftengine.core.entity.player.InteractionHand;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
@@ -13,8 +11,6 @@ import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class CheckItemExpansion extends PlaceholderExpansion {
|
||||
private final CraftEngine plugin;
|
||||
|
||||
|
||||
@@ -54,6 +54,8 @@ public class BukkitFurniture extends Furniture {
|
||||
FurnitureVariant variant = this.config.getVariant(variantName);
|
||||
if (variant == null) return false;
|
||||
if (this.currentVariant == variant) return false;
|
||||
// 删除椅子
|
||||
super.destroySeats();
|
||||
BukkitFurnitureManager.instance().invalidateFurniture(this);
|
||||
super.clearColliders();
|
||||
super.setVariantInternal(variant);
|
||||
@@ -74,10 +76,20 @@ public class BukkitFurniture extends Furniture {
|
||||
hitBoxConfig.prepareBoundingBox(position, aabbs::add, false);
|
||||
}
|
||||
if (!aabbs.isEmpty()) {
|
||||
if (!FastNMS.INSTANCE.checkEntityCollision(position.world.serverWorld(), aabbs.stream().map(it -> FastNMS.INSTANCE.constructor$AABB(it.minX, it.minY, it.minZ, it.maxX, it.maxY, it.maxZ)).toList())) {
|
||||
if (!FastNMS.INSTANCE.checkEntityCollision(position.world.serverWorld(), aabbs.stream().map(it -> FastNMS.INSTANCE.constructor$AABB(it.minX, it.minY, it.minZ, it.maxX, it.maxY, it.maxZ)).toList(),
|
||||
o -> {
|
||||
for (Collider collider : super.colliders) {
|
||||
if (o == collider.handle()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
})) {
|
||||
return CompletableFuture.completedFuture(false);
|
||||
}
|
||||
}
|
||||
// 删除椅子
|
||||
super.destroySeats();
|
||||
// 准备传送
|
||||
CompletableFuture<Boolean> future = new CompletableFuture<>();
|
||||
BukkitFurnitureManager.instance().invalidateFurniture(this);
|
||||
|
||||
@@ -5,19 +5,15 @@ import com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.momirealms.craftengine.bukkit.api.BukkitAdaptors;
|
||||
import net.momirealms.craftengine.bukkit.api.event.FurnitureInteractEvent;
|
||||
import net.momirealms.craftengine.bukkit.item.BukkitItemManager;
|
||||
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.NetworkReflections;
|
||||
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
|
||||
import net.momirealms.craftengine.bukkit.util.ComponentUtils;
|
||||
import net.momirealms.craftengine.bukkit.world.BukkitWorldManager;
|
||||
import net.momirealms.craftengine.core.entity.furniture.FurnitureVariant;
|
||||
import net.momirealms.craftengine.core.entity.player.InteractionHand;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.item.ItemKeys;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
import net.momirealms.craftengine.core.util.RandomUtils;
|
||||
import net.momirealms.craftengine.core.world.CEWorld;
|
||||
import net.momirealms.craftengine.core.world.WorldPosition;
|
||||
import net.momirealms.craftengine.core.world.chunk.CEChunk;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.ItemDisplay;
|
||||
@@ -29,12 +25,10 @@ import org.bukkit.event.world.ChunkUnloadEvent;
|
||||
import org.bukkit.event.world.EntitiesLoadEvent;
|
||||
import org.bukkit.event.world.WorldLoadEvent;
|
||||
import org.bukkit.event.world.WorldUnloadEvent;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class FurnitureEventListener implements Listener {
|
||||
private final BukkitFurnitureManager manager;
|
||||
|
||||
@@ -35,22 +35,39 @@ import org.bukkit.World;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.*;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class FurnitureItemBehavior extends ItemBehavior {
|
||||
public static final Factory FACTORY = new Factory();
|
||||
private static final Set<String> ALLOWED_ANCHOR_TYPES = Set.of("wall", "ceiling", "ground");
|
||||
private final Key id;
|
||||
private final Map<AnchorType, Rule> rules;
|
||||
private final boolean ignorePlacer;
|
||||
private final boolean ignoreEntities;
|
||||
|
||||
public FurnitureItemBehavior(Key id, Map<AnchorType, Rule> rules) {
|
||||
public FurnitureItemBehavior(Key id, Map<AnchorType, Rule> rules, boolean ignorePlacer, boolean ignoreEntities) {
|
||||
this.id = id;
|
||||
this.rules = rules;
|
||||
this.ignorePlacer = ignorePlacer;
|
||||
this.ignoreEntities = ignoreEntities;
|
||||
}
|
||||
|
||||
public Key furnitureId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public Map<AnchorType, Rule> rules() {
|
||||
return this.rules;
|
||||
}
|
||||
|
||||
public boolean ignorePlacer() {
|
||||
return this.ignorePlacer;
|
||||
}
|
||||
|
||||
public boolean ignoreEntities() {
|
||||
return this.ignoreEntities;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult useOnBlock(UseOnContext context) {
|
||||
return this.place(context);
|
||||
@@ -118,7 +135,15 @@ public class FurnitureItemBehavior extends ItemBehavior {
|
||||
}
|
||||
// 检查方块、实体阻挡
|
||||
if (!aabbs.isEmpty()) {
|
||||
if (!FastNMS.INSTANCE.checkEntityCollision(context.getLevel().serverWorld(), aabbs.stream().map(it -> FastNMS.INSTANCE.constructor$AABB(it.minX, it.minY, it.minZ, it.maxX, it.maxY, it.maxZ)).toList())) {
|
||||
Predicate<Object> entityPredicate;
|
||||
if (this.ignoreEntities) {
|
||||
entityPredicate = (o) -> false;
|
||||
} else if (this.ignorePlacer) {
|
||||
entityPredicate = player != null ? (o) -> o != player.serverPlayer() : (o) -> true;
|
||||
} else {
|
||||
entityPredicate = (o) -> true;
|
||||
}
|
||||
if (!FastNMS.INSTANCE.checkEntityCollision(context.getLevel().serverWorld(), aabbs.stream().map(it -> FastNMS.INSTANCE.constructor$AABB(it.minX, it.minY, it.minZ, it.maxX, it.maxY, it.maxZ)).toList(), entityPredicate)) {
|
||||
if (player != null && player.enableFurnitureDebug() && VersionHelper.isPaper()) {
|
||||
player.playSound(Key.of("minecraft:entity.villager.no"));
|
||||
Key flame = Key.of("flame");
|
||||
@@ -241,7 +266,10 @@ public class FurnitureItemBehavior extends ItemBehavior {
|
||||
}
|
||||
}
|
||||
}
|
||||
return new FurnitureItemBehavior(furnitureId, rules);
|
||||
return new FurnitureItemBehavior(furnitureId, rules,
|
||||
ResourceConfigUtils.getAsBoolean(arguments.get("ignore-placer"), "ignore-placer"),
|
||||
ResourceConfigUtils.getAsBoolean(arguments.get("ignore-entities"), "ignore-entities")
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,14 +3,12 @@ package net.momirealms.craftengine.bukkit.item.listener;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.momirealms.craftengine.bukkit.api.BukkitAdaptors;
|
||||
import net.momirealms.craftengine.bukkit.api.CraftEngineBlocks;
|
||||
import net.momirealms.craftengine.bukkit.item.BukkitItemManager;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
|
||||
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.NetworkReflections;
|
||||
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
|
||||
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
|
||||
import net.momirealms.craftengine.bukkit.util.ComponentUtils;
|
||||
import net.momirealms.craftengine.bukkit.util.ItemStackUtils;
|
||||
import net.momirealms.craftengine.bukkit.util.LocationUtils;
|
||||
import net.momirealms.craftengine.core.block.CustomBlock;
|
||||
import net.momirealms.craftengine.core.block.ImmutableBlockState;
|
||||
@@ -20,7 +18,6 @@ import net.momirealms.craftengine.core.entity.player.InteractionHand;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.item.ItemKeys;
|
||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
@@ -1,24 +1,18 @@
|
||||
package net.momirealms.craftengine.bukkit.plugin;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
import net.momirealms.craftengine.bukkit.api.BukkitAdaptors;
|
||||
import net.momirealms.craftengine.bukkit.nms.FastNMS;
|
||||
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MRegistryOps;
|
||||
import net.momirealms.craftengine.bukkit.util.ParticleUtils;
|
||||
import net.momirealms.craftengine.bukkit.world.particle.BukkitParticleType;
|
||||
import net.momirealms.craftengine.core.plugin.Platform;
|
||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.world.World;
|
||||
import net.momirealms.craftengine.core.world.particle.ParticleType;
|
||||
import net.momirealms.sparrow.nbt.CompoundTag;
|
||||
import net.momirealms.sparrow.nbt.Tag;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Particle;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class BukkitPlatform implements Platform {
|
||||
private final BukkitCraftEngine plugin;
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ public final class EntityUtils {
|
||||
if (!canDismount) {
|
||||
continue;
|
||||
}
|
||||
if (!FastNMS.INSTANCE.checkEntityCollision(serverLevel, List.of(newAABB))) {
|
||||
if (!FastNMS.INSTANCE.checkEntityCollision(serverLevel, List.of(newAABB), o -> true)) {
|
||||
continue;
|
||||
}
|
||||
if (VersionHelper.isFolia()) {
|
||||
|
||||
@@ -11,6 +11,8 @@ items:
|
||||
rotation: four
|
||||
alignment: center
|
||||
furniture:
|
||||
events:
|
||||
- template: default:rotatable_furniture_4
|
||||
settings:
|
||||
item: default:bench
|
||||
sounds:
|
||||
|
||||
@@ -31,6 +31,11 @@ items:
|
||||
item-name: <!i><l10n:item.flower_basket>
|
||||
furniture:
|
||||
default:flower_basket:
|
||||
events:
|
||||
- template: default:rotatable_furniture_8
|
||||
arguments:
|
||||
blacklist_variants:
|
||||
- wall
|
||||
settings:
|
||||
item: default:flower_basket
|
||||
sounds:
|
||||
|
||||
@@ -11,6 +11,8 @@ items:
|
||||
rotation: any
|
||||
alignment: any
|
||||
furniture:
|
||||
events:
|
||||
- template: default:rotatable_furniture_8
|
||||
settings:
|
||||
item: default:wooden_chair
|
||||
sounds:
|
||||
@@ -27,16 +29,6 @@ items:
|
||||
billboard: FIXED
|
||||
translation: 0,0.5,0
|
||||
hitboxes:
|
||||
$$>=1.20.5:
|
||||
- position: 0,0,0
|
||||
type: custom
|
||||
entity-type: slime
|
||||
invisible: true
|
||||
can-use-item-on: true
|
||||
blocks-building: true
|
||||
seats:
|
||||
- 0,0,-0.1 0
|
||||
$$fallback:
|
||||
- position: 0,0,0
|
||||
type: interaction
|
||||
blocks-building: true
|
||||
|
||||
@@ -16,7 +16,7 @@ templates:
|
||||
east: south
|
||||
south: west
|
||||
west: north
|
||||
default:rotatable_furniture:
|
||||
default:rotatable_furniture_4:
|
||||
on: right_click
|
||||
conditions:
|
||||
- type: expression
|
||||
@@ -28,4 +28,45 @@ templates:
|
||||
- type: swing_hand
|
||||
- type: play_sound
|
||||
sound: ${rotate_sound:-'minecraft:block.bamboo.place'}
|
||||
on-failure: []
|
||||
on-failure:
|
||||
- type: rotate_furniture
|
||||
degree: 180
|
||||
on-success:
|
||||
- type: swing_hand
|
||||
- type: play_sound
|
||||
sound: ${rotate_sound:-'minecraft:block.bamboo.place'}
|
||||
on-failure:
|
||||
- type: rotate_furniture
|
||||
degree: 270
|
||||
on-success:
|
||||
- type: swing_hand
|
||||
- type: play_sound
|
||||
sound: ${rotate_sound:-'minecraft:block.bamboo.place'}
|
||||
default:rotatable_furniture_8:
|
||||
on: right_click
|
||||
conditions:
|
||||
- type: expression
|
||||
expression: <arg:player.is_sneaking>
|
||||
- type: "!match_furniture_variant"
|
||||
variants: ${blacklist_variants:-null}
|
||||
functions:
|
||||
- type: rotate_furniture
|
||||
degree: 45
|
||||
on-success:
|
||||
- type: swing_hand
|
||||
- type: play_sound
|
||||
sound: ${rotate_sound:-'minecraft:block.bamboo.place'}
|
||||
on-failure:
|
||||
- type: rotate_furniture
|
||||
degree: 90
|
||||
on-success:
|
||||
- type: swing_hand
|
||||
- type: play_sound
|
||||
sound: ${rotate_sound:-'minecraft:block.bamboo.place'}
|
||||
on-failure:
|
||||
- type: rotate_furniture
|
||||
degree: 135
|
||||
on-success:
|
||||
- type: swing_hand
|
||||
- type: play_sound
|
||||
sound: ${rotate_sound:-'minecraft:block.bamboo.place'}
|
||||
@@ -1,6 +1,5 @@
|
||||
package net.momirealms.craftengine.core.entity.furniture;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSortedMap;
|
||||
import net.momirealms.craftengine.core.entity.furniture.behavior.EmptyFurnitureBehavior;
|
||||
import net.momirealms.craftengine.core.entity.furniture.behavior.FurnitureBehavior;
|
||||
|
||||
@@ -39,6 +39,9 @@ public class LootConditions {
|
||||
register(CommonConditions.EXPRESSION, new ExpressionCondition.FactoryImpl<>());
|
||||
register(CommonConditions.IS_NULL, new IsNullCondition.FactoryImpl<>());
|
||||
register(CommonConditions.HAND, new HandCondition.FactoryImpl<>());
|
||||
register(CommonConditions.ON_COOLDOWN, new OnCooldownCondition.FactoryImpl<>());
|
||||
register(CommonConditions.INVENTORY_HAS_ITEM, new InventoryHasItemCondition.FactoryImpl<>());
|
||||
register(CommonConditions.MATCH_FURNITURE_VARIANT, new MatchFurnitureVariantCondition.FactoryImpl<>());
|
||||
}
|
||||
|
||||
public static void register(Key key, ConditionFactory<LootContext> factory) {
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.momirealms.craftengine.core.pack;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
public class CachedConfigSection {
|
||||
private final Pack pack;
|
||||
@@ -10,10 +11,10 @@ public class CachedConfigSection {
|
||||
private final Map<String, Object> config;
|
||||
|
||||
public CachedConfigSection(String prefix, Map<String, Object> config, Path filePath, Pack pack) {
|
||||
this.config = config;
|
||||
this.filePath = filePath;
|
||||
this.pack = pack;
|
||||
this.prefix = prefix;
|
||||
this.config = Objects.requireNonNull(config);
|
||||
this.filePath = Objects.requireNonNull(filePath);
|
||||
this.pack = Objects.requireNonNull(pack);
|
||||
this.prefix = Objects.requireNonNull(prefix);
|
||||
}
|
||||
|
||||
public Map<String, Object> config() {
|
||||
|
||||
@@ -29,13 +29,21 @@ public abstract class IdSectionConfigParser extends AbstractConfigParser {
|
||||
continue;
|
||||
}
|
||||
Map<String, Object> config = castToMap(section, false);
|
||||
String node = cached.prefix() + "." + key;
|
||||
if ((boolean) config.getOrDefault("debug", false)) {
|
||||
CraftEngine.instance().logger().info(GsonHelper.get().toJson(CraftEngine.instance().templateManager().applyTemplates(id, config)));
|
||||
if (!ResourceConfigUtils.runCatching(
|
||||
cached.filePath(),
|
||||
node,
|
||||
() -> CraftEngine.instance().logger().info(GsonHelper.get().toJson(CraftEngine.instance().templateManager().applyTemplates(id, config))),
|
||||
() -> GsonHelper.get().toJson(section)
|
||||
)) {
|
||||
// 发生异常
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (!(boolean) config.getOrDefault("enable", true)) {
|
||||
continue;
|
||||
}
|
||||
String node = cached.prefix() + "." + key;
|
||||
ResourceConfigUtils.runCatching(
|
||||
cached.filePath(),
|
||||
node,
|
||||
|
||||
@@ -15,6 +15,7 @@ public final class CommonConditions {
|
||||
public static final Key MATCH_ENTITY = Key.of("craftengine:match_entity");
|
||||
public static final Key MATCH_BLOCK = Key.of("craftengine:match_block");
|
||||
public static final Key MATCH_BLOCK_PROPERTY = Key.from("craftengine:match_block_property");
|
||||
public static final Key MATCH_FURNITURE_VARIANT = Key.from("craftengine:match_furniture_variant");
|
||||
public static final Key TABLE_BONUS = Key.from("craftengine:table_bonus");
|
||||
public static final Key SURVIVES_EXPLOSION = Key.from("craftengine:survives_explosion");
|
||||
public static final Key RANDOM = Key.from("craftengine:random");
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
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.ItemUtils;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.entity.furniture.Furniture;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class MatchFurnitureVariantCondition<CTX extends Context> implements Condition<CTX> {
|
||||
private final Set<String> variants;
|
||||
|
||||
public MatchFurnitureVariantCondition(Collection<String> variants) {
|
||||
this.variants = new HashSet<>(variants);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return CommonConditions.MATCH_FURNITURE_VARIANT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(CTX ctx) {
|
||||
Optional<Furniture> furniture = ctx.getOptionalParameter(DirectContextParameters.FURNITURE);
|
||||
return furniture.filter(value -> this.variants.contains(value.getCurrentVariant().name())).isPresent();
|
||||
}
|
||||
|
||||
public static class FactoryImpl<CTX extends Context> implements ConditionFactory<CTX> {
|
||||
|
||||
@Override
|
||||
public Condition<CTX> create(Map<String, Object> arguments) {
|
||||
List<String> variants = MiscUtils.getAsStringList(ResourceConfigUtils.get(arguments, "variant", "variants"));
|
||||
return new MatchFurnitureVariantCondition<>(variants);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,6 +41,7 @@ public class EventConditions {
|
||||
register(CommonConditions.HAND, new HandCondition.FactoryImpl<>());
|
||||
register(CommonConditions.ON_COOLDOWN, new OnCooldownCondition.FactoryImpl<>());
|
||||
register(CommonConditions.INVENTORY_HAS_ITEM, new InventoryHasItemCondition.FactoryImpl<>());
|
||||
register(CommonConditions.MATCH_FURNITURE_VARIANT, new MatchFurnitureVariantCondition.FactoryImpl<>());
|
||||
}
|
||||
|
||||
public static void register(Key key, ConditionFactory<Context> factory) {
|
||||
|
||||
@@ -1,28 +1,18 @@
|
||||
package net.momirealms.craftengine.core.plugin.context.function;
|
||||
|
||||
import net.momirealms.craftengine.core.entity.furniture.Furniture;
|
||||
import net.momirealms.craftengine.core.entity.player.InteractionHand;
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootTable;
|
||||
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.event.EventFunctions;
|
||||
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.sound.SoundData;
|
||||
import net.momirealms.craftengine.core.sound.SoundSource;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
import net.momirealms.craftengine.core.world.World;
|
||||
import net.momirealms.craftengine.core.world.WorldPosition;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
public class RotateFurnitureFunction<CTX extends Context> extends AbstractConditionalFunction<CTX> {
|
||||
private final NumberProvider degree;
|
||||
@@ -64,7 +54,7 @@ public class RotateFurnitureFunction<CTX extends Context> extends AbstractCondit
|
||||
}
|
||||
|
||||
public NumberProvider degree() {
|
||||
return degree;
|
||||
return this.degree;
|
||||
}
|
||||
|
||||
public static class FactoryImpl<CTX extends Context> extends AbstractFactory<CTX> {
|
||||
|
||||
@@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.plugin.entityculling;
|
||||
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
import net.momirealms.craftengine.core.plugin.config.Config;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||
import net.momirealms.craftengine.core.world.ChunkPos;
|
||||
import net.momirealms.craftengine.core.world.MutableVec3d;
|
||||
|
||||
@@ -324,17 +324,20 @@ public final class ResourceConfigUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static void runCatching(Path configPath, String node, Runnable runnable, Supplier<String> config) {
|
||||
public static boolean runCatching(Path configPath, String node, Runnable runnable, Supplier<String> config) {
|
||||
try {
|
||||
runnable.run();
|
||||
return true;
|
||||
} catch (LocalizedException e) {
|
||||
printWarningRecursively(e, configPath, node);
|
||||
return false;
|
||||
} catch (Exception e) {
|
||||
String message = "Unexpected error loading file " + configPath + " - '" + node + "'.";
|
||||
if (config != null) {
|
||||
message += " Configuration details: " + config.get();
|
||||
}
|
||||
CraftEngine.instance().logger().warn(message, e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.util.snbt;
|
||||
|
||||
import com.mojang.brigadier.StringReader;
|
||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
|
||||
import com.mojang.serialization.DynamicOps;
|
||||
import net.momirealms.craftengine.core.util.snbt.parse.*;
|
||||
import net.momirealms.sparrow.nbt.util.UUIDUtil;
|
||||
|
||||
@@ -4,7 +4,6 @@ import com.mojang.brigadier.ImmutableStringReader;
|
||||
import com.mojang.brigadier.Message;
|
||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
import com.mojang.brigadier.exceptions.DynamicCommandExceptionType;
|
||||
import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ byte_buddy_version=1.18.1
|
||||
ahocorasick_version=0.6.3
|
||||
snake_yaml_version=2.5
|
||||
anti_grief_version=1.0.5
|
||||
nms_helper_version=1.0.141
|
||||
nms_helper_version=1.0.142
|
||||
evalex_version=3.5.0
|
||||
reactive_streams_version=1.0.4
|
||||
amazon_awssdk_version=2.38.7
|
||||
|
||||
Reference in New Issue
Block a user