9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-27 10:59:07 +00:00

feat(block): 添加配置文件和一个新的随机数类型

This commit is contained in:
jhqwqmc
2025-09-23 13:05:50 +08:00
parent d787f0bdfa
commit ea100a992d
12 changed files with 370 additions and 2 deletions

View File

@@ -431,6 +431,7 @@ public abstract class AbstractPackManager implements PackManager {
plugin.saveResource("resources/default/configuration/blocks/topaz_ore.yml");
plugin.saveResource("resources/default/configuration/blocks/netherite_anvil.yml");
plugin.saveResource("resources/default/configuration/blocks/amethyst_torch.yml");
plugin.saveResource("resources/default/configuration/blocks/honeydew.yml");
// assets
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/font/image/emojis.png");
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/chinese_lantern.png");
@@ -537,6 +538,10 @@ public abstract class AbstractPackManager implements PackManager {
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/gui/sprites/tooltip/topaz_background.png.mcmeta");
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/gui/sprites/tooltip/topaz_frame.png");
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/gui/sprites/tooltip/topaz_frame.png.mcmeta");
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/honeydew.png");
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/honeydew_bottom.png");
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/block/custom/honeydew_top.png");
plugin.saveResource("resources/default/resourcepack/assets/minecraft/textures/item/custom/honeydew_item.png");
}
private TreeMap<ConfigParser, List<CachedConfigSection>> updateCachedConfigFiles() {

View File

@@ -0,0 +1,51 @@
package net.momirealms.craftengine.core.plugin.context.number;
import net.momirealms.craftengine.core.plugin.context.Context;
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 record BinomialNumberProvider(NumberProvider trials, NumberProvider successProbability) implements NumberProvider {
public static final Factory FACTORY = new Factory();
@Override
public float getFloat(Context context) {
return getInt(context);
}
@Override
public double getDouble(Context context) {
return getInt(context);
}
@Override
public int getInt(Context context) {
int trialCount = this.trials.getInt(context);
float probability = this.successProbability.getFloat(context);
int successCount = 0;
for (int i = 0; i < trialCount; i++) {
if (RandomUtils.generateRandomFloat(0, 1) < probability) {
successCount++;
}
}
return successCount;
}
@Override
public Key type() {
return NumberProviders.BINOMIAL;
}
public static class Factory implements NumberProviderFactory {
@Override
public NumberProvider create(Map<String, Object> arguments) {
Object trials = ResourceConfigUtils.requireNonNullOrThrow(arguments.get("extra"), "warning.config.number.binomial.missing_extra");
Object successProbability = ResourceConfigUtils.requireNonNullOrThrow(arguments.get("probability"), "warning.config.number.binomial.missing_probability");
return new BinomialNumberProvider(NumberProviders.fromObject(trials), NumberProviders.fromObject(successProbability));
}
}
}

View File

@@ -18,6 +18,7 @@ public class NumberProviders {
public static final Key UNIFORM = Key.of("craftengine:uniform");
public static final Key EXPRESSION = Key.of("craftengine:expression");
public static final Key GAUSSIAN = Key.of("craftengine:gaussian");
public static final Key BINOMIAL = Key.of("craftengine:binomial");
static {
register(FIXED, FixedNumberProvider.FACTORY);
@@ -25,6 +26,7 @@ public class NumberProviders {
register(UNIFORM, UniformNumberProvider.FACTORY);
register(GAUSSIAN, GaussianNumberProvider.FACTORY);
register(EXPRESSION, ExpressionNumberProvider.FACTORY);
register(BINOMIAL, BinomialNumberProvider.FACTORY);
}
public static void register(Key key, NumberProviderFactory factory) {