mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2026-01-04 15:41:38 +00:00
重构条件系统
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package net.momirealms.craftengine.bukkit.compatibility.legacy.slimeworld;
|
||||
|
||||
import com.flowpowered.nbt.ByteArrayTag;
|
||||
import com.flowpowered.nbt.CompoundMap;
|
||||
import com.infernalsuite.aswm.api.world.SlimeChunk;
|
||||
import com.infernalsuite.aswm.api.world.SlimeWorld;
|
||||
import net.momirealms.craftengine.core.world.CEWorld;
|
||||
@@ -42,18 +41,6 @@ public class LegacySlimeWorldDataStorage implements WorldDataStorage {
|
||||
}
|
||||
}
|
||||
|
||||
private CompoundMap createOrGetDataMap(SlimeWorld world) {
|
||||
Optional<com.flowpowered.nbt.CompoundTag> optionalCompoundTag = world.getExtraData().getAsCompoundTag("craftengine");
|
||||
CompoundMap ccDataMap;
|
||||
if (optionalCompoundTag.isEmpty()) {
|
||||
ccDataMap = new CompoundMap();
|
||||
world.getExtraData().getValue().put(new com.flowpowered.nbt.CompoundTag("customcrops", ccDataMap));
|
||||
} else {
|
||||
ccDataMap = optionalCompoundTag.get().getValue();
|
||||
}
|
||||
return ccDataMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeChunkAt(@NotNull ChunkPos pos, @NotNull CEChunk chunk, boolean immediately) {
|
||||
SlimeChunk slimeChunk = getWorld().getChunk(pos.x, pos.z);
|
||||
|
||||
@@ -12,9 +12,9 @@ import net.momirealms.craftengine.core.block.ImmutableBlockState;
|
||||
import net.momirealms.craftengine.core.block.UpdateOption;
|
||||
import net.momirealms.craftengine.core.entity.player.InteractionHand;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.world.Vec3d;
|
||||
import net.momirealms.craftengine.core.world.World;
|
||||
import net.momirealms.craftengine.core.world.WorldEvents;
|
||||
@@ -172,11 +172,11 @@ public final class CraftEngineBlocks {
|
||||
Location location = block.getLocation();
|
||||
Vec3d vec3d = new Vec3d(location.getBlockX() + 0.5, location.getBlockY() + 0.5, location.getBlockZ() + 0.5);
|
||||
if (dropLoot) {
|
||||
ContextHolder.Builder builder = new ContextHolder.Builder().withParameter(LootParameters.WORLD, world).withParameter(LootParameters.LOCATION, vec3d);
|
||||
ContextHolder.Builder builder = new ContextHolder.Builder().withParameter(CommonParameters.WORLD, world).withParameter(CommonParameters.LOCATION, vec3d);
|
||||
BukkitServerPlayer serverPlayer = BukkitCraftEngine.instance().adapt(player);
|
||||
if (player != null) {
|
||||
builder.withParameter(LootParameters.PLAYER, serverPlayer);
|
||||
builder.withOptionalParameter(LootParameters.TOOL, serverPlayer.getItemInHand(InteractionHand.MAIN_HAND));
|
||||
builder.withParameter(CommonParameters.PLAYER, serverPlayer);
|
||||
builder.withOptionalParameter(CommonParameters.TOOL, serverPlayer.getItemInHand(InteractionHand.MAIN_HAND));
|
||||
}
|
||||
for (Item<?> item : state.getDrops(builder, world)) {
|
||||
world.dropItemNaturally(vec3d, item);
|
||||
|
||||
@@ -12,9 +12,9 @@ import net.momirealms.craftengine.core.entity.furniture.CustomFurniture;
|
||||
import net.momirealms.craftengine.core.entity.player.InteractionHand;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootTable;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.world.Vec3d;
|
||||
import net.momirealms.craftengine.core.world.World;
|
||||
import org.bukkit.Location;
|
||||
@@ -271,11 +271,11 @@ public final class CraftEngineFurniture {
|
||||
World world = new BukkitWorld(location.getWorld());
|
||||
if (dropLoot && lootTable != null) {
|
||||
ContextHolder.Builder builder = ContextHolder.builder();
|
||||
builder.withParameter(LootParameters.LOCATION, vec3d);
|
||||
builder.withParameter(LootParameters.WORLD, world);
|
||||
builder.withParameter(CommonParameters.LOCATION, vec3d);
|
||||
builder.withParameter(CommonParameters.WORLD, world);
|
||||
if (player != null) {
|
||||
builder.withParameter(LootParameters.PLAYER, player);
|
||||
builder.withOptionalParameter(LootParameters.TOOL, player.getItemInHand(InteractionHand.MAIN_HAND));
|
||||
builder.withParameter(CommonParameters.PLAYER, player);
|
||||
builder.withOptionalParameter(CommonParameters.TOOL, player.getItemInHand(InteractionHand.MAIN_HAND));
|
||||
}
|
||||
List<Item<ItemStack>> items = lootTable.getRandomItems(builder.build(), world);
|
||||
for (Item<ItemStack> item : items) {
|
||||
|
||||
@@ -12,10 +12,10 @@ import net.momirealms.craftengine.core.block.properties.Property;
|
||||
import net.momirealms.craftengine.core.entity.player.InteractionHand;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootTable;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.config.Config;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.world.BlockPos;
|
||||
import net.momirealms.craftengine.core.world.Vec3d;
|
||||
import org.bukkit.*;
|
||||
@@ -151,10 +151,10 @@ public class BlockEventListener implements Listener {
|
||||
|
||||
// drop items
|
||||
ContextHolder.Builder builder = ContextHolder.builder();
|
||||
builder.withParameter(LootParameters.WORLD, world);
|
||||
builder.withParameter(LootParameters.LOCATION, vec3d);
|
||||
builder.withParameter(LootParameters.PLAYER, serverPlayer);
|
||||
builder.withOptionalParameter(LootParameters.TOOL, itemInHand);
|
||||
builder.withParameter(CommonParameters.WORLD, world);
|
||||
builder.withParameter(CommonParameters.LOCATION, vec3d);
|
||||
builder.withParameter(CommonParameters.PLAYER, serverPlayer);
|
||||
builder.withOptionalParameter(CommonParameters.TOOL, itemInHand);
|
||||
for (Item<Object> item : state.getDrops(builder, world)) {
|
||||
world.dropItemNaturally(vec3d, item);
|
||||
}
|
||||
@@ -172,10 +172,10 @@ public class BlockEventListener implements Listener {
|
||||
net.momirealms.craftengine.core.world.World world = new BukkitWorld(player.getWorld());
|
||||
Vec3d vec3d = new Vec3d(location.getBlockX() + 0.5, location.getBlockY() + 0.5, location.getBlockZ() + 0.5);
|
||||
ContextHolder.Builder builder = ContextHolder.builder();
|
||||
builder.withParameter(LootParameters.WORLD, world);
|
||||
builder.withParameter(LootParameters.LOCATION, vec3d);
|
||||
builder.withParameter(LootParameters.PLAYER, serverPlayer);
|
||||
builder.withOptionalParameter(LootParameters.TOOL, serverPlayer.getItemInHand(InteractionHand.MAIN_HAND));
|
||||
builder.withParameter(CommonParameters.WORLD, world);
|
||||
builder.withParameter(CommonParameters.LOCATION, vec3d);
|
||||
builder.withParameter(CommonParameters.PLAYER, serverPlayer);
|
||||
builder.withOptionalParameter(CommonParameters.TOOL, serverPlayer.getItemInHand(InteractionHand.MAIN_HAND));
|
||||
ContextHolder contextHolder = builder.build();
|
||||
for (LootTable<?> lootTable : it.lootTables()) {
|
||||
for (Item<?> item : lootTable.getRandomItems(contextHolder, world)) {
|
||||
@@ -214,8 +214,8 @@ public class BlockEventListener implements Listener {
|
||||
net.momirealms.craftengine.core.world.World world = new BukkitWorld(block.getWorld());
|
||||
Vec3d vec3d = new Vec3d(location.getBlockX() + 0.5, location.getBlockY() + 0.5, location.getBlockZ() + 0.5);
|
||||
ContextHolder.Builder builder = ContextHolder.builder();
|
||||
builder.withParameter(LootParameters.WORLD, world);
|
||||
builder.withParameter(LootParameters.LOCATION, vec3d);
|
||||
builder.withParameter(CommonParameters.WORLD, world);
|
||||
builder.withParameter(CommonParameters.LOCATION, vec3d);
|
||||
for (Item<?> item : immutableBlockState.getDrops(builder, world)) {
|
||||
world.dropItemNaturally(vec3d, item);
|
||||
}
|
||||
@@ -232,8 +232,8 @@ public class BlockEventListener implements Listener {
|
||||
Vec3d vec3d = new Vec3d(location.getBlockX() + 0.5, location.getBlockY() + 0.5, location.getBlockZ() + 0.5);
|
||||
net.momirealms.craftengine.core.world.World world = new BukkitWorld(location.getWorld());
|
||||
ContextHolder.Builder builder = ContextHolder.builder();
|
||||
builder.withParameter(LootParameters.WORLD, world);
|
||||
builder.withParameter(LootParameters.LOCATION, vec3d);
|
||||
builder.withParameter(CommonParameters.WORLD, world);
|
||||
builder.withParameter(CommonParameters.LOCATION, vec3d);
|
||||
ContextHolder contextHolder = builder.build();
|
||||
for (LootTable<?> lootTable : it.lootTables()) {
|
||||
for (Item<?> item : lootTable.getRandomItems(contextHolder, world)) {
|
||||
@@ -329,10 +329,10 @@ public class BlockEventListener implements Listener {
|
||||
if (state != null && !state.isEmpty()) {
|
||||
ContextHolder.Builder builder = ContextHolder.builder();
|
||||
Vec3d vec3d = Vec3d.atCenterOf(blockPos);
|
||||
builder.withParameter(LootParameters.LOCATION, vec3d);
|
||||
builder.withParameter(LootParameters.WORLD, world);
|
||||
builder.withParameter(CommonParameters.LOCATION, vec3d);
|
||||
builder.withParameter(CommonParameters.WORLD, world);
|
||||
if (yield < 1f) {
|
||||
builder.withParameter(LootParameters.EXPLOSION_RADIUS, 1.0f / yield);
|
||||
builder.withParameter(CommonParameters.EXPLOSION_RADIUS, 1.0f / yield);
|
||||
}
|
||||
for (Item<Object> item : state.getDrops(builder, world)) {
|
||||
world.dropItemNaturally(vec3d, item);
|
||||
|
||||
@@ -359,7 +359,7 @@ public class BukkitBlockManager extends AbstractBlockManager {
|
||||
|
||||
appearances = Map.of("default", pair.right());
|
||||
String internalBlock = pair.left().value() + "_" + internalId;
|
||||
Key internalBlockId = Key.of(CraftEngine.NAMESPACE, internalBlock);
|
||||
Key internalBlockId = Key.of(Key.DEFAULT_NAMESPACE, internalBlock);
|
||||
int internalBlockRegistryId = Optional.ofNullable(internalId2StateId.get(internalBlockId)).orElse(-1);
|
||||
if (internalBlockRegistryId == -1) {
|
||||
throw new LocalizedResourceConfigException("warning.config.block.state.invalid_real_id",
|
||||
@@ -408,7 +408,7 @@ public class BukkitBlockManager extends AbstractBlockManager {
|
||||
}
|
||||
int internalId = ResourceConfigUtils.getAsInt(variantSection.getOrDefault("id", -1), "id");
|
||||
Key baseBlock = tempTypeMap.get(appearance);
|
||||
Key internalBlockId = Key.of(CraftEngine.NAMESPACE, baseBlock.value() + "_" + internalId);
|
||||
Key internalBlockId = Key.of(Key.DEFAULT_NAMESPACE, baseBlock.value() + "_" + internalId);
|
||||
int internalBlockRegistryId = Optional.ofNullable(internalId2StateId.get(internalBlockId)).orElse(-1);
|
||||
if (internalBlockRegistryId == -1) {
|
||||
throw new LocalizedResourceConfigException("warning.config.block.state.invalid_real_id",
|
||||
@@ -782,7 +782,7 @@ public class BukkitBlockManager extends AbstractBlockManager {
|
||||
}
|
||||
|
||||
private Key createRealBlockKey(Key replacedBlock, int index) {
|
||||
return Key.of(CraftEngine.NAMESPACE, replacedBlock.value() + "_" + index);
|
||||
return Key.of(Key.DEFAULT_NAMESPACE, replacedBlock.value() + "_" + index);
|
||||
}
|
||||
|
||||
private Object createBlockProperties(Key realBlockKey) throws Exception {
|
||||
|
||||
@@ -5,9 +5,9 @@ import net.momirealms.craftengine.bukkit.util.Reflections;
|
||||
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
|
||||
import net.momirealms.craftengine.core.block.ImmutableBlockState;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.world.Vec3d;
|
||||
import org.bukkit.entity.FallingBlock;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -32,14 +32,14 @@ public class FallingBlockRemoveListener implements Listener {
|
||||
ImmutableBlockState immutableBlockState = BukkitBlockManager.instance().getImmutableBlockState(stateId);
|
||||
if (immutableBlockState == null || immutableBlockState.isEmpty()) return;
|
||||
ContextHolder.Builder builder = ContextHolder.builder();
|
||||
builder.withParameter(LootParameters.FALLING_BLOCK, true);
|
||||
builder.withParameter(CommonParameters.FALLING_BLOCK, true);
|
||||
double x = Reflections.field$Entity$xo.getDouble(fallingBlockEntity);
|
||||
double y = Reflections.field$Entity$yo.getDouble(fallingBlockEntity);
|
||||
double z = Reflections.field$Entity$zo.getDouble(fallingBlockEntity);
|
||||
Vec3d vec3d = new Vec3d(x, y, z);
|
||||
net.momirealms.craftengine.core.world.World world = new BukkitWorld(fallingBlock.getWorld());
|
||||
builder.withParameter(LootParameters.LOCATION, vec3d);
|
||||
builder.withParameter(LootParameters.WORLD, world);
|
||||
builder.withParameter(CommonParameters.LOCATION, vec3d);
|
||||
builder.withParameter(CommonParameters.WORLD, world);
|
||||
for (Item<Object> item : immutableBlockState.getDrops(builder, world)) {
|
||||
world.dropItemNaturally(vec3d, item);
|
||||
}
|
||||
|
||||
@@ -11,12 +11,12 @@ import net.momirealms.craftengine.core.block.CustomBlock;
|
||||
import net.momirealms.craftengine.core.block.ImmutableBlockState;
|
||||
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||
import net.momirealms.craftengine.core.util.Tuple;
|
||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.world.BlockPos;
|
||||
import net.momirealms.craftengine.core.world.Vec3d;
|
||||
import net.momirealms.craftengine.core.world.WorldEvents;
|
||||
@@ -71,8 +71,8 @@ public class BushBlockBehavior extends BukkitBlockBehavior {
|
||||
BlockPos pos = LocationUtils.fromBlockPos(blockPos);
|
||||
Vec3d vec3d = Vec3d.atCenterOf(pos);
|
||||
net.momirealms.craftengine.core.world.World world = new BukkitWorld(FastNMS.INSTANCE.method$Level$getCraftWorld(level));
|
||||
builder.withParameter(LootParameters.LOCATION, vec3d);
|
||||
builder.withParameter(LootParameters.WORLD, world);
|
||||
builder.withParameter(CommonParameters.LOCATION, vec3d);
|
||||
builder.withParameter(CommonParameters.WORLD, world);
|
||||
for (Item<Object> item : previousState.getDrops(builder, world)) {
|
||||
world.dropItemNaturally(vec3d, item);
|
||||
}
|
||||
|
||||
@@ -13,13 +13,13 @@ import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
|
||||
import net.momirealms.craftengine.core.block.properties.IntegerProperty;
|
||||
import net.momirealms.craftengine.core.block.properties.Property;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.number.NumberProvider;
|
||||
import net.momirealms.craftengine.core.loot.number.NumberProviders;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
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.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.RandomUtils;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
import net.momirealms.craftengine.core.util.Tuple;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.world.Vec3d;
|
||||
import net.momirealms.craftengine.core.world.Vec3i;
|
||||
import net.momirealms.craftengine.shared.block.BlockBehavior;
|
||||
@@ -149,8 +149,8 @@ public class CropBlockBehavior extends BushBlockBehavior {
|
||||
|
||||
net.momirealms.craftengine.core.world.World wrappedWorld = new BukkitWorld(world);
|
||||
int i = this.getAge(immutableBlockState) + this.boneMealBonus.getInt(new LootContext(wrappedWorld, 1, ThreadLocalRandom.current(), ContextHolder.builder()
|
||||
.withParameter(LootParameters.WORLD, wrappedWorld)
|
||||
.withParameter(LootParameters.LOCATION, Vec3d.atCenterOf(new Vec3i(x, y, z)))
|
||||
.withParameter(CommonParameters.WORLD, wrappedWorld)
|
||||
.withParameter(CommonParameters.LOCATION, Vec3d.atCenterOf(new Vec3i(x, y, z)))
|
||||
.build()));
|
||||
int maxAge = this.ageProperty.max;
|
||||
if (i > maxAge) {
|
||||
|
||||
@@ -10,10 +10,10 @@ import net.momirealms.craftengine.core.block.CustomBlock;
|
||||
import net.momirealms.craftengine.core.block.ImmutableBlockState;
|
||||
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.world.Vec3d;
|
||||
import net.momirealms.craftengine.shared.block.BlockBehavior;
|
||||
|
||||
@@ -91,14 +91,14 @@ public class FallingBlockBehavior extends BukkitBlockBehavior {
|
||||
ImmutableBlockState immutableBlockState = BukkitBlockManager.instance().getImmutableBlockState(stateId);
|
||||
if (immutableBlockState == null || immutableBlockState.isEmpty()) return;
|
||||
ContextHolder.Builder builder = ContextHolder.builder();
|
||||
builder.withParameter(LootParameters.FALLING_BLOCK, true);
|
||||
builder.withParameter(CommonParameters.FALLING_BLOCK, true);
|
||||
double x = Reflections.field$Entity$xo.getDouble(fallingBlockEntity);
|
||||
double y = Reflections.field$Entity$yo.getDouble(fallingBlockEntity);
|
||||
double z = Reflections.field$Entity$zo.getDouble(fallingBlockEntity);
|
||||
Vec3d vec3d = new Vec3d(x, y, z);
|
||||
net.momirealms.craftengine.core.world.World world = new BukkitWorld(FastNMS.INSTANCE.method$Level$getCraftWorld(level));
|
||||
builder.withParameter(LootParameters.LOCATION, vec3d);
|
||||
builder.withParameter(LootParameters.WORLD, world);
|
||||
builder.withParameter(CommonParameters.LOCATION, vec3d);
|
||||
builder.withParameter(CommonParameters.WORLD, world);
|
||||
for (Item<Object> item : immutableBlockState.getDrops(builder, world)) {
|
||||
world.dropItemNaturally(vec3d, item);
|
||||
}
|
||||
|
||||
@@ -13,12 +13,12 @@ import net.momirealms.craftengine.core.block.UpdateOption;
|
||||
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
|
||||
import net.momirealms.craftengine.core.block.properties.Property;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.Direction;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.world.BlockPos;
|
||||
import net.momirealms.craftengine.core.world.Vec3d;
|
||||
import net.momirealms.craftengine.shared.block.BlockBehavior;
|
||||
@@ -125,8 +125,8 @@ public class LeavesBlockBehavior extends WaterLoggedBlockBehavior {
|
||||
Vec3d vec3d = Vec3d.atCenterOf(pos);
|
||||
net.momirealms.craftengine.core.world.World world = new BukkitWorld(bukkitWorld);
|
||||
ContextHolder.Builder builder = ContextHolder.builder()
|
||||
.withParameter(LootParameters.LOCATION, vec3d)
|
||||
.withParameter(LootParameters.WORLD, world);
|
||||
.withParameter(CommonParameters.LOCATION, vec3d)
|
||||
.withParameter(CommonParameters.WORLD, world);
|
||||
for (Item<Object> item : immutableBlockState.getDrops(builder, world)) {
|
||||
world.dropItemNaturally(vec3d, item);
|
||||
}
|
||||
|
||||
@@ -13,9 +13,9 @@ import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
|
||||
import net.momirealms.craftengine.core.block.properties.IntegerProperty;
|
||||
import net.momirealms.craftengine.core.block.properties.Property;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.*;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.world.BlockPos;
|
||||
import net.momirealms.craftengine.core.world.Vec3d;
|
||||
import net.momirealms.craftengine.core.world.WorldEvents;
|
||||
@@ -61,8 +61,8 @@ public class SugarCaneBlockBehavior extends BushBlockBehavior {
|
||||
Vec3d vec3d = Vec3d.atCenterOf(LocationUtils.fromBlockPos(blockPos));
|
||||
net.momirealms.craftengine.core.world.World world = new BukkitWorld(FastNMS.INSTANCE.method$Level$getCraftWorld(level));
|
||||
ContextHolder.Builder builder = ContextHolder.builder()
|
||||
.withParameter(LootParameters.LOCATION, vec3d)
|
||||
.withParameter(LootParameters.WORLD, world);
|
||||
.withParameter(CommonParameters.LOCATION, vec3d)
|
||||
.withParameter(CommonParameters.WORLD, world);
|
||||
for (Item<Object> item : currentState.getDrops(builder, world)) {
|
||||
world.dropItemNaturally(vec3d, item);
|
||||
}
|
||||
|
||||
@@ -28,12 +28,12 @@ import net.momirealms.craftengine.core.pack.model.select.ChargeTypeSelectPropert
|
||||
import net.momirealms.craftengine.core.pack.model.select.TrimMaterialSelectProperty;
|
||||
import net.momirealms.craftengine.core.plugin.config.Config;
|
||||
import net.momirealms.craftengine.core.plugin.config.ConfigSectionParser;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||
import net.momirealms.craftengine.core.registry.BuiltInRegistries;
|
||||
import net.momirealms.craftengine.core.registry.Holder;
|
||||
import net.momirealms.craftengine.core.registry.WritableRegistry;
|
||||
import net.momirealms.craftengine.core.util.*;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
|
||||
@@ -19,13 +19,13 @@ import net.momirealms.craftengine.core.item.recipe.input.CraftingInput;
|
||||
import net.momirealms.craftengine.core.item.recipe.input.SingleItemInput;
|
||||
import net.momirealms.craftengine.core.item.recipe.input.SmithingInput;
|
||||
import net.momirealms.craftengine.core.plugin.config.Config;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.registry.BuiltInRegistries;
|
||||
import net.momirealms.craftengine.core.registry.Holder;
|
||||
import net.momirealms.craftengine.core.util.AdventureHelper;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.Pair;
|
||||
import net.momirealms.craftengine.core.util.VersionHelper;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Campfire;
|
||||
|
||||
@@ -11,13 +11,13 @@ import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.AbstractVanillaLootManager;
|
||||
import net.momirealms.craftengine.core.loot.LootTable;
|
||||
import net.momirealms.craftengine.core.loot.VanillaLoot;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.pack.LoadingSequence;
|
||||
import net.momirealms.craftengine.core.pack.Pack;
|
||||
import net.momirealms.craftengine.core.plugin.config.ConfigSectionParser;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||
import net.momirealms.craftengine.core.util.*;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.world.Vec3d;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
@@ -68,13 +68,14 @@ public class BukkitVanillaLootManager extends AbstractVanillaLootManager impleme
|
||||
net.momirealms.craftengine.core.world.World world = new BukkitWorld(entity.getWorld());
|
||||
Vec3d vec3d = new Vec3d(location.getBlockX() + 0.5, location.getBlockY() + 0.5, location.getBlockZ() + 0.5);
|
||||
ContextHolder.Builder builder = ContextHolder.builder();
|
||||
builder.withParameter(LootParameters.WORLD, world);
|
||||
builder.withParameter(LootParameters.LOCATION, vec3d);
|
||||
builder.withParameter(CommonParameters.WORLD, world);
|
||||
builder.withParameter(CommonParameters.LOCATION, vec3d);
|
||||
// TODO Vanilla State Parameter
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
if (event.getDamageSource().getCausingEntity() instanceof Player player) {
|
||||
BukkitServerPlayer serverPlayer = this.plugin.adapt(player);
|
||||
builder.withParameter(LootParameters.PLAYER, serverPlayer);
|
||||
builder.withOptionalParameter(LootParameters.TOOL, serverPlayer.getItemInHand(InteractionHand.MAIN_HAND));
|
||||
builder.withParameter(CommonParameters.PLAYER, serverPlayer);
|
||||
builder.withOptionalParameter(CommonParameters.TOOL, serverPlayer.getItemInHand(InteractionHand.MAIN_HAND));
|
||||
}
|
||||
}
|
||||
ContextHolder contextHolder = builder.build();
|
||||
|
||||
@@ -427,8 +427,8 @@ public class BukkitServerPlayer extends Player {
|
||||
} else {
|
||||
if (VersionHelper.isOrAbove1_20_5()) {
|
||||
Object attributeModifier = VersionHelper.isOrAbove1_21() ?
|
||||
Reflections.constructor$AttributeModifier.newInstance(KeyUtils.toResourceLocation("craftengine", "custom_hardness"), -9999d, Reflections.instance$AttributeModifier$Operation$ADD_VALUE) :
|
||||
Reflections.constructor$AttributeModifier.newInstance(UUID.randomUUID(), "craftengine:custom_hardness", -9999d, Reflections.instance$AttributeModifier$Operation$ADD_VALUE);
|
||||
Reflections.constructor$AttributeModifier.newInstance(KeyUtils.toResourceLocation(Key.DEFAULT_NAMESPACE, "custom_hardness"), -9999d, Reflections.instance$AttributeModifier$Operation$ADD_VALUE) :
|
||||
Reflections.constructor$AttributeModifier.newInstance(UUID.randomUUID(), Key.DEFAULT_NAMESPACE + ":custom_hardness", -9999d, Reflections.instance$AttributeModifier$Operation$ADD_VALUE);
|
||||
Object attributeSnapshot = Reflections.constructor$ClientboundUpdateAttributesPacket$AttributeSnapshot.newInstance(Reflections.instance$Holder$Attribute$block_break_speed, 1d, Lists.newArrayList(attributeModifier));
|
||||
Object newPacket = Reflections.constructor$ClientboundUpdateAttributesPacket1.newInstance(entityID(), Lists.newArrayList(attributeSnapshot));
|
||||
sendPacket(newPacket, true);
|
||||
|
||||
@@ -4,9 +4,9 @@ import it.unimi.dsi.fastutil.objects.Reference2ObjectArrayMap;
|
||||
import net.momirealms.craftengine.core.block.properties.Property;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootTable;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.registry.Holder;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.world.World;
|
||||
import net.momirealms.craftengine.shared.block.BlockBehavior;
|
||||
import net.momirealms.sparrow.nbt.CompoundTag;
|
||||
@@ -144,6 +144,6 @@ public class ImmutableBlockState extends BlockStateHolder {
|
||||
if (block == null) return List.of();
|
||||
LootTable<Object> lootTable = (LootTable<Object>) block.lootTable();
|
||||
if (lootTable == null) return List.of();
|
||||
return lootTable.getRandomItems(builder.withParameter(LootParameters.BLOCK_STATE, this).build(), world);
|
||||
return lootTable.getRandomItems(builder.withParameter(CommonParameters.BLOCK_STATE, this).build(), world);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ public class BlockBehaviors {
|
||||
public static BlockBehavior fromMap(CustomBlock block, @Nullable Map<String, Object> map) {
|
||||
if (map == null || map.isEmpty()) return EmptyBlockBehavior.INSTANCE;
|
||||
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.block.behavior.missing_type");
|
||||
Key key = Key.withDefaultNamespace(type, "craftengine");
|
||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||
BlockBehaviorFactory factory = BuiltInRegistries.BLOCK_BEHAVIOR_FACTORY.getValue(key);
|
||||
if (factory == null) {
|
||||
throw new LocalizedResourceConfigException("warning.config.block.behavior.invalid_type", type.toString());
|
||||
|
||||
@@ -33,7 +33,7 @@ public class Properties {
|
||||
|
||||
public static Property<?> fromMap(String name, Map<String, Object> map) {
|
||||
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.block.state.property.missing_type");
|
||||
Key key = Key.withDefaultNamespace(type, "craftengine");
|
||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||
PropertyFactory factory = BuiltInRegistries.PROPERTY_FACTORY.getValue(key);
|
||||
if (factory == null) {
|
||||
throw new LocalizedResourceConfigException("warning.config.block.state.property.invalid_type", key.toString(), name);
|
||||
|
||||
@@ -7,11 +7,11 @@ import net.momirealms.craftengine.core.pack.Pack;
|
||||
import net.momirealms.craftengine.core.pack.ResourceLocation;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
import net.momirealms.craftengine.core.plugin.config.ConfigSectionParser;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext;
|
||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||
import net.momirealms.craftengine.core.plugin.locale.TranslationManager;
|
||||
import net.momirealms.craftengine.core.util.*;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.util.context.PlayerOptionalContext;
|
||||
import org.ahocorasick.trie.Token;
|
||||
import org.ahocorasick.trie.Trie;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.momirealms.craftengine.core.font;
|
||||
|
||||
import net.momirealms.craftengine.core.util.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextKey;
|
||||
|
||||
public final class EmojiParameters {
|
||||
private EmojiParameters() {}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package net.momirealms.craftengine.core.item;
|
||||
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
|
||||
public interface BuildableItem<I> {
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package net.momirealms.craftengine.core.item;
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
|
||||
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package net.momirealms.craftengine.core.item;
|
||||
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.util.context.PlayerOptionalContext;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.nio.file.Path;
|
||||
import java.util.Map;
|
||||
|
||||
public class ItemBehaviors {
|
||||
public static final Key EMPTY = Key.from("craftengine:empty");
|
||||
public static final Key EMPTY = Key.withDefaultNamespace("empty", Key.DEFAULT_NAMESPACE);
|
||||
|
||||
public static void register(Key key, ItemBehaviorFactory factory) {
|
||||
Holder.Reference<ItemBehaviorFactory> holder = ((WritableRegistry<ItemBehaviorFactory>) BuiltInRegistries.ITEM_BEHAVIOR_FACTORY)
|
||||
@@ -25,7 +25,7 @@ public class ItemBehaviors {
|
||||
public static ItemBehavior fromMap(Pack pack, Path path, Key id, Map<String, Object> map) {
|
||||
if (map == null || map.isEmpty()) return EmptyItemBehavior.INSTANCE;
|
||||
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.item.behavior.missing_type");
|
||||
Key key = Key.withDefaultNamespace(type, "craftengine");
|
||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||
ItemBehaviorFactory factory = BuiltInRegistries.ITEM_BEHAVIOR_FACTORY.getValue(key);
|
||||
if (factory == null) {
|
||||
throw new LocalizedResourceConfigException("warning.config.item.behavior.invalid_type", type.toString());
|
||||
|
||||
@@ -184,7 +184,7 @@ public class CustomSmithingTransformRecipe<T> implements Recipe<T> {
|
||||
if (type == null) {
|
||||
throw new LocalizedResourceConfigException("warning.config.recipe.smithing_transform.post_processor.missing_type");
|
||||
}
|
||||
Key key = Key.withDefaultNamespace(type, "craftengine");
|
||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||
ItemDataProcessor.Factory factory = BuiltInRegistries.SMITHING_RESULT_PROCESSOR_FACTORY.getValue(key);
|
||||
if (factory == null) {
|
||||
throw new LocalizedResourceConfigException("warning.config.recipe.smithing_transform.post_processor.invalid_type", type);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package net.momirealms.craftengine.core.loot;
|
||||
|
||||
import net.momirealms.craftengine.core.util.context.AbstractCommonContext;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.AbstractCommonContext;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.world.World;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
@@ -2,13 +2,13 @@ package net.momirealms.craftengine.core.loot;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootCondition;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootConditions;
|
||||
import net.momirealms.craftengine.core.loot.entry.LootEntry;
|
||||
import net.momirealms.craftengine.core.loot.entry.LootEntryContainer;
|
||||
import net.momirealms.craftengine.core.loot.function.LootFunction;
|
||||
import net.momirealms.craftengine.core.loot.function.LootFunctions;
|
||||
import net.momirealms.craftengine.core.loot.number.NumberProvider;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.number.NumberProvider;
|
||||
import net.momirealms.craftengine.core.util.MCUtils;
|
||||
import net.momirealms.craftengine.core.util.MutableInt;
|
||||
|
||||
@@ -20,14 +20,14 @@ import java.util.function.Predicate;
|
||||
|
||||
public class LootPool<T> {
|
||||
private final List<LootEntryContainer<T>> entryContainers;
|
||||
private final List<LootCondition> conditions;
|
||||
private final List<Condition<LootContext>> conditions;
|
||||
private final Predicate<LootContext> compositeCondition;
|
||||
private final List<LootFunction<T>> functions;
|
||||
private final BiFunction<Item<T>, LootContext, Item<T>> compositeFunction;
|
||||
private final NumberProvider rolls;
|
||||
private final NumberProvider bonusRolls;
|
||||
|
||||
public LootPool(List<LootEntryContainer<T>> entryContainers, List<LootCondition> conditions, List<LootFunction<T>> functions, NumberProvider rolls, NumberProvider bonusRolls) {
|
||||
public LootPool(List<LootEntryContainer<T>> entryContainers, List<Condition<LootContext>> conditions, List<LootFunction<T>> functions, NumberProvider rolls, NumberProvider bonusRolls) {
|
||||
this.entryContainers = entryContainers;
|
||||
this.conditions = conditions;
|
||||
this.functions = functions;
|
||||
@@ -38,7 +38,7 @@ public class LootPool<T> {
|
||||
}
|
||||
|
||||
public void addRandomItems(Consumer<Item<T>> lootConsumer, LootContext context) {
|
||||
for (LootCondition condition : this.conditions) {
|
||||
for (Condition<LootContext> condition : this.conditions) {
|
||||
if (!condition.test(context)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2,18 +2,18 @@ package net.momirealms.craftengine.core.loot;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootCondition;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootConditions;
|
||||
import net.momirealms.craftengine.core.loot.entry.LootEntryContainer;
|
||||
import net.momirealms.craftengine.core.loot.entry.LootEntryContainers;
|
||||
import net.momirealms.craftengine.core.loot.function.LootFunction;
|
||||
import net.momirealms.craftengine.core.loot.function.LootFunctions;
|
||||
import net.momirealms.craftengine.core.loot.number.NumberProvider;
|
||||
import net.momirealms.craftengine.core.loot.number.NumberProviders;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.number.NumberProvider;
|
||||
import net.momirealms.craftengine.core.plugin.context.number.NumberProviders;
|
||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.world.World;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -52,7 +52,7 @@ public class LootTable<T> {
|
||||
Map<String, Object> pool = MiscUtils.castToMap(rawPoolMap, false);
|
||||
NumberProvider rolls = NumberProviders.fromObject(pool.getOrDefault("rolls", 1));
|
||||
NumberProvider bonus_rolls = NumberProviders.fromObject(pool.getOrDefault("bonus_rolls", 0));
|
||||
List<LootCondition> conditions = Optional.ofNullable(pool.get("conditions"))
|
||||
List<Condition<LootContext>> conditions = Optional.ofNullable(pool.get("conditions"))
|
||||
.map(it -> LootConditions.fromMapList(castToMapListOrThrow(it,
|
||||
() -> new LocalizedResourceConfigException("warning.config.loot_table.invalid_conditions_type", it.getClass().getSimpleName()))))
|
||||
.orElse(Lists.newArrayList());
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
package net.momirealms.craftengine.core.loot.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public interface LootCondition extends Predicate<LootContext> {
|
||||
|
||||
Key type();
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
package net.momirealms.craftengine.core.loot.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class LootConditionAllOf implements LootCondition {
|
||||
public static final Factory FACTORY = new Factory();
|
||||
private final List<LootCondition> conditions;
|
||||
|
||||
public LootConditionAllOf(List<LootCondition> conditions) {
|
||||
this.conditions = conditions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return LootConditions.ALL_OF;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(LootContext lootContext) {
|
||||
for (LootCondition condition : conditions) {
|
||||
if (!condition.test(lootContext)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static class Factory implements LootConditionFactory {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public LootCondition create(Map<String, Object> arguments) {
|
||||
List<Map<String, Object>> terms = (List<Map<String, Object>>) arguments.get("terms");
|
||||
return new LootConditionAllOf(LootConditions.fromMapList(terms));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
package net.momirealms.craftengine.core.loot.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class LootConditionAnyOf implements LootCondition {
|
||||
public static final Factory FACTORY = new Factory();
|
||||
private final List<LootCondition> conditions;
|
||||
|
||||
public LootConditionAnyOf(List<LootCondition> conditions) {
|
||||
this.conditions = conditions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return LootConditions.ANY_OF;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(LootContext lootContext) {
|
||||
for (LootCondition condition : conditions) {
|
||||
if (condition.test(lootContext)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static class Factory implements LootConditionFactory {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public LootCondition create(Map<String, Object> arguments) {
|
||||
List<Map<String, Object>> terms = (List<Map<String, Object>>) arguments.get("terms");
|
||||
return new LootConditionAnyOf(LootConditions.fromMapList(terms));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
package net.momirealms.craftengine.core.loot.condition;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface LootConditionFactory {
|
||||
|
||||
LootCondition create(Map<String, Object> arguments);
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
package net.momirealms.craftengine.core.loot.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class LootConditionFalling implements LootCondition {
|
||||
public static final Factory FACTORY = new Factory();
|
||||
public static final LootConditionFalling INSTANCE = new LootConditionFalling();
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return LootConditions.FALLING_BLOCK;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(LootContext lootContext) {
|
||||
return lootContext.getOptionalParameter(LootParameters.FALLING_BLOCK).orElse(false);
|
||||
}
|
||||
|
||||
public static class Factory implements LootConditionFactory {
|
||||
@Override
|
||||
public LootCondition create(Map<String, Object> arguments) {
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
package net.momirealms.craftengine.core.loot.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class LootConditionInverted implements LootCondition {
|
||||
public static final Factory FACTORY = new Factory();
|
||||
private final LootCondition condition;
|
||||
|
||||
public LootConditionInverted(LootCondition condition) {
|
||||
this.condition = condition;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return LootConditions.INVERTED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(LootContext lootContext) {
|
||||
return !condition.test(lootContext);
|
||||
}
|
||||
|
||||
public static class Factory implements LootConditionFactory {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public LootCondition create(Map<String, Object> arguments) {
|
||||
Map<String, Object> term = (Map<String, Object>) arguments.get("term");
|
||||
return new LootConditionInverted(LootConditions.fromMap(term));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package net.momirealms.craftengine.core.loot.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.RandomUtils;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class LootConditionRandom implements LootCondition {
|
||||
public static final Factory FACTORY = new Factory();
|
||||
private final float chance;
|
||||
|
||||
public LootConditionRandom(float chance) {
|
||||
this.chance = chance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return LootConditions.RANDOM;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(LootContext lootContext) {
|
||||
return RandomUtils.generateRandomFloat(0, 1) < this.chance;
|
||||
}
|
||||
|
||||
public static class Factory implements LootConditionFactory {
|
||||
@Override
|
||||
public LootCondition create(Map<String, Object> arguments) {
|
||||
float chance = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("value", 0.5f), "value");
|
||||
return new LootConditionRandom(chance);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package net.momirealms.craftengine.core.loot.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
public class LootConditionSurvivesExplosion implements LootCondition {
|
||||
public static final Factory FACTORY = new Factory();
|
||||
private static final LootConditionSurvivesExplosion INSTANCE = new LootConditionSurvivesExplosion();
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return LootConditions.SURVIVES_EXPLOSION;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(LootContext lootContext) {
|
||||
Optional<Float> radius = lootContext.getOptionalParameter(LootParameters.EXPLOSION_RADIUS);
|
||||
if (radius.isPresent()) {
|
||||
float f = 1f / radius.get();
|
||||
return lootContext.randomSource().nextFloat() < f;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static class Factory implements LootConditionFactory {
|
||||
@Override
|
||||
public LootCondition create(Map<String, Object> arguments) {
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,16 @@
|
||||
package net.momirealms.craftengine.core.loot.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.condition.*;
|
||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||
import net.momirealms.craftengine.core.registry.BuiltInRegistries;
|
||||
import net.momirealms.craftengine.core.registry.Holder;
|
||||
import net.momirealms.craftengine.core.registry.Registries;
|
||||
import net.momirealms.craftengine.core.registry.WritableRegistry;
|
||||
import net.momirealms.craftengine.core.util.Factory;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
import net.momirealms.craftengine.core.util.ResourceKey;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -14,32 +19,22 @@ import java.util.Map;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class LootConditions {
|
||||
public static final Key MATCH_ITEM = Key.from("craftengine:match_item");
|
||||
public static final Key MATCH_BLOCK_PROPERTY = Key.from("craftengine:match_block_property");
|
||||
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");
|
||||
public static final Key ANY_OF = Key.from("craftengine:any_of");
|
||||
public static final Key ALL_OF = Key.from("craftengine:all_of");
|
||||
public static final Key ENCHANTMENT = Key.from("craftengine:enchantment");
|
||||
public static final Key INVERTED = Key.from("craftengine:inverted");
|
||||
public static final Key FALLING_BLOCK = Key.from("craftengine:falling_block");
|
||||
|
||||
static {
|
||||
register(MATCH_ITEM, LootConditionMatchItem.FACTORY);
|
||||
register(MATCH_BLOCK_PROPERTY, LootConditionMatchBlockProperty.FACTORY);
|
||||
register(TABLE_BONUS, LootConditionTableBonus.FACTORY);
|
||||
register(SURVIVES_EXPLOSION, LootConditionSurvivesExplosion.FACTORY);
|
||||
register(ANY_OF, LootConditionAnyOf.FACTORY);
|
||||
register(ALL_OF, LootConditionAllOf.FACTORY);
|
||||
register(ENCHANTMENT, LootConditionEnchantment.FACTORY);
|
||||
register(INVERTED, LootConditionInverted.FACTORY);
|
||||
register(FALLING_BLOCK, LootConditionFalling.FACTORY);
|
||||
register(RANDOM, LootConditionRandom.FACTORY);
|
||||
register(SharedConditions.MATCH_ITEM, new MatchItemCondition.FactoryImpl<>());
|
||||
register(SharedConditions.MATCH_BLOCK_PROPERTY, new MatchBlockPropertyCondition.FactoryImpl<>());
|
||||
register(SharedConditions.TABLE_BONUS, new TableBonusCondition.FactoryImpl<>());
|
||||
register(SharedConditions.SURVIVES_EXPLOSION, new SurvivesExplosionCondition.FactoryImpl<>());
|
||||
register(SharedConditions.ANY_OF, new AnyOfCondition.FactoryImpl<>(LootConditions::fromMap));
|
||||
register(SharedConditions.ALL_OF, new AllOfCondition.FactoryImpl<>(LootConditions::fromMap));
|
||||
register(SharedConditions.ENCHANTMENT, new EnchantmentCondition.FactoryImpl<>());
|
||||
register(SharedConditions.INVERTED, new InvertedCondition.FactoryImpl<>(LootConditions::fromMap));
|
||||
register(SharedConditions.FALLING_BLOCK, new FallingBlockCondition.FactoryImpl<>());
|
||||
register(SharedConditions.RANDOM, new RandomCondition.FactoryImpl<>());
|
||||
}
|
||||
|
||||
public static void register(Key key, LootConditionFactory factory) {
|
||||
Holder.Reference<LootConditionFactory> holder = ((WritableRegistry<LootConditionFactory>) BuiltInRegistries.LOOT_CONDITION_FACTORY)
|
||||
public static void register(Key key, Factory<Condition<LootContext>> factory) {
|
||||
Holder.Reference<Factory<Condition<LootContext>>> holder = ((WritableRegistry<Factory<Condition<LootContext>>>) BuiltInRegistries.LOOT_CONDITION_FACTORY)
|
||||
.registerForHolder(new ResourceKey<>(Registries.LOOT_CONDITION_FACTORY.location(), key));
|
||||
holder.bindValue(factory);
|
||||
}
|
||||
@@ -78,22 +73,19 @@ public class LootConditions {
|
||||
};
|
||||
}
|
||||
|
||||
public static List<LootCondition> fromMapList(List<Map<String, Object>> mapList) {
|
||||
public static List<Condition<LootContext>> fromMapList(List<Map<String, Object>> mapList) {
|
||||
if (mapList == null || mapList.isEmpty()) return List.of();
|
||||
List<LootCondition> functions = new ArrayList<>();
|
||||
List<Condition<LootContext>> functions = new ArrayList<>();
|
||||
for (Map<String, Object> map : mapList) {
|
||||
functions.add(fromMap(map));
|
||||
}
|
||||
return functions;
|
||||
}
|
||||
|
||||
public static LootCondition fromMap(Map<String, Object> map) {
|
||||
String type = (String) map.get("type");
|
||||
if (type == null) {
|
||||
throw new LocalizedResourceConfigException("warning.config.loot_table.condition.missing_type");
|
||||
}
|
||||
Key key = Key.withDefaultNamespace(type, "craftengine");
|
||||
LootConditionFactory factory = BuiltInRegistries.LOOT_CONDITION_FACTORY.getValue(key);
|
||||
public static Condition<LootContext> fromMap(Map<String, Object> map) {
|
||||
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.loot_table.condition.missing_type");
|
||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||
Factory<Condition<LootContext>> factory = BuiltInRegistries.LOOT_CONDITION_FACTORY.getValue(key);
|
||||
if (factory == null) {
|
||||
throw new LocalizedResourceConfigException("warning.config.loot_table.condition.invalid_type", type);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package net.momirealms.craftengine.core.loot.entry;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootCondition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
@@ -10,7 +10,7 @@ public abstract class AbstractCompositeLootEntryContainer<T> extends AbstractLoo
|
||||
protected final List<LootEntryContainer<T>> children;
|
||||
private final LootEntryContainer<T> composedChildren;
|
||||
|
||||
protected AbstractCompositeLootEntryContainer(List<LootCondition> conditions, List<LootEntryContainer<T>> children) {
|
||||
protected AbstractCompositeLootEntryContainer(List<Condition<LootContext>> conditions, List<LootEntryContainer<T>> children) {
|
||||
super(conditions);
|
||||
this.children = children;
|
||||
this.composedChildren = compose(children);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package net.momirealms.craftengine.core.loot.entry;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootCondition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.MCUtils;
|
||||
|
||||
@@ -9,10 +9,10 @@ import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public abstract class AbstractLootEntryContainer<T> implements LootEntryContainer<T>, Predicate<LootContext> {
|
||||
protected final List<LootCondition> conditions;
|
||||
protected final List<Condition<LootContext>> conditions;
|
||||
private final Predicate<LootContext> compositeCondition;
|
||||
|
||||
protected AbstractLootEntryContainer(List<LootCondition> conditions) {
|
||||
protected AbstractLootEntryContainer(List<Condition<LootContext>> conditions) {
|
||||
this.conditions = conditions;
|
||||
this.compositeCondition = MCUtils.allOf(conditions);
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@ package net.momirealms.craftengine.core.loot.entry;
|
||||
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootCondition;
|
||||
import net.momirealms.craftengine.core.loot.function.LootFunction;
|
||||
import net.momirealms.craftengine.core.loot.function.LootFunctions;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.BiFunction;
|
||||
@@ -24,7 +24,7 @@ public abstract class AbstractSingleLootEntryContainer<T> extends AbstractLootEn
|
||||
}
|
||||
};
|
||||
|
||||
protected AbstractSingleLootEntryContainer(List<LootCondition> conditions, List<LootFunction<T>> functions, int weight, int quality) {
|
||||
protected AbstractSingleLootEntryContainer(List<Condition<LootContext>> conditions, List<LootFunction<T>> functions, int weight, int quality) {
|
||||
super(conditions);
|
||||
this.weight = weight;
|
||||
this.quality = quality;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package net.momirealms.craftengine.core.loot.entry;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.condition.LootCondition;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootConditions;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.*;
|
||||
@@ -9,7 +10,7 @@ import java.util.*;
|
||||
public class AlternativesLootEntryContainer<T> extends AbstractCompositeLootEntryContainer<T> {
|
||||
public static final Factory<?> FACTORY = new Factory<>();
|
||||
|
||||
protected AlternativesLootEntryContainer(List<LootCondition> conditions, List<LootEntryContainer<T>> children) {
|
||||
protected AlternativesLootEntryContainer(List<Condition<LootContext>> conditions, List<LootEntryContainer<T>> children) {
|
||||
super(conditions, children);
|
||||
}
|
||||
|
||||
@@ -42,7 +43,7 @@ public class AlternativesLootEntryContainer<T> extends AbstractCompositeLootEntr
|
||||
List<LootEntryContainer<A>> containers = Optional.ofNullable(arguments.get("children"))
|
||||
.map(it -> (List<LootEntryContainer<A>>) new ArrayList<LootEntryContainer<A>>(LootEntryContainers.fromMapList((List<Map<String, Object>>) it)))
|
||||
.orElse(Collections.emptyList());
|
||||
List<LootCondition> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
List<Condition<LootContext>> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
.map(it -> LootConditions.fromMapList((List<Map<String, Object>>) it))
|
||||
.orElse(Collections.emptyList());
|
||||
return new AlternativesLootEntryContainer<>(conditions, containers);
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package net.momirealms.craftengine.core.loot.entry;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootCondition;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootConditions;
|
||||
import net.momirealms.craftengine.core.loot.number.NumberProvider;
|
||||
import net.momirealms.craftengine.core.loot.number.NumberProviders;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
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.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
|
||||
@@ -19,7 +19,7 @@ public class ExpLootEntryContainer<T> extends AbstractLootEntryContainer<T> {
|
||||
public static final Factory<?> FACTORY = new Factory<>();
|
||||
private final NumberProvider value;
|
||||
|
||||
protected ExpLootEntryContainer(NumberProvider value, List<LootCondition> conditions) {
|
||||
protected ExpLootEntryContainer(NumberProvider value, List<Condition<LootContext>> conditions) {
|
||||
super(conditions);
|
||||
this.value = value;
|
||||
}
|
||||
@@ -32,8 +32,8 @@ public class ExpLootEntryContainer<T> extends AbstractLootEntryContainer<T> {
|
||||
@Override
|
||||
public boolean expand(LootContext context, Consumer<LootEntry<T>> choiceConsumer) {
|
||||
if (super.test(context)) {
|
||||
context.getOptionalParameter(LootParameters.WORLD)
|
||||
.ifPresent(it -> context.getOptionalParameter(LootParameters.LOCATION).ifPresent(loc -> it.dropExp(loc.toCenter(), value.getInt(context))));
|
||||
context.getOptionalParameter(CommonParameters.WORLD)
|
||||
.ifPresent(it -> context.getOptionalParameter(CommonParameters.LOCATION).ifPresent(loc -> it.dropExp(loc.toCenter(), value.getInt(context))));
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
@@ -45,7 +45,7 @@ public class ExpLootEntryContainer<T> extends AbstractLootEntryContainer<T> {
|
||||
@Override
|
||||
public LootEntryContainer<A> create(Map<String, Object> arguments) {
|
||||
Object value = ResourceConfigUtils.requireNonNullOrThrow(arguments.get("count"), "warning.config.loot_table.entry.exp.missing_count");
|
||||
List<LootCondition> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
List<Condition<LootContext>> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
.map(it -> LootConditions.fromMapList((List<Map<String, Object>>) it))
|
||||
.orElse(Collections.emptyList());
|
||||
return new ExpLootEntryContainer<>(NumberProviders.fromObject(value), conditions);
|
||||
|
||||
@@ -42,7 +42,7 @@ public class LootEntryContainers {
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> LootEntryContainer<T> fromMap(Map<String, Object> map) {
|
||||
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.loot_table.entry.missing_type");
|
||||
Key key = Key.withDefaultNamespace(type, "craftengine");
|
||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||
LootEntryContainerFactory<T> factory = (LootEntryContainerFactory<T>) BuiltInRegistries.LOOT_ENTRY_CONTAINER_FACTORY.getValue(key);
|
||||
if (factory == null) {
|
||||
throw new LocalizedResourceConfigException("warning.config.loot_table.entry.invalid_type", type);
|
||||
|
||||
@@ -2,12 +2,12 @@ package net.momirealms.craftengine.core.loot.entry;
|
||||
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootCondition;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootConditions;
|
||||
import net.momirealms.craftengine.core.loot.function.LootFunction;
|
||||
import net.momirealms.craftengine.core.loot.function.LootFunctions;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
|
||||
@@ -18,7 +18,7 @@ public class SingleItemLootEntryContainer<T> extends AbstractSingleLootEntryCont
|
||||
public static final Factory<?> FACTORY = new Factory<>();
|
||||
private final Key item;
|
||||
|
||||
protected SingleItemLootEntryContainer(Key item, List<LootCondition> conditions, List<LootFunction<T>> lootFunctions, int weight, int quality) {
|
||||
protected SingleItemLootEntryContainer(Key item, List<Condition<LootContext>> conditions, List<LootFunction<T>> lootFunctions, int weight, int quality) {
|
||||
super(conditions, lootFunctions, weight, quality);
|
||||
this.item = item;
|
||||
}
|
||||
@@ -31,7 +31,7 @@ public class SingleItemLootEntryContainer<T> extends AbstractSingleLootEntryCont
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
protected void createItem(Consumer<Item<T>> lootConsumer, LootContext context) {
|
||||
Item<T> tItem = (Item<T>) CraftEngine.instance().itemManager().createWrappedItem(this.item, context.getOptionalParameter(LootParameters.PLAYER).orElse(null));
|
||||
Item<T> tItem = (Item<T>) CraftEngine.instance().itemManager().createWrappedItem(this.item, context.getOptionalParameter(CommonParameters.PLAYER).orElse(null));
|
||||
if (tItem != null) {
|
||||
lootConsumer.accept(tItem);
|
||||
} else {
|
||||
@@ -47,7 +47,7 @@ public class SingleItemLootEntryContainer<T> extends AbstractSingleLootEntryCont
|
||||
Key item = Key.from(itemObj);
|
||||
int weight = ResourceConfigUtils.getAsInt(arguments.getOrDefault("weight", 1), "weight");
|
||||
int quality = ResourceConfigUtils.getAsInt(arguments.getOrDefault("quality", 0), "quality");
|
||||
List<LootCondition> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
List<Condition<LootContext>> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
.map(it -> LootConditions.fromMapList((List<Map<String, Object>>) it))
|
||||
.orElse(Collections.emptyList());
|
||||
List<LootFunction<A>> functions = Optional.ofNullable(arguments.get("functions"))
|
||||
|
||||
@@ -2,17 +2,17 @@ package net.momirealms.craftengine.core.loot.function;
|
||||
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootCondition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.util.MCUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public abstract class AbstractLootConditionalFunction<T> implements LootFunction<T> {
|
||||
protected final List<LootCondition> predicates;
|
||||
protected final List<Condition<LootContext>> predicates;
|
||||
private final Predicate<LootContext> compositePredicates;
|
||||
|
||||
public AbstractLootConditionalFunction(List<LootCondition> predicates) {
|
||||
public AbstractLootConditionalFunction(List<Condition<LootContext>> predicates) {
|
||||
this.predicates = predicates;
|
||||
this.compositePredicates = MCUtils.allOf(predicates);
|
||||
}
|
||||
|
||||
@@ -3,9 +3,9 @@ package net.momirealms.craftengine.core.loot.function;
|
||||
import net.momirealms.craftengine.core.item.Enchantment;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootCondition;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootConditions;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||
import net.momirealms.craftengine.core.registry.BuiltInRegistries;
|
||||
import net.momirealms.craftengine.core.registry.Holder;
|
||||
@@ -24,7 +24,7 @@ public class LootFunctionApplyBonusCount<T> extends AbstractLootConditionalFunct
|
||||
private final Key enchantment;
|
||||
private final Formula formula;
|
||||
|
||||
public LootFunctionApplyBonusCount(List<LootCondition> predicates, Key enchantment, Formula formula) {
|
||||
public LootFunctionApplyBonusCount(List<Condition<LootContext>> predicates, Key enchantment, Formula formula) {
|
||||
super(predicates);
|
||||
this.enchantment = enchantment;
|
||||
this.formula = formula;
|
||||
@@ -32,7 +32,7 @@ public class LootFunctionApplyBonusCount<T> extends AbstractLootConditionalFunct
|
||||
|
||||
@Override
|
||||
protected Item<T> applyInternal(Item<T> item, LootContext context) {
|
||||
Optional<Item<?>> itemInHand = context.getOptionalParameter(LootParameters.TOOL);
|
||||
Optional<Item<?>> itemInHand = context.getOptionalParameter(CommonParameters.TOOL);
|
||||
int level = itemInHand.map(value -> value.getEnchantment(this.enchantment).map(Enchantment::level).orElse(0)).orElse(0);
|
||||
int newCount = this.formula.apply(item.count(), level);
|
||||
item.count(newCount);
|
||||
@@ -54,7 +54,7 @@ public class LootFunctionApplyBonusCount<T> extends AbstractLootConditionalFunct
|
||||
if (formulaMap == null) {
|
||||
throw new LocalizedResourceConfigException("warning.config.loot_table.function.apply_bonus.missing_formula");
|
||||
}
|
||||
List<LootCondition> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
List<Condition<LootContext>> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
.map(it -> LootConditions.fromMapList((List<Map<String, Object>>) it))
|
||||
.orElse(Collections.emptyList());
|
||||
return new LootFunctionApplyBonusCount<>(conditions, Key.from(enchantment), Formulas.fromMap(formulaMap));
|
||||
@@ -92,7 +92,7 @@ public class LootFunctionApplyBonusCount<T> extends AbstractLootConditionalFunct
|
||||
if (type == null) {
|
||||
throw new NullPointerException("number type cannot be null");
|
||||
}
|
||||
Key key = Key.withDefaultNamespace(type, "craftengine");
|
||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||
FormulaFactory factory = BuiltInRegistries.FORMULA_FACTORY.getValue(key);
|
||||
if (factory == null) {
|
||||
throw new IllegalArgumentException("Unknown formula type: " + type);
|
||||
|
||||
@@ -2,11 +2,11 @@ package net.momirealms.craftengine.core.loot.function;
|
||||
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootCondition;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootConditions;
|
||||
import net.momirealms.craftengine.core.loot.number.NumberProvider;
|
||||
import net.momirealms.craftengine.core.loot.number.NumberProviders;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
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.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
|
||||
@@ -19,15 +19,15 @@ public class LootFunctionDropExp<T> extends AbstractLootConditionalFunction<T> {
|
||||
public static final Factory<?> FACTORY = new Factory<>();
|
||||
private final NumberProvider value;
|
||||
|
||||
public LootFunctionDropExp(NumberProvider value, List<LootCondition> predicates) {
|
||||
public LootFunctionDropExp(NumberProvider value, List<Condition<LootContext>> predicates) {
|
||||
super(predicates);
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item<T> applyInternal(Item<T> item, LootContext context) {
|
||||
context.getOptionalParameter(LootParameters.WORLD)
|
||||
.ifPresent(it -> context.getOptionalParameter(LootParameters.LOCATION).ifPresent(loc -> it.dropExp(loc.toCenter(), value.getInt(context))));
|
||||
context.getOptionalParameter(CommonParameters.WORLD)
|
||||
.ifPresent(it -> context.getOptionalParameter(CommonParameters.LOCATION).ifPresent(loc -> it.dropExp(loc.toCenter(), value.getInt(context))));
|
||||
return item;
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ public class LootFunctionDropExp<T> extends AbstractLootConditionalFunction<T> {
|
||||
@Override
|
||||
public LootFunction<T> create(Map<String, Object> arguments) {
|
||||
Object value = ResourceConfigUtils.requireNonNullOrThrow(arguments.get("count"), "warning.config.loot_table.function.drop_exp.missing_count");
|
||||
List<LootCondition> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
List<Condition<LootContext>> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
.map(it -> LootConditions.fromMapList((List<Map<String, Object>>) it))
|
||||
.orElse(Collections.emptyList());
|
||||
return new LootFunctionDropExp<>(NumberProviders.fromObject(value), conditions);
|
||||
|
||||
@@ -2,9 +2,9 @@ package net.momirealms.craftengine.core.loot.function;
|
||||
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootCondition;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootConditions;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.*;
|
||||
@@ -12,13 +12,13 @@ import java.util.*;
|
||||
public class LootFunctionExplosionDecay<T> extends AbstractLootConditionalFunction<T> {
|
||||
public static final Factory<?> FACTORY = new Factory<>();
|
||||
|
||||
public LootFunctionExplosionDecay(List<LootCondition> predicates) {
|
||||
public LootFunctionExplosionDecay(List<Condition<LootContext>> predicates) {
|
||||
super(predicates);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item<T> applyInternal(Item<T> item, LootContext context) {
|
||||
Optional<Float> radius = context.getOptionalParameter(LootParameters.EXPLOSION_RADIUS);
|
||||
Optional<Float> radius = context.getOptionalParameter(CommonParameters.EXPLOSION_RADIUS);
|
||||
if (radius.isPresent()) {
|
||||
Random random = context.randomSource();
|
||||
float f = 1f / radius.get();
|
||||
@@ -43,7 +43,7 @@ public class LootFunctionExplosionDecay<T> extends AbstractLootConditionalFuncti
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public LootFunction<T> create(Map<String, Object> arguments) {
|
||||
List<LootCondition> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
List<Condition<LootContext>> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
.map(it -> LootConditions.fromMapList((List<Map<String, Object>>) it))
|
||||
.orElse(Collections.emptyList());
|
||||
return new LootFunctionExplosionDecay<>(conditions);
|
||||
|
||||
@@ -2,10 +2,10 @@ package net.momirealms.craftengine.core.loot.function;
|
||||
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootCondition;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootConditions;
|
||||
import net.momirealms.craftengine.core.loot.number.NumberProvider;
|
||||
import net.momirealms.craftengine.core.loot.number.NumberProviders;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.number.NumberProvider;
|
||||
import net.momirealms.craftengine.core.plugin.context.number.NumberProviders;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
|
||||
@@ -20,7 +20,7 @@ public class LootFunctionSetCount<T> extends AbstractLootConditionalFunction<T>
|
||||
private final NumberProvider value;
|
||||
private final boolean add;
|
||||
|
||||
public LootFunctionSetCount(List<LootCondition> conditions, NumberProvider value, boolean add) {
|
||||
public LootFunctionSetCount(List<Condition<LootContext>> conditions, NumberProvider value, boolean add) {
|
||||
super(conditions);
|
||||
this.value = value;
|
||||
this.add = add;
|
||||
@@ -44,7 +44,7 @@ public class LootFunctionSetCount<T> extends AbstractLootConditionalFunction<T>
|
||||
public LootFunction<A> create(Map<String, Object> arguments) {
|
||||
Object value = ResourceConfigUtils.requireNonNullOrThrow(arguments.get("count"), "warning.config.loot_table.function.set_count.missing_count");
|
||||
boolean add = (boolean) arguments.getOrDefault("add", false);
|
||||
List<LootCondition> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
List<Condition<LootContext>> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
.map(it -> LootConditions.fromMapList((List<Map<String, Object>>) it))
|
||||
.orElse(Collections.emptyList());
|
||||
return new LootFunctionSetCount<>(conditions, NumberProviders.fromObject(value), add);
|
||||
|
||||
@@ -70,7 +70,7 @@ public class LootFunctions {
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> LootFunction<T> fromMap(Map<String, Object> map) {
|
||||
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.loot_table.function.missing_type");
|
||||
Key key = Key.withDefaultNamespace(type, "craftengine");
|
||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||
LootFunctionFactory<T> factory = (LootFunctionFactory<T>) BuiltInRegistries.LOOT_FUNCTION_FACTORY.getValue(key);
|
||||
if (factory == null) {
|
||||
throw new LocalizedResourceConfigException("warning.config.loot_table.function.invalid_type", type);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package net.momirealms.craftengine.core.pack.conflict;
|
||||
|
||||
import net.momirealms.craftengine.core.util.context.AbstractCommonContext;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.AbstractCommonContext;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package net.momirealms.craftengine.core.pack.conflict.matcher;
|
||||
|
||||
import net.momirealms.craftengine.core.pack.conflict.PathContext;
|
||||
import net.momirealms.craftengine.core.util.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
|
||||
public interface PathMatcher extends Condition<PathContext> {
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package net.momirealms.craftengine.core.pack.conflict.matcher;
|
||||
|
||||
import net.momirealms.craftengine.core.pack.conflict.PathContext;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.condition.AllOfCondition;
|
||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedException;
|
||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||
import net.momirealms.craftengine.core.util.condition.AllOfCondition;
|
||||
import net.momirealms.craftengine.core.util.context.Condition;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package net.momirealms.craftengine.core.pack.conflict.matcher;
|
||||
|
||||
import net.momirealms.craftengine.core.pack.conflict.PathContext;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.condition.AnyOfCondition;
|
||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedException;
|
||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||
import net.momirealms.craftengine.core.util.condition.AnyOfCondition;
|
||||
import net.momirealms.craftengine.core.util.context.Condition;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package net.momirealms.craftengine.core.pack.conflict.matcher;
|
||||
|
||||
import net.momirealms.craftengine.core.pack.conflict.PathContext;
|
||||
import net.momirealms.craftengine.core.plugin.context.condition.InvertedCondition;
|
||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedException;
|
||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
import net.momirealms.craftengine.core.util.condition.InvertedCondition;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ public class PathMatchers {
|
||||
|
||||
public static PathMatcher fromMap(Map<String, Object> map) {
|
||||
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), () -> new LocalizedException("warning.config.conflict_matcher.missing_type"));
|
||||
Key key = Key.withDefaultNamespace(type, "craftengine");
|
||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||
PathMatcherFactory factory = BuiltInRegistries.PATH_MATCHER_FACTORY.getValue(key);
|
||||
if (factory == null) {
|
||||
throw new LocalizedException("warning.config.conflict_matcher.invalid_type", type);
|
||||
|
||||
@@ -33,7 +33,7 @@ public class Resolutions {
|
||||
|
||||
public static Resolution fromMap(Map<String, Object> map) {
|
||||
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), () -> new LocalizedException("warning.config.conflict_resolution.missing_type"));
|
||||
Key key = Key.withDefaultNamespace(type, "craftengine");
|
||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||
ResolutionFactory factory = BuiltInRegistries.RESOLUTION_FACTORY.getValue(key);
|
||||
if (factory == null) {
|
||||
throw new LocalizedException("warning.config.conflict_resolution.invalid_type", type);
|
||||
|
||||
@@ -45,7 +45,7 @@ public class ResourcePackHosts {
|
||||
if (type == null) {
|
||||
throw new LocalizedException("warning.config.host.missing_type");
|
||||
}
|
||||
Key key = Key.withDefaultNamespace(type, "craftengine");
|
||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||
ResourcePackHostFactory factory = BuiltInRegistries.RESOURCE_PACK_HOST_FACTORY.getValue(key);
|
||||
if (factory == null) {
|
||||
throw new LocalizedException("warning.config.host.invalid_type", type);
|
||||
|
||||
@@ -42,7 +42,6 @@ import java.util.function.Supplier;
|
||||
|
||||
public abstract class CraftEngine implements Plugin {
|
||||
public static final String MOD_CLASS = "net.momirealms.craftengine.mod.CraftEnginePlugin";
|
||||
public static final String NAMESPACE = "craftengine";
|
||||
private static CraftEngine instance;
|
||||
protected PluginLogger logger;
|
||||
protected Consumer<Supplier<String>> debugger = (s) -> {};
|
||||
|
||||
@@ -36,7 +36,7 @@ public class TemplateArguments {
|
||||
if (type == null) {
|
||||
return MapTemplateArgument.FACTORY.create(map);
|
||||
} else {
|
||||
Key key = Key.withDefaultNamespace(type, "craftengine");
|
||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||
TemplateArgumentFactory factory = BuiltInRegistries.TEMPLATE_ARGUMENT_FACTORY.getValue(key);
|
||||
if (factory == null) {
|
||||
throw new IllegalArgumentException("Unknown argument type: " + type);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.momirealms.craftengine.core.util.context;
|
||||
package net.momirealms.craftengine.core.plugin.context;
|
||||
|
||||
import net.momirealms.craftengine.core.util.context.parameter.CommonParameterProvider;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameterProvider;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
@@ -1,12 +1,15 @@
|
||||
package net.momirealms.craftengine.core.util.context;
|
||||
package net.momirealms.craftengine.core.plugin.context;
|
||||
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
import net.momirealms.craftengine.core.plugin.text.minimessage.*;
|
||||
import net.momirealms.craftengine.core.plugin.text.minimessage.I18NTag;
|
||||
import net.momirealms.craftengine.core.plugin.text.minimessage.ImageTag;
|
||||
import net.momirealms.craftengine.core.plugin.text.minimessage.NamedArgumentTag;
|
||||
import net.momirealms.craftengine.core.plugin.text.minimessage.ShiftTag;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public abstract class AbstractCommonContext implements MiniMessageTagContext {
|
||||
public abstract class AbstractCommonContext implements Context {
|
||||
protected final ContextHolder contexts;
|
||||
protected TagResolver[] tagResolvers;
|
||||
|
||||
@@ -16,7 +19,7 @@ public abstract class AbstractCommonContext implements MiniMessageTagContext {
|
||||
|
||||
@Override
|
||||
public ContextHolder contexts() {
|
||||
return contexts;
|
||||
return this.contexts;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1,10 +1,10 @@
|
||||
package net.momirealms.craftengine.core.util.context;
|
||||
package net.momirealms.craftengine.core.plugin.context;
|
||||
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public interface Condition<CTX> extends Predicate<CTX> {
|
||||
public interface Condition<CTX extends Context> extends Predicate<CTX> {
|
||||
|
||||
@Override
|
||||
default boolean test(CTX ctx) {
|
||||
@@ -1,4 +1,6 @@
|
||||
package net.momirealms.craftengine.core.util.context;
|
||||
package net.momirealms.craftengine.core.plugin.context;
|
||||
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -6,6 +8,8 @@ public interface Context {
|
||||
|
||||
ContextHolder contexts();
|
||||
|
||||
TagResolver[] tagResolvers();
|
||||
|
||||
<T> Optional<T> getOptionalParameter(ContextKey<T> parameter);
|
||||
|
||||
<T> T getParameterOrThrow(ContextKey<T> parameter);
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.momirealms.craftengine.core.util.context;
|
||||
package net.momirealms.craftengine.core.plugin.context;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.momirealms.craftengine.core.util.context;
|
||||
package net.momirealms.craftengine.core.plugin.context;
|
||||
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.momirealms.craftengine.core.util.context;
|
||||
package net.momirealms.craftengine.core.plugin.context;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package net.momirealms.craftengine.core.util.context;
|
||||
package net.momirealms.craftengine.core.plugin.context;
|
||||
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
import net.momirealms.craftengine.core.util.context.parameter.BlockParameterProvider;
|
||||
import net.momirealms.craftengine.core.util.context.parameter.CommonParameterProvider;
|
||||
import net.momirealms.craftengine.core.util.context.parameter.PlayerParameterProvider;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.BlockParameterProvider;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameterProvider;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.PlayerParameterProvider;
|
||||
import net.momirealms.craftengine.core.world.BlockInWorld;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
package net.momirealms.craftengine.core.util.context;
|
||||
package net.momirealms.craftengine.core.plugin.context;
|
||||
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameterProvider;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.PlayerParameterProvider;
|
||||
import net.momirealms.craftengine.core.plugin.text.minimessage.*;
|
||||
import net.momirealms.craftengine.core.util.context.parameter.CommonParameterProvider;
|
||||
import net.momirealms.craftengine.core.util.context.parameter.PlayerParameterProvider;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PlayerOptionalContext extends AbstractAdditionalCommonContext implements MiniMessageTagContext {
|
||||
public class PlayerOptionalContext extends AbstractAdditionalCommonContext implements Context {
|
||||
public static final PlayerOptionalContext EMPTY = new PlayerOptionalContext(null, ContextHolder.EMPTY);
|
||||
private final Player player;
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.util.Factory;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class AllOfCondition<CTX extends Context> implements Condition<CTX> {
|
||||
protected final List<? extends Condition<CTX>> conditions;
|
||||
|
||||
public AllOfCondition(List<? extends Condition<CTX>> conditions) {
|
||||
this.conditions = conditions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(CTX ctx) {
|
||||
for (Condition<CTX> condition : conditions) {
|
||||
if (!condition.test(ctx)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return SharedConditions.ALL_OF;
|
||||
}
|
||||
|
||||
public static class FactoryImpl<CTX extends Context> implements Factory<Condition<CTX>> {
|
||||
private final Function<Map<String, Object>, Condition<CTX>> factory;
|
||||
|
||||
public FactoryImpl(Function<Map<String, Object>, Condition<CTX>> factory) {
|
||||
this.factory = factory;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public Condition<CTX> create(Map<String, Object> arguments) {
|
||||
List<Map<String, Object>> terms = (List<Map<String, Object>>) arguments.get("terms");
|
||||
List<Condition<CTX>> conditions = new ArrayList<>();
|
||||
for (Map<String, Object> term : terms) {
|
||||
conditions.add(factory.apply(term));
|
||||
}
|
||||
return new AllOfCondition<>(conditions);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.util.Factory;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class AnyOfCondition<CTX extends Context> implements Condition<CTX> {
|
||||
protected final List<? extends Condition<CTX>> conditions;
|
||||
|
||||
public AnyOfCondition(List<? extends Condition<CTX>> conditions) {
|
||||
this.conditions = conditions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(CTX ctx) {
|
||||
for (Condition<CTX> condition : conditions) {
|
||||
if (condition.test(ctx)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return SharedConditions.ANY_OF;
|
||||
}
|
||||
|
||||
public static class FactoryImpl<CTX extends Context> implements Factory<Condition<CTX>> {
|
||||
private final Function<Map<String, Object>, Condition<CTX>> factory;
|
||||
|
||||
public FactoryImpl(Function<Map<String, Object>, Condition<CTX>> factory) {
|
||||
this.factory = factory;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public Condition<CTX> create(Map<String, Object> arguments) {
|
||||
List<Map<String, Object>> terms = (List<Map<String, Object>>) arguments.get("terms");
|
||||
List<Condition<CTX>> conditions = new ArrayList<>();
|
||||
for (Map<String, Object> term : terms) {
|
||||
conditions.add(factory.apply(term));
|
||||
}
|
||||
return new AnyOfCondition<>(conditions);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.util.Factory;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class EmptyCondition<CTX extends Context> implements Condition<CTX> {
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return SharedConditions.EMPTY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(CTX ctx) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static class FactoryImpl<CTX extends Context> implements Factory<Condition<CTX>> {
|
||||
|
||||
@Override
|
||||
public Condition<CTX> create(Map<String, Object> arguments) {
|
||||
return new EmptyCondition<>();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,42 +1,44 @@
|
||||
package net.momirealms.craftengine.core.loot.condition;
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.item.Enchantment;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.Factory;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class LootConditionEnchantment implements LootCondition {
|
||||
public static final Factory FACTORY = new Factory();
|
||||
public class EnchantmentCondition<CTX extends Context> implements Condition<CTX> {
|
||||
private final Key id;
|
||||
private final Function<Integer, Boolean> expression;
|
||||
|
||||
public LootConditionEnchantment(Key id, Function<Integer, Boolean> expression) {
|
||||
this.id = id;
|
||||
public EnchantmentCondition(Key id, Function<Integer, Boolean> expression) {
|
||||
this.expression = expression;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return LootConditions.ENCHANTMENT;
|
||||
return SharedConditions.ENCHANTMENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(LootContext lootContext) {
|
||||
Optional<Item<?>> item = lootContext.getOptionalParameter(LootParameters.TOOL);
|
||||
public boolean test(CTX ctx) {
|
||||
Optional<Item<?>> item = ctx.getOptionalParameter(CommonParameters.TOOL);
|
||||
if (item.isEmpty()) return false;
|
||||
Optional<Enchantment> enchantment = item.get().getEnchantment(id);
|
||||
int level = enchantment.map(Enchantment::level).orElse(0);
|
||||
return this.expression.apply(level);
|
||||
}
|
||||
|
||||
public static class Factory implements LootConditionFactory {
|
||||
public static class FactoryImpl<CTX extends Context> implements Factory<Condition<CTX>> {
|
||||
|
||||
@Override
|
||||
public LootCondition create(Map<String, Object> arguments) {
|
||||
public Condition<CTX> create(Map<String, Object> arguments) {
|
||||
String predicate = (String) arguments.get("predicate");
|
||||
String[] split = predicate.split("(<=|>=|<|>|==|=)", 2);
|
||||
int level = Integer.parseInt(split[1]);
|
||||
@@ -50,7 +52,7 @@ public class LootConditionEnchantment implements LootCondition {
|
||||
case ">=" -> expression = (i -> i >= level);
|
||||
default -> throw new IllegalArgumentException("Unknown operator: " + operator);
|
||||
}
|
||||
return new LootConditionEnchantment(Key.of(split[0]), expression);
|
||||
return new EnchantmentCondition<>(Key.of(split[0]), expression);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.Factory;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class FallingBlockCondition<CTX extends Context> implements Condition<CTX> {
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return SharedConditions.FALLING_BLOCK;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(CTX ctx) {
|
||||
return ctx.getOptionalParameter(CommonParameters.FALLING_BLOCK).orElse(false);
|
||||
}
|
||||
|
||||
public static class FactoryImpl<CTX extends Context> implements Factory<Condition<CTX>> {
|
||||
|
||||
@Override
|
||||
public Condition<CTX> create(Map<String, Object> arguments) {
|
||||
return new FallingBlockCondition<>();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.util.Factory;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class InvertedCondition<CTX extends Context> implements Condition<CTX> {
|
||||
protected final Condition<CTX> condition;
|
||||
|
||||
public InvertedCondition(Condition<CTX> condition) {
|
||||
this.condition = condition;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(CTX ctx) {
|
||||
return !this.condition.test(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return SharedConditions.INVERTED;
|
||||
}
|
||||
|
||||
public static class FactoryImpl<CTX extends Context> implements Factory<Condition<CTX>> {
|
||||
private final Function<Map<String, Object>, Condition<CTX>> factory;
|
||||
|
||||
public FactoryImpl(Function<Map<String, Object>, Condition<CTX>> factory) {
|
||||
this.factory = factory;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public Condition<CTX> create(Map<String, Object> arguments) {
|
||||
Map<String, Object> term = (Map<String, Object>) arguments.get("term");
|
||||
return new InvertedCondition<>(this.factory.apply(term));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
package net.momirealms.craftengine.core.loot.condition;
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.block.CustomBlock;
|
||||
import net.momirealms.craftengine.core.block.properties.Property;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.Factory;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.Pair;
|
||||
|
||||
@@ -12,22 +14,21 @@ import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
public class LootConditionMatchBlockProperty implements LootCondition {
|
||||
public static final Factory FACTORY = new Factory();
|
||||
public class MatchBlockPropertyCondition<CTX extends Context> implements Condition<CTX> {
|
||||
private final List<Pair<String, String>> properties;
|
||||
|
||||
public LootConditionMatchBlockProperty(List<Pair<String, String>> properties) {
|
||||
public MatchBlockPropertyCondition(List<Pair<String, String>> properties) {
|
||||
this.properties = properties;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return LootConditions.MATCH_BLOCK_PROPERTY;
|
||||
return SharedConditions.MATCH_BLOCK_PROPERTY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(LootContext lootContext) {
|
||||
return lootContext.getOptionalParameter(LootParameters.BLOCK_STATE).map(state -> {
|
||||
public boolean test(CTX ctx) {
|
||||
return ctx.getOptionalParameter(CommonParameters.BLOCK_STATE).map(state -> {
|
||||
CustomBlock block = state.owner().value();
|
||||
for (Pair<String, String> property : this.properties) {
|
||||
Property<?> propertyIns = block.getProperty(property.left());
|
||||
@@ -42,11 +43,11 @@ public class LootConditionMatchBlockProperty implements LootCondition {
|
||||
}).orElse(false);
|
||||
}
|
||||
|
||||
public static class Factory implements LootConditionFactory {
|
||||
public static class FactoryImpl<CTX extends Context> implements Factory<Condition<CTX>> {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public LootCondition create(Map<String, Object> arguments) {
|
||||
public Condition<CTX> create(Map<String, Object> arguments) {
|
||||
Map<String, Object> properties = (Map<String, Object>) arguments.get("properties");
|
||||
if (properties == null) {
|
||||
throw new IllegalArgumentException("Missing 'properties' argument for 'match_block_property'");
|
||||
@@ -55,7 +56,7 @@ public class LootConditionMatchBlockProperty implements LootCondition {
|
||||
for (Map.Entry<String, Object> entry : properties.entrySet()) {
|
||||
propertyList.add(new Pair<>(entry.getKey(), entry.getValue().toString()));
|
||||
}
|
||||
return new LootConditionMatchBlockProperty(propertyList);
|
||||
return new MatchBlockPropertyCondition<>(propertyList);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,31 +1,32 @@
|
||||
package net.momirealms.craftengine.core.loot.condition;
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.Factory;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class LootConditionMatchItem implements LootCondition {
|
||||
public static final Factory FACTORY = new Factory();
|
||||
public class MatchItemCondition<CTX extends Context> implements Condition<CTX> {
|
||||
private final Set<String> ids;
|
||||
private final boolean regexMatch;
|
||||
|
||||
public LootConditionMatchItem(Collection<String> ids, boolean regexMatch) {
|
||||
public MatchItemCondition(Collection<String> ids, boolean regexMatch) {
|
||||
this.ids = new HashSet<>(ids);
|
||||
this.regexMatch = regexMatch;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return LootConditions.MATCH_ITEM;
|
||||
return SharedConditions.MATCH_ITEM;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(LootContext lootContext) {
|
||||
Optional<Item<?>> item = lootContext.getOptionalParameter(LootParameters.TOOL);
|
||||
public boolean test(CTX ctx) {
|
||||
Optional<Item<?>> item = ctx.getOptionalParameter(CommonParameters.TOOL);
|
||||
if (item.isEmpty()) return false;
|
||||
Key key = item.get().id();
|
||||
String itemId = key.toString();
|
||||
@@ -41,12 +42,13 @@ public class LootConditionMatchItem implements LootCondition {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static class Factory implements LootConditionFactory {
|
||||
public static class FactoryImpl<CTX extends Context> implements Factory<Condition<CTX>> {
|
||||
|
||||
@Override
|
||||
public LootCondition create(Map<String, Object> arguments) {
|
||||
public Condition<CTX> create(Map<String, Object> arguments) {
|
||||
List<String> ids = MiscUtils.getAsStringList(arguments.get("id"));
|
||||
boolean regex = (boolean) arguments.getOrDefault("regex", false);
|
||||
return new LootConditionMatchItem(ids, regex);
|
||||
return new MatchItemCondition<>(ids, regex);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.util.Factory;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.RandomUtils;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class RandomCondition<CTX extends Context> implements Condition<CTX> {
|
||||
private final float chance;
|
||||
|
||||
public RandomCondition(float chance) {
|
||||
this.chance = chance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return SharedConditions.RANDOM;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(CTX ctx) {
|
||||
return RandomUtils.generateRandomFloat(0, 1) < this.chance;
|
||||
}
|
||||
|
||||
public static class FactoryImpl<CTX extends Context> implements Factory<Condition<CTX>> {
|
||||
|
||||
@Override
|
||||
public Condition<CTX> create(Map<String, Object> arguments) {
|
||||
float provider = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("value", 0.5f), "value");
|
||||
return new RandomCondition<>(provider);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
public final class SharedConditions {
|
||||
private SharedConditions() {}
|
||||
|
||||
public static final Key EMPTY = Key.of("craftengine:empty");
|
||||
public static final Key ALL_OF = Key.of("craftengine:all_of");
|
||||
public static final Key ANY_OF = Key.of("craftengine:any_of");
|
||||
public static final Key INVERTED = Key.of("craftengine:inverted");
|
||||
public static final Key MATCH_ITEM = Key.of("craftengine:match_item");
|
||||
public static final Key MATCH_BLOCK_PROPERTY = Key.from("craftengine:match_block_property");
|
||||
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");
|
||||
public static final Key ENCHANTMENT = Key.from("craftengine:enchantment");
|
||||
public static final Key FALLING_BLOCK = Key.from("craftengine:falling_block");
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.util.Factory;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.RandomUtils;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
public class SurvivesExplosionCondition<CTX extends Context> implements Condition<CTX> {
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return SharedConditions.SURVIVES_EXPLOSION;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(CTX ctx) {
|
||||
Optional<Float> radius = ctx.getOptionalParameter(CommonParameters.EXPLOSION_RADIUS);
|
||||
if (radius.isPresent()) {
|
||||
float f = 1f / radius.get();
|
||||
return RandomUtils.generateRandomFloat(0, 1) < f;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static class FactoryImpl<CTX extends Context> implements Factory<Condition<CTX>> {
|
||||
|
||||
@Override
|
||||
public Condition<CTX> create(Map<String, Object> arguments) {
|
||||
return new SurvivesExplosionCondition<>();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
package net.momirealms.craftengine.core.loot.condition;
|
||||
package net.momirealms.craftengine.core.plugin.context.condition;
|
||||
|
||||
import net.momirealms.craftengine.core.item.Enchantment;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.parameter.LootParameters;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.plugin.context.parameter.CommonParameters;
|
||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||
import net.momirealms.craftengine.core.util.Factory;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.RandomUtils;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -13,32 +16,32 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
public class LootConditionTableBonus implements LootCondition {
|
||||
public static final Factory FACTORY = new Factory();
|
||||
public class TableBonusCondition<CTX extends Context> implements Condition<CTX> {
|
||||
private final Key enchantmentType;
|
||||
private final List<Float> values;
|
||||
|
||||
public LootConditionTableBonus(Key enchantmentType, List<Float> values) {
|
||||
public TableBonusCondition(Key enchantmentType, List<Float> values) {
|
||||
this.enchantmentType = enchantmentType;
|
||||
this.values = values;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return LootConditions.TABLE_BONUS;
|
||||
return SharedConditions.TABLE_BONUS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean test(LootContext lootContext) {
|
||||
Optional<Item<?>> item = lootContext.getOptionalParameter(LootParameters.TOOL);
|
||||
public boolean test(CTX ctx) {
|
||||
Optional<Item<?>> item = ctx.getOptionalParameter(CommonParameters.TOOL);
|
||||
int level = item.map(value -> value.getEnchantment(this.enchantmentType).map(Enchantment::level).orElse(0)).orElse(0);
|
||||
float f = this.values.get(Math.min(level, this.values.size() - 1));
|
||||
return lootContext.randomSource().nextFloat() < f;
|
||||
return RandomUtils.generateRandomFloat(0, 1) < f;
|
||||
}
|
||||
|
||||
public static class Factory implements LootConditionFactory {
|
||||
public static class FactoryImpl<CTX extends Context> implements Factory<Condition<CTX>> {
|
||||
|
||||
@Override
|
||||
public LootCondition create(Map<String, Object> arguments) {
|
||||
public Condition<CTX> create(Map<String, Object> arguments) {
|
||||
Object enchantmentObj = arguments.get("enchantment");
|
||||
if (enchantmentObj == null) {
|
||||
throw new LocalizedResourceConfigException("warning.config.loot_table.condition.table_bonus.missing_enchantment");
|
||||
@@ -47,13 +50,13 @@ public class LootConditionTableBonus implements LootCondition {
|
||||
Object chances = arguments.get("chances");
|
||||
if (chances != null) {
|
||||
if (chances instanceof Number number) {
|
||||
return new LootConditionTableBonus(enchantmentType, List.of(number.floatValue()));
|
||||
return new TableBonusCondition<>(enchantmentType, List.of(number.floatValue()));
|
||||
} else if (chances instanceof List<?> list) {
|
||||
List<Float> values = new ArrayList<>(list.size());
|
||||
for (Object o : list) {
|
||||
values.add(ResourceConfigUtils.getAsFloat(o, "chances"));
|
||||
}
|
||||
return new LootConditionTableBonus(enchantmentType, values);
|
||||
return new TableBonusCondition<>(enchantmentType, values);
|
||||
}
|
||||
}
|
||||
throw new LocalizedResourceConfigException("warning.config.loot_table.condition.table_bonus.missing_chances");
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.momirealms.craftengine.core.loot.number;
|
||||
package net.momirealms.craftengine.core.plugin.context.number;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.momirealms.craftengine.core.loot.number;
|
||||
package net.momirealms.craftengine.core.plugin.context.number;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.momirealms.craftengine.core.loot.number;
|
||||
package net.momirealms.craftengine.core.plugin.context.number;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.momirealms.craftengine.core.loot.number;
|
||||
package net.momirealms.craftengine.core.plugin.context.number;
|
||||
|
||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||
import net.momirealms.craftengine.core.registry.BuiltInRegistries;
|
||||
@@ -39,7 +39,7 @@ public class NumberProviders {
|
||||
|
||||
public static NumberProvider fromMap(Map<String, Object> map) {
|
||||
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.loot_table.number.missing_type");
|
||||
Key key = Key.withDefaultNamespace(type, "craftengine");
|
||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||
NumberProviderFactory factory = BuiltInRegistries.NUMBER_PROVIDER_FACTORY.getValue(key);
|
||||
if (factory == null) {
|
||||
throw new LocalizedResourceConfigException("warning.config.loot_table.number.invalid_type", type);
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.momirealms.craftengine.core.loot.number;
|
||||
package net.momirealms.craftengine.core.plugin.context.number;
|
||||
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
@@ -1,7 +1,7 @@
|
||||
package net.momirealms.craftengine.core.util.context.parameter;
|
||||
package net.momirealms.craftengine.core.plugin.context.parameter;
|
||||
|
||||
import net.momirealms.craftengine.core.util.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.util.context.LazyContextParameterProvider;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.plugin.context.LazyContextParameterProvider;
|
||||
import net.momirealms.craftengine.core.world.BlockInWorld;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package net.momirealms.craftengine.core.util.context.parameter;
|
||||
package net.momirealms.craftengine.core.plugin.context.parameter;
|
||||
|
||||
import net.momirealms.craftengine.core.block.ImmutableBlockState;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.context.ContextKey;
|
||||
|
||||
public final class BlockParameters {
|
||||
private BlockParameters() {}
|
||||
@@ -1,8 +1,8 @@
|
||||
package net.momirealms.craftengine.core.util.context.parameter;
|
||||
package net.momirealms.craftengine.core.plugin.context.parameter;
|
||||
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.plugin.context.LazyContextParameterProvider;
|
||||
import net.momirealms.craftengine.core.util.RandomUtils;
|
||||
import net.momirealms.craftengine.core.util.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.util.context.LazyContextParameterProvider;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -1,15 +1,18 @@
|
||||
package net.momirealms.craftengine.core.loot.parameter;
|
||||
package net.momirealms.craftengine.core.plugin.context.parameter;
|
||||
|
||||
import net.momirealms.craftengine.core.block.ImmutableBlockState;
|
||||
import net.momirealms.craftengine.core.entity.Entity;
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.util.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.world.Vec3d;
|
||||
import net.momirealms.craftengine.core.world.World;
|
||||
|
||||
public final class LootParameters {
|
||||
private LootParameters() {}
|
||||
public final class CommonParameters {
|
||||
private CommonParameters() {}
|
||||
|
||||
public static final ContextKey<Double> RANDOM = ContextKey.of("random");
|
||||
public static final ContextKey<Double> LAST_RANDOM = ContextKey.of("last_random");
|
||||
|
||||
public static final ContextKey<Vec3d> LOCATION = ContextKey.of("location");
|
||||
public static final ContextKey<World> WORLD = ContextKey.of("world");
|
||||
@@ -1,10 +1,10 @@
|
||||
package net.momirealms.craftengine.core.util.context.parameter;
|
||||
package net.momirealms.craftengine.core.plugin.context.parameter;
|
||||
|
||||
import net.momirealms.craftengine.core.entity.Entity;
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.plugin.context.LazyContextParameterProvider;
|
||||
import net.momirealms.craftengine.core.util.MCUtils;
|
||||
import net.momirealms.craftengine.core.util.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.util.context.LazyContextParameterProvider;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.momirealms.craftengine.core.util.context.parameter;
|
||||
package net.momirealms.craftengine.core.plugin.context.parameter;
|
||||
|
||||
import net.momirealms.craftengine.core.util.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextKey;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.momirealms.craftengine.core.plugin.gui;
|
||||
|
||||
import net.momirealms.craftengine.core.util.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextKey;
|
||||
|
||||
public class GuiParameters {
|
||||
public static final ContextKey<String> MAX_PAGE = ContextKey.of("max_page");
|
||||
|
||||
@@ -9,6 +9,8 @@ import net.momirealms.craftengine.core.pack.LoadingSequence;
|
||||
import net.momirealms.craftengine.core.pack.Pack;
|
||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||
import net.momirealms.craftengine.core.plugin.config.ConfigSectionParser;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext;
|
||||
import net.momirealms.craftengine.core.plugin.gui.*;
|
||||
import net.momirealms.craftengine.core.plugin.gui.Ingredient;
|
||||
import net.momirealms.craftengine.core.registry.Holder;
|
||||
@@ -16,8 +18,6 @@ import net.momirealms.craftengine.core.util.AdventureHelper;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||
import net.momirealms.craftengine.core.util.context.ContextHolder;
|
||||
import net.momirealms.craftengine.core.util.context.PlayerOptionalContext;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.*;
|
||||
|
||||
@@ -18,7 +18,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class MiniMessageTranslatorImpl implements MiniMessageTranslator {
|
||||
private static final Key NAME = Key.key("craftengine", "main");
|
||||
private static final Key NAME = Key.key(net.momirealms.craftengine.core.util.Key.DEFAULT_NAMESPACE, "main");
|
||||
static final MiniMessageTranslatorImpl INSTANCE = new MiniMessageTranslatorImpl();
|
||||
final TranslatableComponentRenderer<Locale> renderer = TranslatableComponentRenderer.usingTranslationSource(this);
|
||||
private final Set<Translator> sources = Collections.newSetFromMap(new ConcurrentHashMap<>());
|
||||
|
||||
@@ -93,7 +93,7 @@ public class TranslationManagerImpl implements TranslationManager {
|
||||
this.plugin.saveResource("translations/" + lang + ".yml");
|
||||
}
|
||||
|
||||
this.registry = MiniMessageTranslationRegistry.create(Key.key("craftengine", "main"), AdventureHelper.miniMessage());
|
||||
this.registry = MiniMessageTranslationRegistry.create(Key.key(net.momirealms.craftengine.core.util.Key.DEFAULT_NAMESPACE, "main"), AdventureHelper.miniMessage());
|
||||
this.registry.defaultLocale(DEFAULT_LOCALE);
|
||||
this.loadFromFileSystem(this.translationsDirectory, false);
|
||||
MiniMessageTranslator.translator().addSource(this.registry);
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
package net.momirealms.craftengine.core.plugin.text.minimessage;
|
||||
|
||||
import net.kyori.adventure.text.minimessage.Context;
|
||||
import net.kyori.adventure.text.minimessage.ParsingException;
|
||||
import net.kyori.adventure.text.minimessage.tag.Tag;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.plugin.locale.TranslationManager;
|
||||
import net.momirealms.craftengine.core.util.AdventureHelper;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class I18NTag implements TagResolver {
|
||||
private final MiniMessageTagContext context;
|
||||
private final Context context;
|
||||
|
||||
public I18NTag(MiniMessageTagContext context) {
|
||||
public I18NTag(Context context) {
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable Tag resolve(@NotNull String name, @NotNull ArgumentQueue arguments, @NotNull Context ctx) throws ParsingException {
|
||||
public @Nullable Tag resolve(@NotNull String name, @NotNull ArgumentQueue arguments, @NotNull net.kyori.adventure.text.minimessage.Context ctx) throws ParsingException {
|
||||
if (!this.has(name)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
package net.momirealms.craftengine.core.plugin.text.minimessage;
|
||||
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
import net.momirealms.craftengine.core.util.context.Context;
|
||||
|
||||
public interface MiniMessageTagContext extends Context {
|
||||
|
||||
TagResolver[] tagResolvers();
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
package net.momirealms.craftengine.core.plugin.text.minimessage;
|
||||
|
||||
import net.kyori.adventure.text.minimessage.Context;
|
||||
import net.kyori.adventure.text.minimessage.ParsingException;
|
||||
import net.kyori.adventure.text.minimessage.tag.Tag;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
import net.momirealms.craftengine.core.plugin.context.Context;
|
||||
import net.momirealms.craftengine.core.plugin.context.ContextKey;
|
||||
import net.momirealms.craftengine.core.util.AdventureHelper;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.context.ContextKey;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -18,19 +18,19 @@ public class NamedArgumentTag implements TagResolver {
|
||||
private static final String NAME_0 = "argument";
|
||||
private static final String NAME_1 = "arg";
|
||||
|
||||
private final MiniMessageTagContext context;
|
||||
private final Context context;
|
||||
|
||||
public NamedArgumentTag(@NotNull MiniMessageTagContext context) {
|
||||
public NamedArgumentTag(@NotNull Context context) {
|
||||
this.context = Objects.requireNonNull(context, "context holder");
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable Tag resolve(@NotNull String name, @NotNull ArgumentQueue arguments, @NotNull Context ctx) throws ParsingException {
|
||||
public @Nullable Tag resolve(@NotNull String name, @NotNull ArgumentQueue arguments, @NotNull net.kyori.adventure.text.minimessage.Context ctx) throws ParsingException {
|
||||
if (!has(name)) {
|
||||
return null;
|
||||
}
|
||||
String argumentKey = arguments.popOr("No argument key provided").toString();
|
||||
ContextKey<?> key = ContextKey.of(Key.withDefaultNamespace(argumentKey, "craftengine"));
|
||||
ContextKey<?> key = ContextKey.of(Key.withDefaultNamespace(argumentKey, Key.DEFAULT_NAMESPACE));
|
||||
Optional<?> optional = this.context.getOptionalParameter(key);
|
||||
if (optional.isEmpty()) {
|
||||
throw ctx.newException("Invalid argument key", arguments);
|
||||
|
||||
@@ -7,11 +7,10 @@ import net.momirealms.craftengine.core.entity.furniture.HitBoxFactory;
|
||||
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory;
|
||||
import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe;
|
||||
import net.momirealms.craftengine.core.item.recipe.RecipeFactory;
|
||||
import net.momirealms.craftengine.core.loot.condition.LootConditionFactory;
|
||||
import net.momirealms.craftengine.core.loot.LootContext;
|
||||
import net.momirealms.craftengine.core.loot.entry.LootEntryContainerFactory;
|
||||
import net.momirealms.craftengine.core.loot.function.LootFunctionApplyBonusCount;
|
||||
import net.momirealms.craftengine.core.loot.function.LootFunctionFactory;
|
||||
import net.momirealms.craftengine.core.loot.number.NumberProviderFactory;
|
||||
import net.momirealms.craftengine.core.pack.conflict.matcher.PathMatcherFactory;
|
||||
import net.momirealms.craftengine.core.pack.conflict.resolution.ResolutionFactory;
|
||||
import net.momirealms.craftengine.core.pack.host.ResourcePackHostFactory;
|
||||
@@ -22,6 +21,9 @@ import net.momirealms.craftengine.core.pack.model.select.SelectPropertyFactory;
|
||||
import net.momirealms.craftengine.core.pack.model.special.SpecialModelFactory;
|
||||
import net.momirealms.craftengine.core.pack.model.tint.TintFactory;
|
||||
import net.momirealms.craftengine.core.plugin.config.template.TemplateArgumentFactory;
|
||||
import net.momirealms.craftengine.core.plugin.context.Condition;
|
||||
import net.momirealms.craftengine.core.plugin.context.number.NumberProviderFactory;
|
||||
import net.momirealms.craftengine.core.util.Factory;
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
import net.momirealms.craftengine.core.util.ResourceKey;
|
||||
|
||||
@@ -31,7 +33,7 @@ public class BuiltInRegistries {
|
||||
public static final Registry<PropertyFactory> PROPERTY_FACTORY = createRegistry(Registries.PROPERTY_FACTORY);
|
||||
public static final Registry<BlockBehaviorFactory> BLOCK_BEHAVIOR_FACTORY = createRegistry(Registries.BLOCK_BEHAVIOR_FACTORY);
|
||||
public static final Registry<LootFunctionFactory<?>> LOOT_FUNCTION_FACTORY = createRegistry(Registries.LOOT_FUNCTION_FACTORY);
|
||||
public static final Registry<LootConditionFactory> LOOT_CONDITION_FACTORY = createRegistry(Registries.LOOT_CONDITION_FACTORY);
|
||||
public static final Registry<Factory<Condition<LootContext>>> LOOT_CONDITION_FACTORY = createRegistry(Registries.LOOT_CONDITION_FACTORY);
|
||||
public static final Registry<LootEntryContainerFactory<?>> LOOT_ENTRY_CONTAINER_FACTORY = createRegistry(Registries.LOOT_ENTRY_CONTAINER_FACTORY);
|
||||
public static final Registry<NumberProviderFactory> NUMBER_PROVIDER_FACTORY = createRegistry(Registries.NUMBER_PROVIDER_FACTORY);
|
||||
public static final Registry<ItemBehaviorFactory> ITEM_BEHAVIOR_FACTORY = createRegistry(Registries.ITEM_BEHAVIOR_FACTORY);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user