├── .github └── FUNDING.yml ├── .gitignore ├── LICENSE ├── README.md ├── api ├── pom.xml └── src │ └── main │ └── java │ └── de │ └── derfrzocker │ ├── feature │ └── api │ │ ├── Configuration.java │ │ ├── ConfigurationAble.java │ │ ├── ExtraValues.java │ │ ├── Feature.java │ │ ├── FeatureGenerator.java │ │ ├── FeatureGeneratorConfiguration.java │ │ ├── FeaturePlacementModifier.java │ │ ├── LocatedAble.java │ │ ├── PlacementModifierConfiguration.java │ │ ├── Registries.java │ │ ├── Registry.java │ │ ├── RuleTest.java │ │ ├── RuleTestType.java │ │ ├── Setting.java │ │ ├── Value.java │ │ ├── ValueLocation.java │ │ ├── ValueType.java │ │ └── util │ │ ├── Parser.java │ │ ├── SaveAble.java │ │ └── traverser │ │ └── message │ │ ├── KeyType.java │ │ ├── MessageTraversAble.java │ │ ├── StringFormatter.java │ │ └── TraversKey.java │ └── ore │ └── control │ └── api │ ├── Biome.java │ ├── FeatureGeneratorHook.java │ ├── NMSReplacer.java │ ├── OreControlManager.java │ ├── OreControlRegistries.java │ ├── PlacementModifierHook.java │ ├── config │ ├── Config.java │ ├── ConfigInfo.java │ ├── ConfigManager.java │ ├── ConfigType.java │ └── dao │ │ ├── ConfigDao.java │ │ ├── ConfigInfoDao.java │ │ └── ExtraValueDao.java │ └── util │ └── Reloadable.java ├── common ├── pom.xml └── src │ └── main │ └── java │ └── de │ └── derfrzocker │ └── feature │ └── common │ ├── AbstractValue.java │ ├── feature │ ├── generator │ │ └── configuration │ │ │ ├── EmptyFeatureConfiguration.java │ │ │ └── OreFeatureConfiguration.java │ └── placement │ │ ├── ActivationModifier.java │ │ └── configuration │ │ ├── ActivationConfiguration.java │ │ ├── CountModifierConfiguration.java │ │ ├── HeightRangeModifierConfiguration.java │ │ ├── RarityModifierConfiguration.java │ │ └── SurfaceWaterDepthModifierConfiguration.java │ ├── ruletest │ ├── AlwaysTrueRuleTest.java │ ├── AlwaysTrueRuleTestType.java │ ├── BlockMatchRuleTest.java │ ├── BlockMatchRuleTestType.java │ ├── BlockStateMatchRuleTest.java │ ├── BlockStateMatchRuleTestType.java │ ├── RandomBlockMatchRuleTest.java │ ├── RandomBlockMatchRuleTestType.java │ ├── RandomBlockStateMatchRuleTest.java │ ├── RandomBlockStateMatchRuleTestType.java │ ├── TagMatchRuleTest.java │ └── TagMatchRuleTestType.java │ ├── util │ ├── MessageTraversUtil.java │ └── ValueLocationUtil.java │ └── value │ ├── bool │ ├── BooleanType.java │ ├── BooleanValue.java │ ├── FixedBooleanType.java │ └── FixedBooleanValue.java │ ├── number │ ├── FixedFloatType.java │ ├── FixedFloatValue.java │ ├── FloatType.java │ ├── FloatValue.java │ ├── IntegerType.java │ ├── IntegerValue.java │ ├── NumberType.java │ ├── NumberValue.java │ └── integer │ │ ├── Exp4jIntegerType.java │ │ ├── Exp4jIntegerValue.java │ │ ├── FixedDoubleToIntegerType.java │ │ ├── FixedDoubleToIntegerValue.java │ │ ├── FixedIntegerType.java │ │ ├── FixedIntegerValue.java │ │ ├── biased │ │ ├── BiasedToBottomIntegerType.java │ │ └── BiasedToBottomIntegerValue.java │ │ ├── clamped │ │ ├── ClampedIntegerType.java │ │ ├── ClampedIntegerValue.java │ │ ├── ClampedNormalIntegerType.java │ │ └── ClampedNormalIntegerValue.java │ │ ├── trapezoid │ │ ├── TrapezoidIntegerType.java │ │ └── TrapezoidIntegerValue.java │ │ ├── uniform │ │ ├── UniformIntegerType.java │ │ └── UniformIntegerValue.java │ │ └── weighted │ │ ├── WeightedListIntegerType.java │ │ └── WeightedListIntegerValue.java │ ├── offset │ ├── AboveBottomOffsetIntegerType.java │ ├── AboveBottomOffsetIntegerValue.java │ ├── BelowTopOffsetIntegerType.java │ └── BelowTopOffsetIntegerValue.java │ └── target │ ├── FixedTargetListType.java │ ├── FixedTargetListValue.java │ ├── TargetBlockState.java │ ├── TargetListType.java │ └── TargetListValue.java ├── impl ├── pom.xml ├── v1_18_R1 │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── derfrzocker │ │ ├── feature │ │ └── impl │ │ │ └── v1_18_R1 │ │ │ ├── feature │ │ │ └── generator │ │ │ │ ├── GlowstoneBlobFeatureGenerator.java │ │ │ │ ├── MinecraftFeatureGenerator.java │ │ │ │ ├── OreFeatureGenerator.java │ │ │ │ ├── ScatteredOreGenerator.java │ │ │ │ └── configuration │ │ │ │ └── OreFeatureConfiguration.java │ │ │ ├── placement │ │ │ ├── CountModifier.java │ │ │ ├── HeightRangeModifier.java │ │ │ ├── MinecraftPlacementModifier.java │ │ │ ├── RarityModifier.java │ │ │ ├── SurfaceRelativeThresholdModifier.java │ │ │ ├── SurfaceWaterDepthModifier.java │ │ │ └── configuration │ │ │ │ └── SurfaceRelativeThresholdModifierConfiguration.java │ │ │ └── value │ │ │ ├── heightmap │ │ │ ├── HeightmapType.java │ │ │ └── HeightmapValue.java │ │ │ ├── offset │ │ │ ├── NMSAboveBottomOffsetIntegerValue.java │ │ │ └── NMSBelowTopOffsetIntegerValue.java │ │ │ └── target │ │ │ ├── TargetType.java │ │ │ └── TargetValue.java │ │ └── ore │ │ └── control │ │ └── impl │ │ └── v1_18_R1 │ │ ├── ConversionUtil.java │ │ ├── NMSReflectionNames.java │ │ ├── NMSReplacer_v1_18_R1.java │ │ ├── feature │ │ └── generator │ │ │ ├── GlowstoneBlobFeatureGeneratorHook.java │ │ │ ├── MinecraftFeatureGeneratorHook.java │ │ │ ├── OreFeatureGeneratorHook.java │ │ │ └── ScatteredOreFeatureGeneratorHook.java │ │ └── placement │ │ ├── CountModifierHook.java │ │ ├── HeightRangeModifierHook.java │ │ ├── MinecraftPlacementModifierHook.java │ │ ├── RarityModifierHook.java │ │ ├── SurfaceRelativeThresholdModifierHook.java │ │ └── SurfaceWaterDepthModifierHook.java ├── v1_18_R2 │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── derfrzocker │ │ ├── feature │ │ └── impl │ │ │ └── v1_18_R2 │ │ │ ├── feature │ │ │ └── generator │ │ │ │ ├── GlowstoneBlobFeatureGenerator.java │ │ │ │ ├── MinecraftFeatureGenerator.java │ │ │ │ ├── OreFeatureGenerator.java │ │ │ │ ├── ScatteredOreGenerator.java │ │ │ │ └── configuration │ │ │ │ └── OreFeatureConfiguration.java │ │ │ ├── placement │ │ │ ├── CountModifier.java │ │ │ ├── HeightRangeModifier.java │ │ │ ├── MinecraftPlacementModifier.java │ │ │ ├── RarityModifier.java │ │ │ ├── SurfaceRelativeThresholdModifier.java │ │ │ ├── SurfaceWaterDepthModifier.java │ │ │ └── configuration │ │ │ │ └── SurfaceRelativeThresholdModifierConfiguration.java │ │ │ └── value │ │ │ ├── heightmap │ │ │ ├── HeightmapType.java │ │ │ └── HeightmapValue.java │ │ │ ├── offset │ │ │ ├── NMSAboveBottomOffsetIntegerValue.java │ │ │ └── NMSBelowTopOffsetIntegerValue.java │ │ │ └── target │ │ │ ├── TargetType.java │ │ │ └── TargetValue.java │ │ └── ore │ │ └── control │ │ └── impl │ │ └── v1_18_R2 │ │ ├── ConversionUtil.java │ │ ├── NMSReflectionNames.java │ │ ├── NMSReplacer_v1_18_R2.java │ │ ├── feature │ │ └── generator │ │ │ ├── GlowstoneBlobFeatureGeneratorHook.java │ │ │ ├── MinecraftFeatureGeneratorHook.java │ │ │ ├── OreFeatureGeneratorHook.java │ │ │ └── ScatteredOreFeatureGeneratorHook.java │ │ └── placement │ │ ├── ActivationModifierHook.java │ │ ├── CountModifierHook.java │ │ ├── HeightRangeModifierHook.java │ │ ├── MinecraftPlacementModifierHook.java │ │ ├── RarityModifierHook.java │ │ ├── SurfaceRelativeThresholdModifierHook.java │ │ └── SurfaceWaterDepthModifierHook.java ├── v1_19_R1 │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── derfrzocker │ │ ├── feature │ │ └── impl │ │ │ └── v1_19_R1 │ │ │ ├── extra │ │ │ └── OreVeinHandler.java │ │ │ ├── feature │ │ │ └── generator │ │ │ │ ├── GlowstoneBlobFeatureGenerator.java │ │ │ │ ├── MinecraftFeatureGenerator.java │ │ │ │ ├── OreFeatureGenerator.java │ │ │ │ ├── ScatteredOreGenerator.java │ │ │ │ └── configuration │ │ │ │ └── OreFeatureConfiguration.java │ │ │ ├── placement │ │ │ ├── CountModifier.java │ │ │ ├── HeightRangeModifier.java │ │ │ ├── MinecraftPlacementModifier.java │ │ │ ├── RarityModifier.java │ │ │ ├── SurfaceRelativeThresholdModifier.java │ │ │ ├── SurfaceWaterDepthModifier.java │ │ │ └── configuration │ │ │ │ └── SurfaceRelativeThresholdModifierConfiguration.java │ │ │ └── value │ │ │ ├── heightmap │ │ │ ├── HeightmapType.java │ │ │ └── HeightmapValue.java │ │ │ ├── offset │ │ │ ├── NMSAboveBottomOffsetIntegerValue.java │ │ │ └── NMSBelowTopOffsetIntegerValue.java │ │ │ └── target │ │ │ ├── TargetType.java │ │ │ └── TargetValue.java │ │ └── ore │ │ └── control │ │ └── impl │ │ └── v1_19_R1 │ │ ├── ConversionUtil.java │ │ ├── NMSReflectionNames.java │ │ ├── NMSReplacer_v1_19_R1.java │ │ ├── feature │ │ └── generator │ │ │ ├── GlowstoneBlobFeatureGeneratorHook.java │ │ │ ├── MinecraftFeatureGeneratorHook.java │ │ │ ├── OreFeatureGeneratorHook.java │ │ │ └── ScatteredOreFeatureGeneratorHook.java │ │ └── placement │ │ ├── ActivationModifierHook.java │ │ ├── CountModifierHook.java │ │ ├── HeightRangeModifierHook.java │ │ ├── MinecraftPlacementModifierHook.java │ │ ├── RarityModifierHook.java │ │ ├── SurfaceRelativeThresholdModifierHook.java │ │ └── SurfaceWaterDepthModifierHook.java ├── v1_19_R2 │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── derfrzocker │ │ ├── feature │ │ └── impl │ │ │ └── v1_19_R2 │ │ │ ├── extra │ │ │ └── OreVeinHandler.java │ │ │ ├── feature │ │ │ └── generator │ │ │ │ ├── GlowstoneBlobFeatureGenerator.java │ │ │ │ ├── MinecraftFeatureGenerator.java │ │ │ │ ├── OreFeatureGenerator.java │ │ │ │ ├── ScatteredOreGenerator.java │ │ │ │ └── configuration │ │ │ │ └── OreFeatureConfiguration.java │ │ │ ├── placement │ │ │ ├── CountModifier.java │ │ │ ├── HeightRangeModifier.java │ │ │ ├── MinecraftPlacementModifier.java │ │ │ ├── RarityModifier.java │ │ │ ├── SurfaceRelativeThresholdModifier.java │ │ │ ├── SurfaceWaterDepthModifier.java │ │ │ └── configuration │ │ │ │ └── SurfaceRelativeThresholdModifierConfiguration.java │ │ │ └── value │ │ │ ├── heightmap │ │ │ ├── HeightmapType.java │ │ │ └── HeightmapValue.java │ │ │ ├── offset │ │ │ ├── NMSAboveBottomOffsetIntegerValue.java │ │ │ └── NMSBelowTopOffsetIntegerValue.java │ │ │ └── target │ │ │ ├── TargetType.java │ │ │ └── TargetValue.java │ │ └── ore │ │ └── control │ │ └── impl │ │ └── v1_19_R2 │ │ ├── ConversionUtil.java │ │ ├── NMSReflectionNames.java │ │ ├── NMSReplacer_v1_19_R2.java │ │ ├── feature │ │ └── generator │ │ │ ├── GlowstoneBlobFeatureGeneratorHook.java │ │ │ ├── MinecraftFeatureGeneratorHook.java │ │ │ ├── OreFeatureGeneratorHook.java │ │ │ └── ScatteredOreFeatureGeneratorHook.java │ │ └── placement │ │ ├── ActivationModifierHook.java │ │ ├── CountModifierHook.java │ │ ├── HeightRangeModifierHook.java │ │ ├── MinecraftPlacementModifierHook.java │ │ ├── RarityModifierHook.java │ │ ├── SurfaceRelativeThresholdModifierHook.java │ │ └── SurfaceWaterDepthModifierHook.java ├── v1_19_R3 │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── derfrzocker │ │ ├── feature │ │ └── impl │ │ │ └── v1_19_R3 │ │ │ ├── extra │ │ │ └── OreVeinHandler.java │ │ │ ├── feature │ │ │ └── generator │ │ │ │ ├── EmptyConfigurationGenerator.java │ │ │ │ ├── MinecraftFeatureGenerator.java │ │ │ │ └── OreConfigurationGenerator.java │ │ │ ├── placement │ │ │ ├── CountModifier.java │ │ │ ├── HeightRangeModifier.java │ │ │ ├── MinecraftPlacementModifier.java │ │ │ ├── RarityModifier.java │ │ │ ├── SurfaceRelativeThresholdModifier.java │ │ │ ├── SurfaceWaterDepthModifier.java │ │ │ └── configuration │ │ │ │ └── SurfaceRelativeThresholdModifierConfiguration.java │ │ │ └── value │ │ │ ├── heightmap │ │ │ ├── HeightmapType.java │ │ │ └── HeightmapValue.java │ │ │ └── offset │ │ │ ├── NMSAboveBottomOffsetIntegerValue.java │ │ │ └── NMSBelowTopOffsetIntegerValue.java │ │ └── ore │ │ └── control │ │ └── impl │ │ └── v1_19_R3 │ │ ├── ConversionUtil.java │ │ ├── NMSReflectionNames.java │ │ ├── NMSReplacer_v1_19_R3.java │ │ ├── feature │ │ └── generator │ │ │ ├── EmptyConfigurationGeneratorHook.java │ │ │ ├── MinecraftFeatureGeneratorHook.java │ │ │ └── OreConfigurationGeneratorHook.java │ │ └── placement │ │ ├── ActivationModifierHook.java │ │ ├── CountModifierHook.java │ │ ├── HeightRangeModifierHook.java │ │ ├── MinecraftPlacementModifierHook.java │ │ ├── RarityModifierHook.java │ │ ├── SurfaceRelativeThresholdModifierHook.java │ │ └── SurfaceWaterDepthModifierHook.java ├── v1_20_R1 │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── derfrzocker │ │ ├── feature │ │ └── impl │ │ │ └── v1_20_R1 │ │ │ ├── extra │ │ │ └── OreVeinHandler.java │ │ │ ├── feature │ │ │ └── generator │ │ │ │ ├── EmptyConfigurationGenerator.java │ │ │ │ ├── MinecraftFeatureGenerator.java │ │ │ │ └── OreConfigurationGenerator.java │ │ │ ├── placement │ │ │ ├── CountModifier.java │ │ │ ├── HeightRangeModifier.java │ │ │ ├── MinecraftPlacementModifier.java │ │ │ ├── RarityModifier.java │ │ │ ├── SurfaceRelativeThresholdModifier.java │ │ │ ├── SurfaceWaterDepthModifier.java │ │ │ └── configuration │ │ │ │ └── SurfaceRelativeThresholdModifierConfiguration.java │ │ │ └── value │ │ │ ├── heightmap │ │ │ ├── HeightmapType.java │ │ │ └── HeightmapValue.java │ │ │ └── offset │ │ │ ├── NMSAboveBottomOffsetIntegerValue.java │ │ │ └── NMSBelowTopOffsetIntegerValue.java │ │ └── ore │ │ └── control │ │ └── impl │ │ └── v1_20_R1 │ │ ├── ConversionUtil.java │ │ ├── NMSReflectionNames.java │ │ ├── NMSReplacer_v1_20_R1.java │ │ ├── feature │ │ └── generator │ │ │ ├── EmptyConfigurationGeneratorHook.java │ │ │ ├── MinecraftFeatureGeneratorHook.java │ │ │ └── OreConfigurationGeneratorHook.java │ │ └── placement │ │ ├── ActivationModifierHook.java │ │ ├── CountModifierHook.java │ │ ├── HeightRangeModifierHook.java │ │ ├── MinecraftPlacementModifierHook.java │ │ ├── RarityModifierHook.java │ │ ├── SurfaceRelativeThresholdModifierHook.java │ │ └── SurfaceWaterDepthModifierHook.java ├── v1_20_R2 │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── derfrzocker │ │ ├── feature │ │ └── impl │ │ │ └── v1_20_R2 │ │ │ ├── extra │ │ │ └── OreVeinHandler.java │ │ │ ├── feature │ │ │ └── generator │ │ │ │ ├── EmptyConfigurationGenerator.java │ │ │ │ ├── MinecraftFeatureGenerator.java │ │ │ │ └── OreConfigurationGenerator.java │ │ │ ├── placement │ │ │ ├── CountModifier.java │ │ │ ├── HeightRangeModifier.java │ │ │ ├── MinecraftPlacementModifier.java │ │ │ ├── RarityModifier.java │ │ │ ├── SurfaceRelativeThresholdModifier.java │ │ │ ├── SurfaceWaterDepthModifier.java │ │ │ └── configuration │ │ │ │ └── SurfaceRelativeThresholdModifierConfiguration.java │ │ │ └── value │ │ │ ├── heightmap │ │ │ ├── HeightmapType.java │ │ │ └── HeightmapValue.java │ │ │ └── offset │ │ │ ├── NMSAboveBottomOffsetIntegerValue.java │ │ │ └── NMSBelowTopOffsetIntegerValue.java │ │ └── ore │ │ └── control │ │ └── impl │ │ └── v1_20_R2 │ │ ├── ConversionUtil.java │ │ ├── NMSReflectionNames.java │ │ ├── NMSReplacer_v1_20_R2.java │ │ ├── feature │ │ └── generator │ │ │ ├── EmptyConfigurationGeneratorHook.java │ │ │ ├── MinecraftFeatureGeneratorHook.java │ │ │ └── OreConfigurationGeneratorHook.java │ │ └── placement │ │ ├── ActivationModifierHook.java │ │ ├── CountModifierHook.java │ │ ├── HeightRangeModifierHook.java │ │ ├── MinecraftPlacementModifierHook.java │ │ ├── RarityModifierHook.java │ │ ├── SurfaceRelativeThresholdModifierHook.java │ │ └── SurfaceWaterDepthModifierHook.java ├── v1_20_R3 │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── derfrzocker │ │ ├── feature │ │ └── impl │ │ │ └── v1_20_R3 │ │ │ ├── extra │ │ │ └── OreVeinHandler.java │ │ │ ├── feature │ │ │ └── generator │ │ │ │ ├── EmptyConfigurationGenerator.java │ │ │ │ ├── MinecraftFeatureGenerator.java │ │ │ │ └── OreConfigurationGenerator.java │ │ │ ├── placement │ │ │ ├── CountModifier.java │ │ │ ├── HeightRangeModifier.java │ │ │ ├── MinecraftPlacementModifier.java │ │ │ ├── RarityModifier.java │ │ │ ├── SurfaceRelativeThresholdModifier.java │ │ │ ├── SurfaceWaterDepthModifier.java │ │ │ └── configuration │ │ │ │ └── SurfaceRelativeThresholdModifierConfiguration.java │ │ │ └── value │ │ │ ├── heightmap │ │ │ ├── HeightmapType.java │ │ │ └── HeightmapValue.java │ │ │ └── offset │ │ │ ├── NMSAboveBottomOffsetIntegerValue.java │ │ │ └── NMSBelowTopOffsetIntegerValue.java │ │ └── ore │ │ └── control │ │ └── impl │ │ └── v1_20_R3 │ │ ├── ConversionUtil.java │ │ ├── NMSReflectionNames.java │ │ ├── NMSReplacer_v1_20_R3.java │ │ ├── feature │ │ └── generator │ │ │ ├── EmptyConfigurationGeneratorHook.java │ │ │ ├── MinecraftFeatureGeneratorHook.java │ │ │ └── OreConfigurationGeneratorHook.java │ │ └── placement │ │ ├── ActivationModifierHook.java │ │ ├── CountModifierHook.java │ │ ├── HeightRangeModifierHook.java │ │ ├── MinecraftPlacementModifierHook.java │ │ ├── RarityModifierHook.java │ │ ├── SurfaceRelativeThresholdModifierHook.java │ │ └── SurfaceWaterDepthModifierHook.java ├── v1_20_R4 │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── derfrzocker │ │ ├── feature │ │ └── impl │ │ │ └── v1_20_R4 │ │ │ ├── extra │ │ │ └── OreVeinHandler.java │ │ │ ├── feature │ │ │ └── generator │ │ │ │ ├── EmptyConfigurationGenerator.java │ │ │ │ ├── MinecraftFeatureGenerator.java │ │ │ │ └── OreConfigurationGenerator.java │ │ │ ├── placement │ │ │ ├── CountModifier.java │ │ │ ├── HeightRangeModifier.java │ │ │ ├── MinecraftPlacementModifier.java │ │ │ ├── RarityModifier.java │ │ │ ├── SurfaceRelativeThresholdModifier.java │ │ │ ├── SurfaceWaterDepthModifier.java │ │ │ └── configuration │ │ │ │ └── SurfaceRelativeThresholdModifierConfiguration.java │ │ │ └── value │ │ │ ├── heightmap │ │ │ ├── HeightmapType.java │ │ │ └── HeightmapValue.java │ │ │ └── offset │ │ │ ├── NMSAboveBottomOffsetIntegerValue.java │ │ │ └── NMSBelowTopOffsetIntegerValue.java │ │ └── ore │ │ └── control │ │ └── impl │ │ └── v1_20_R4 │ │ ├── ConversionUtil.java │ │ ├── NMSReflectionNames.java │ │ ├── NMSReplacer_v1_20_R4.java │ │ ├── feature │ │ └── generator │ │ │ ├── EmptyConfigurationGeneratorHook.java │ │ │ ├── MinecraftFeatureGeneratorHook.java │ │ │ └── OreConfigurationGeneratorHook.java │ │ └── placement │ │ ├── ActivationModifierHook.java │ │ ├── CountModifierHook.java │ │ ├── HeightRangeModifierHook.java │ │ ├── MinecraftPlacementModifierHook.java │ │ ├── RarityModifierHook.java │ │ ├── SurfaceRelativeThresholdModifierHook.java │ │ └── SurfaceWaterDepthModifierHook.java ├── v1_21_R1 │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── derfrzocker │ │ ├── feature │ │ └── impl │ │ │ └── v1_21_R1 │ │ │ ├── extra │ │ │ └── OreVeinHandler.java │ │ │ ├── feature │ │ │ └── generator │ │ │ │ ├── EmptyConfigurationGenerator.java │ │ │ │ ├── MinecraftFeatureGenerator.java │ │ │ │ └── OreConfigurationGenerator.java │ │ │ ├── placement │ │ │ ├── CountModifier.java │ │ │ ├── HeightRangeModifier.java │ │ │ ├── MinecraftPlacementModifier.java │ │ │ ├── RarityModifier.java │ │ │ ├── SurfaceRelativeThresholdModifier.java │ │ │ ├── SurfaceWaterDepthModifier.java │ │ │ └── configuration │ │ │ │ └── SurfaceRelativeThresholdModifierConfiguration.java │ │ │ └── value │ │ │ ├── heightmap │ │ │ ├── HeightmapType.java │ │ │ └── HeightmapValue.java │ │ │ └── offset │ │ │ ├── NMSAboveBottomOffsetIntegerValue.java │ │ │ └── NMSBelowTopOffsetIntegerValue.java │ │ └── ore │ │ └── control │ │ └── impl │ │ └── v1_21_R1 │ │ ├── ConversionUtil.java │ │ ├── NMSReflectionNames.java │ │ ├── NMSReplacer_v1_21_R1.java │ │ ├── feature │ │ └── generator │ │ │ ├── EmptyConfigurationGeneratorHook.java │ │ │ ├── MinecraftFeatureGeneratorHook.java │ │ │ └── OreConfigurationGeneratorHook.java │ │ └── placement │ │ ├── ActivationModifierHook.java │ │ ├── CountModifierHook.java │ │ ├── HeightRangeModifierHook.java │ │ ├── MinecraftPlacementModifierHook.java │ │ ├── RarityModifierHook.java │ │ ├── SurfaceRelativeThresholdModifierHook.java │ │ └── SurfaceWaterDepthModifierHook.java ├── v1_21_R2 │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── derfrzocker │ │ ├── feature │ │ └── impl │ │ │ └── v1_21_R2 │ │ │ ├── extra │ │ │ └── OreVeinHandler.java │ │ │ ├── feature │ │ │ └── generator │ │ │ │ ├── EmptyConfigurationGenerator.java │ │ │ │ ├── MinecraftFeatureGenerator.java │ │ │ │ └── OreConfigurationGenerator.java │ │ │ ├── placement │ │ │ ├── CountModifier.java │ │ │ ├── HeightRangeModifier.java │ │ │ ├── MinecraftPlacementModifier.java │ │ │ ├── RarityModifier.java │ │ │ ├── SurfaceRelativeThresholdModifier.java │ │ │ ├── SurfaceWaterDepthModifier.java │ │ │ └── configuration │ │ │ │ └── SurfaceRelativeThresholdModifierConfiguration.java │ │ │ └── value │ │ │ ├── heightmap │ │ │ ├── HeightmapType.java │ │ │ └── HeightmapValue.java │ │ │ └── offset │ │ │ ├── NMSAboveBottomOffsetIntegerValue.java │ │ │ └── NMSBelowTopOffsetIntegerValue.java │ │ └── ore │ │ └── control │ │ └── impl │ │ └── v1_21_R2 │ │ ├── ConversionUtil.java │ │ ├── NMSReflectionNames.java │ │ ├── NMSReplacer_v1_21_R2.java │ │ ├── feature │ │ └── generator │ │ │ ├── EmptyConfigurationGeneratorHook.java │ │ │ ├── MinecraftFeatureGeneratorHook.java │ │ │ └── OreConfigurationGeneratorHook.java │ │ └── placement │ │ ├── ActivationModifierHook.java │ │ ├── CountModifierHook.java │ │ ├── HeightRangeModifierHook.java │ │ ├── MinecraftPlacementModifierHook.java │ │ ├── RarityModifierHook.java │ │ ├── SurfaceRelativeThresholdModifierHook.java │ │ └── SurfaceWaterDepthModifierHook.java ├── v1_21_R3 │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── de │ │ └── derfrzocker │ │ ├── feature │ │ └── impl │ │ │ └── v1_21_R3 │ │ │ ├── extra │ │ │ └── OreVeinHandler.java │ │ │ ├── feature │ │ │ └── generator │ │ │ │ ├── EmptyConfigurationGenerator.java │ │ │ │ ├── MinecraftFeatureGenerator.java │ │ │ │ └── OreConfigurationGenerator.java │ │ │ ├── placement │ │ │ ├── CountModifier.java │ │ │ ├── HeightRangeModifier.java │ │ │ ├── MinecraftPlacementModifier.java │ │ │ ├── RarityModifier.java │ │ │ ├── SurfaceRelativeThresholdModifier.java │ │ │ ├── SurfaceWaterDepthModifier.java │ │ │ └── configuration │ │ │ │ └── SurfaceRelativeThresholdModifierConfiguration.java │ │ │ └── value │ │ │ ├── heightmap │ │ │ ├── HeightmapType.java │ │ │ └── HeightmapValue.java │ │ │ └── offset │ │ │ ├── NMSAboveBottomOffsetIntegerValue.java │ │ │ └── NMSBelowTopOffsetIntegerValue.java │ │ └── ore │ │ └── control │ │ └── impl │ │ └── v1_21_R3 │ │ ├── ConversionUtil.java │ │ ├── NMSReflectionNames.java │ │ ├── NMSReplacer_v1_21_R3.java │ │ ├── feature │ │ └── generator │ │ │ ├── EmptyConfigurationGeneratorHook.java │ │ │ ├── MinecraftFeatureGeneratorHook.java │ │ │ └── OreConfigurationGeneratorHook.java │ │ └── placement │ │ ├── ActivationModifierHook.java │ │ ├── CountModifierHook.java │ │ ├── HeightRangeModifierHook.java │ │ ├── MinecraftPlacementModifierHook.java │ │ ├── RarityModifierHook.java │ │ ├── SurfaceRelativeThresholdModifierHook.java │ │ └── SurfaceWaterDepthModifierHook.java └── v1_21_R4 │ ├── pom.xml │ └── src │ └── main │ └── java │ └── de │ └── derfrzocker │ ├── feature │ └── impl │ │ └── v1_21_R4 │ │ ├── extra │ │ └── OreVeinHandler.java │ │ ├── feature │ │ └── generator │ │ │ ├── EmptyConfigurationGenerator.java │ │ │ ├── MinecraftFeatureGenerator.java │ │ │ └── OreConfigurationGenerator.java │ │ ├── placement │ │ ├── CountModifier.java │ │ ├── HeightRangeModifier.java │ │ ├── MinecraftPlacementModifier.java │ │ ├── RarityModifier.java │ │ ├── SurfaceRelativeThresholdModifier.java │ │ ├── SurfaceWaterDepthModifier.java │ │ └── configuration │ │ │ └── SurfaceRelativeThresholdModifierConfiguration.java │ │ └── value │ │ ├── heightmap │ │ ├── HeightmapType.java │ │ └── HeightmapValue.java │ │ └── offset │ │ ├── NMSAboveBottomOffsetIntegerValue.java │ │ └── NMSBelowTopOffsetIntegerValue.java │ └── ore │ └── control │ └── impl │ └── v1_21_R4 │ ├── ConversionUtil.java │ ├── NMSReflectionNames.java │ ├── NMSReplacer_v1_21_R4.java │ ├── feature │ └── generator │ │ ├── EmptyConfigurationGeneratorHook.java │ │ ├── MinecraftFeatureGeneratorHook.java │ │ └── OreConfigurationGeneratorHook.java │ └── placement │ ├── ActivationModifierHook.java │ ├── CountModifierHook.java │ ├── HeightRangeModifierHook.java │ ├── MinecraftPlacementModifierHook.java │ ├── RarityModifierHook.java │ ├── SurfaceRelativeThresholdModifierHook.java │ └── SurfaceWaterDepthModifierHook.java ├── ore-control ├── pom.xml └── src │ ├── main │ ├── java │ │ └── de │ │ │ └── derfrzocker │ │ │ └── ore │ │ │ └── control │ │ │ ├── OreControl.java │ │ │ ├── Stats.java │ │ │ ├── cache │ │ │ ├── config │ │ │ │ ├── BiomeConfigCacheSlice.java │ │ │ │ ├── ConfigCache.java │ │ │ │ ├── ConfigCacheSlice.java │ │ │ │ ├── DefaultConfigCache.java │ │ │ │ ├── GenerationConfigCache.java │ │ │ │ ├── GuiConfigCache.java │ │ │ │ ├── StandardConfigCache.java │ │ │ │ └── part │ │ │ │ │ ├── BiomeConfigCachePart.java │ │ │ │ │ └── FeatureConfigCachePart.java │ │ │ ├── extra │ │ │ │ ├── ExtraValueCache.java │ │ │ │ └── ExtraValueCacheSlice.java │ │ │ └── info │ │ │ │ └── ConfigInfoCache.java │ │ │ ├── gui │ │ │ ├── GuiValuesHolder.java │ │ │ ├── OreControlGuiManager.java │ │ │ ├── PlayerGuiData.java │ │ │ ├── ScreenUtil.java │ │ │ ├── Screens.java │ │ │ ├── SettingWrapper.java │ │ │ ├── info │ │ │ │ ├── InfoLink.java │ │ │ │ ├── InfoLinkData.java │ │ │ │ └── InfoUtil.java │ │ │ └── screen │ │ │ │ ├── BiomeScreen.java │ │ │ │ ├── ConfigInfoScreen.java │ │ │ │ ├── ConfigInfosScreen.java │ │ │ │ ├── ExtraValuesScreen.java │ │ │ │ ├── FeatureSelectionScreen.java │ │ │ │ ├── FeatureSettingsScreen.java │ │ │ │ ├── GeneratorSettingsScreen.java │ │ │ │ ├── LanguageScreen.java │ │ │ │ ├── PlacementModifierSettingsScreen.java │ │ │ │ ├── extra │ │ │ │ └── BigOreVeinScreen.java │ │ │ │ ├── other │ │ │ │ ├── BlockTagScreen.java │ │ │ │ └── TargetBlockStateScreen.java │ │ │ │ ├── ruletest │ │ │ │ ├── BlockMatchRuleTestScreen.java │ │ │ │ ├── BlockStateMatchRuleTestScreen.java │ │ │ │ └── TagRuleTestScreen.java │ │ │ │ └── value │ │ │ │ ├── BiasedToBottomIntegerScreen.java │ │ │ │ ├── BooleanScreen.java │ │ │ │ ├── ClampedIntegerScreen.java │ │ │ │ ├── FixedTargetListScreen.java │ │ │ │ ├── NumberEditScreen.java │ │ │ │ ├── OffsetIntegerScreens.java │ │ │ │ ├── TrapezoidIntegerScreen.java │ │ │ │ ├── UniformIntegerScreen.java │ │ │ │ └── WeightedListIntegerScreen.java │ │ │ ├── impl │ │ │ └── BasicConfigManager.java │ │ │ ├── interactions │ │ │ ├── BlockInteractionListener.java │ │ │ └── BlockInteractionManager.java │ │ │ └── traverser │ │ │ ├── BasicStringFormatter.java │ │ │ └── ValueTraverser.java │ └── resources │ │ ├── gui │ │ └── default │ │ │ ├── all_settings_screen.yml │ │ │ ├── biome_icons.yml │ │ │ ├── biome_screen.yml │ │ │ ├── config_info_screen.yml │ │ │ ├── config_infos_screen.yml │ │ │ ├── design.yml │ │ │ ├── extra │ │ │ └── big_ore_vein_screen.yml │ │ │ ├── extra_values_screen.yml │ │ │ ├── feature_icons.yml │ │ │ ├── feature_selection_screen.yml │ │ │ ├── feature_settings_screen.yml │ │ │ ├── generator_icons.yml │ │ │ ├── language_screen.yml │ │ │ ├── other │ │ │ ├── block_tag_screen.yml │ │ │ └── target_block_state_screen.yml │ │ │ ├── rule_test │ │ │ ├── block_match_screen.yml │ │ │ ├── block_state_match_screen.yml │ │ │ └── tag_match_screen.yml │ │ │ └── value │ │ │ ├── above_bottom_offset_integer_screen.yml │ │ │ ├── below_top_offset_integer_screen.yml │ │ │ ├── biased_to_bottom_integer_screen.yml │ │ │ ├── boolean_screen.yml │ │ │ ├── clamped_integer_screen.yml │ │ │ ├── clamped_normal_integer_screen.yml │ │ │ ├── fixed_double_to_integer_screen.yml │ │ │ ├── fixed_float_screen.yml │ │ │ ├── fixed_target_list_screen.yml │ │ │ ├── trapezoid_integer_screen.yml │ │ │ ├── uniform_integer_screen.yml │ │ │ ├── weighted_list_integer_screen.yml │ │ │ └── weighted_list_sub_integer_screen.yml │ │ ├── lang │ │ ├── README.txt │ │ ├── de │ │ │ ├── biomes.yml │ │ │ ├── feature_generators.yml │ │ │ ├── features.yml │ │ │ ├── gui.yml │ │ │ ├── info.yml │ │ │ ├── namespaces.yml │ │ │ ├── placement_modifiers.yml │ │ │ ├── rule_tests.yml │ │ │ ├── settings.yml │ │ │ ├── useful_links.yml │ │ │ └── value_types.yml │ │ └── en │ │ │ ├── biomes.yml │ │ │ ├── feature_generators.yml │ │ │ ├── features.yml │ │ │ ├── gui.yml │ │ │ ├── info.yml │ │ │ ├── namespaces.yml │ │ │ ├── placement_modifiers.yml │ │ │ ├── rule_tests.yml │ │ │ ├── settings.yml │ │ │ ├── useful_links.yml │ │ │ └── value_types.yml │ │ └── plugin.yml │ └── test │ └── java │ └── de │ └── derfrzocker │ └── ore │ └── control │ └── LanguagesTest.java └── pom.xml /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [DerFrZocker] 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | /.idea/ 3 | /api/target/ 4 | /api/.flattened-pom.xml 5 | /api/ore-control-api.iml 6 | /common/target/ 7 | /common/.flattened-pom.xml 8 | /common/ore-control-common.iml 9 | /impl/v1_18_R1/target/ 10 | /impl/v1_18_R1/.flattened-pom.xml 11 | /impl/v1_18_R1/ore-control-impl-v1_18_R1.iml 12 | /impl/v1_18_R2/target/ 13 | /impl/v1_18_R2/.flattened-pom.xml 14 | /impl/v1_18_R2/ore-control-impl-v1_18_R2.iml 15 | /impl/v1_19_R1/target/ 16 | /impl/v1_19_R1/.flattened-pom.xml 17 | /impl/v1_19_R1/ore-control-impl-v1_19_R1.iml 18 | /impl/v1_19_R2/target/ 19 | /impl/v1_19_R2/.flattened-pom.xml 20 | /impl/v1_19_R2/ore-control-impl-v1_19_R2.iml 21 | /impl/v1_19_R3/target/ 22 | /impl/v1_19_R3/.flattened-pom.xml 23 | /impl/v1_19_R3/ore-control-impl-v1_19_R3.iml 24 | /impl/v1_20_R1/target/ 25 | /impl/v1_20_R1/.flattened-pom.xml 26 | /impl/v1_20_R1/ore-control-impl-v1_20_R1.iml 27 | /impl/v1_20_R2/target/ 28 | /impl/v1_20_R2/.flattened-pom.xml 29 | /impl/v1_20_R2/ore-control-impl-v1_20_R2.iml 30 | /impl/v1_20_R3/target/ 31 | /impl/v1_20_R3/.flattened-pom.xml 32 | /impl/v1_20_R3/ore-control-impl-v1_20_R3.iml 33 | /impl/.flattened-pom.xml 34 | /impl/ore-control-impl.iml 35 | /ore-control/target/ 36 | /ore-control/.flattened-pom.xml 37 | /ore-control/ore-control.iml 38 | /.flattened-pom.xml 39 | /ore-control-parent.iml 40 | .flattened-pom.xml 41 | target 42 | *.iml 43 | 44 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 - 2024 Marvin (DerFrZocker) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | 8 | ore-control-parent 9 | de.derfrzocker 10 | ${revision} 11 | 12 | 13 | ore-control-api 14 | 15 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/ConfigurationAble.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | import org.bukkit.Keyed; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | import java.util.Set; 7 | 8 | /** 9 | * Represents an object which can have a {@link Configuration}. 10 | */ 11 | public interface ConfigurationAble extends Keyed { 12 | 13 | /** 14 | * Returns an unmodifiable set containing all 15 | * {@link Setting settings} this object will use. 16 | * 17 | * @return the settings which will be used. 18 | */ 19 | @NotNull 20 | Set getSettings(); 21 | 22 | /** 23 | * Creates and returns a new empty configuration, 24 | * for this object. 25 | * 26 | * @return a new empty configuration 27 | */ 28 | @NotNull 29 | Configuration createEmptyConfiguration(); 30 | } 31 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/ExtraValues.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | import de.derfrzocker.feature.api.util.SaveAble; 4 | 5 | import java.util.Optional; 6 | 7 | public class ExtraValues implements SaveAble { 8 | 9 | private Optional generateBigOreVeins = Optional.empty(); 10 | 11 | private boolean dirty; 12 | 13 | public ExtraValues() { 14 | } 15 | 16 | public ExtraValues(Optional generateBigOreVeins) { 17 | this.generateBigOreVeins = generateBigOreVeins; 18 | } 19 | 20 | public Optional shouldGeneratedBigOreVeins() { 21 | return generateBigOreVeins; 22 | } 23 | 24 | public void setGenerateBigOreVeins(Optional generateBigOreVeins) { 25 | this.generateBigOreVeins = generateBigOreVeins; 26 | dirty = true; 27 | } 28 | 29 | public boolean isDirty() { 30 | return dirty; 31 | } 32 | 33 | public void saved() { 34 | dirty = false; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/Feature.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | import org.bukkit.Keyed; 4 | import org.bukkit.NamespacedKey; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Represents a Feature which can generate in a world. 11 | * Each Feature contains one generator and can have multiple placement modifiers. 12 | * The order of the placement modifiers is important. A list which preserves its order should be used. 13 | * 14 | * @param key The unique key of this feature. 15 | * @param generator The generator which generates the blocks. 16 | * @param placementModifiers The placement modifiers which determine the positions to generate the feature. 17 | */ 18 | public record Feature(@NotNull NamespacedKey key, @NotNull FeatureGenerator generator, 19 | @NotNull List> placementModifiers) implements Keyed { 20 | 21 | @NotNull 22 | @Override 23 | public NamespacedKey getKey() { 24 | return key(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/FeatureGeneratorConfiguration.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | /** 6 | * Represents a configuration which has a {@link FeatureGenerator} as owner. 7 | */ 8 | public interface FeatureGeneratorConfiguration extends Configuration { 9 | 10 | /** 11 | * Returns the owner of this configuration. 12 | * 13 | * @return the owner of this Configuration. 14 | */ 15 | @NotNull 16 | FeatureGenerator getOwner(); 17 | } 18 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/LocatedAble.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | public interface LocatedAble { 6 | 7 | /** 8 | * The value location were the value is from / is being saved. 9 | * The value is only present during runtime and is not saved to disk. 10 | * Therefor it should be set once the value is loaded / set. 11 | * When the value is saved to a different value location, then the value 12 | * should be updated accordingly. 13 | * 14 | * @return from were the value is, if not location is set {@link ValueLocation#UNKNOWN} is returned 15 | * @see #setValueLocation(ValueLocation) 16 | */ 17 | @NotNull 18 | ValueLocation getValueLocation(); 19 | 20 | /** 21 | * The value location were the value is from / is being saved. 22 | * The value is only present during runtime and is not saved to disk. 23 | * Therefor it should be set once the value is loaded / set. 24 | * When the value is saved to a different value location, then the value 25 | * should be updated accordingly. 26 | *
27 | * When setting a value location it gets passed to all child values. 28 | * 29 | * @param valueLocation to set 30 | * @see #getValueLocation() 31 | */ 32 | void setValueLocation(@NotNull ValueLocation valueLocation); 33 | } 34 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/PlacementModifierConfiguration.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | /** 6 | * Represents a configuration which has a {@link FeaturePlacementModifier} as owner. 7 | */ 8 | public interface PlacementModifierConfiguration extends Configuration { 9 | 10 | /** 11 | * Returns the owner of this configuration. 12 | * 13 | * @return the owner of this Configuration. 14 | */ 15 | @NotNull 16 | FeaturePlacementModifier getOwner(); 17 | } 18 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/Registries.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | import java.util.LinkedHashMap; 4 | import java.util.Map; 5 | 6 | public class Registries { 7 | 8 | private final Registry featureRegistry = new Registry<>(); 9 | private final Registry> featureGeneratorRegistry = new Registry<>(); 10 | private final Registry> placementModifierRegistry = new Registry<>(); 11 | private final Map, Registry> valueTypeRegistry = new LinkedHashMap<>(); 12 | private final Registry ruleTestTypeRegistry = new Registry<>(); 13 | 14 | public Registry getFeatureRegistry() { 15 | return featureRegistry; 16 | } 17 | 18 | public Registry> getFeatureGeneratorRegistry() { 19 | return featureGeneratorRegistry; 20 | } 21 | 22 | public Registry> getPlacementModifierRegistry() { 23 | return placementModifierRegistry; 24 | } 25 | 26 | public > Registry getValueTypeRegistry(Class clazz) { 27 | return (Registry) valueTypeRegistry.computeIfAbsent(clazz, aClass -> new Registry<>()); 28 | } 29 | 30 | public Registry getRuleTestTypeRegistry() { 31 | return ruleTestTypeRegistry; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/Registry.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | import org.bukkit.Keyed; 4 | import org.bukkit.NamespacedKey; 5 | 6 | import java.util.LinkedHashMap; 7 | import java.util.Map; 8 | import java.util.Optional; 9 | 10 | public class Registry { 11 | 12 | private final Map values = new LinkedHashMap<>(); 13 | 14 | public Optional get(NamespacedKey key) { 15 | return Optional.ofNullable(values.get(key)); 16 | } 17 | 18 | public void register(V value) { 19 | values.put(value.getKey(), value); 20 | } 21 | 22 | public Map getValues() { 23 | return values; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/RuleTest.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | import de.derfrzocker.feature.api.util.traverser.message.MessageTraversAble; 4 | import de.derfrzocker.feature.api.util.SaveAble; 5 | 6 | public interface RuleTest extends MessageTraversAble, LocatedAble, SaveAble, Cloneable { 7 | 8 | RuleTestType getType(); 9 | 10 | RuleTest clone(); 11 | } 12 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/RuleTestType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | import de.derfrzocker.feature.api.util.Parser; 4 | import org.bukkit.Keyed; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | public interface RuleTestType extends Keyed { 8 | 9 | @NotNull 10 | Parser getParser(); 11 | } 12 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/Setting.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | public record Setting(@NotNull String name, @NotNull Class valueType) { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/Value.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | import de.derfrzocker.feature.api.util.traverser.message.MessageTraversAble; 4 | import de.derfrzocker.feature.api.util.SaveAble; 5 | import org.bukkit.generator.LimitedRegion; 6 | import org.bukkit.generator.WorldInfo; 7 | import org.bukkit.util.BlockVector; 8 | import org.jetbrains.annotations.NotNull; 9 | 10 | import java.util.Random; 11 | 12 | public interface Value, T extends ValueType, O> extends Cloneable, SaveAble, MessageTraversAble, LocatedAble { 13 | 14 | T getValueType(); 15 | 16 | O getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion); 17 | 18 | Value clone(); 19 | } 20 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/ValueLocation.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | public enum ValueLocation { 4 | 5 | PER_WORLD, 6 | PER_BIOME, 7 | GLOBAL_WORLD, 8 | GLOBAL_BIOME, 9 | DEFAULT_WORLD, 10 | DEFAULT_BIOME, 11 | UNKNOWN; 12 | } 13 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/ValueType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api; 2 | 3 | import de.derfrzocker.feature.api.util.Parser; 4 | import org.bukkit.Keyed; 5 | 6 | public interface ValueType, T extends ValueType, O> extends Keyed { 7 | 8 | Parser getParser(); 9 | 10 | V createNewValue(); 11 | } 12 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/util/Parser.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api.util; 2 | 3 | import com.google.gson.JsonElement; 4 | 5 | public interface Parser { 6 | 7 | JsonElement toJson(T value); 8 | 9 | T fromJson(JsonElement jsonElement); 10 | } 11 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/util/SaveAble.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api.util; 2 | 3 | public interface SaveAble { 4 | 5 | /** 6 | * Returns true if this object has unsaved changes applied. 7 | * Otherwise, it will return false. 8 | * 9 | * @return true if dirty otherwise false. 10 | */ 11 | boolean isDirty(); 12 | 13 | /** 14 | * Sets the state of the object to not dirty. 15 | */ 16 | void saved(); 17 | } 18 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/util/traverser/message/KeyType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api.util.traverser.message; 2 | 3 | public enum KeyType { 4 | 5 | SETTING, 6 | VALUE_TYPE, 7 | VALUE_SETTING, 8 | 9 | RULE_TEST 10 | 11 | } 12 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/util/traverser/message/MessageTraversAble.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api.util.traverser.message; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | import java.util.List; 6 | 7 | @FunctionalInterface 8 | public interface MessageTraversAble { 9 | 10 | @NotNull 11 | List<@NotNull String> traverse(@NotNull StringFormatter formatter, int depth, @NotNull TraversKey key); 12 | } 13 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/util/traverser/message/StringFormatter.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api.util.traverser.message; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | @FunctionalInterface 7 | public interface StringFormatter { 8 | 9 | @Nullable 10 | String format(int depth, @NotNull TraversKey key, @Nullable Object value); 11 | } 12 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/feature/api/util/traverser/message/TraversKey.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.api.util.traverser.message; 2 | 3 | import org.bukkit.NamespacedKey; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | public record TraversKey(@NotNull KeyType keyType, @NotNull Object key) { 7 | 8 | @NotNull 9 | public static TraversKey ofSetting(@NotNull String key) { 10 | return new TraversKey(KeyType.SETTING, key); 11 | } 12 | 13 | @NotNull 14 | public static TraversKey ofValueType(@NotNull NamespacedKey key) { 15 | return new TraversKey(KeyType.VALUE_TYPE, key); 16 | } 17 | 18 | @NotNull 19 | public static TraversKey ofValueSetting(@NotNull String key) { 20 | return new TraversKey(KeyType.VALUE_SETTING, key); 21 | } 22 | 23 | @NotNull 24 | public static TraversKey ofRuleTest(@NotNull NamespacedKey key) { 25 | return new TraversKey(KeyType.RULE_TEST, key); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/ore/control/api/Biome.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.api; 2 | 3 | import de.derfrzocker.feature.api.Feature; 4 | import org.bukkit.Keyed; 5 | import org.bukkit.NamespacedKey; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | import java.util.LinkedHashSet; 9 | import java.util.Set; 10 | 11 | public class Biome implements Keyed { 12 | 13 | private final NamespacedKey key; 14 | private final Set features = new LinkedHashSet<>(); 15 | 16 | public Biome(NamespacedKey key) { 17 | this.key = key; 18 | } 19 | 20 | @NotNull 21 | @Override 22 | public NamespacedKey getKey() { 23 | return key; 24 | } 25 | 26 | public Set getFeatures() { 27 | return features; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/ore/control/api/FeatureGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.api; 2 | 3 | import de.derfrzocker.feature.api.FeatureGenerator; 4 | import de.derfrzocker.feature.api.FeatureGeneratorConfiguration; 5 | import org.bukkit.Keyed; 6 | 7 | public interface FeatureGeneratorHook extends Keyed { 8 | 9 | FeatureGenerator getFeatureGenerator(); 10 | 11 | Biome getBiome(); 12 | } 13 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/ore/control/api/NMSReplacer.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.api; 2 | 3 | import org.bukkit.World; 4 | 5 | import java.io.File; 6 | import java.util.Set; 7 | 8 | public interface NMSReplacer { 9 | 10 | void register(); 11 | 12 | void saveDefaultValues(File file); 13 | 14 | void hookIntoBiomes(); 15 | 16 | Set getBiomes(World world); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/ore/control/api/OreControlManager.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.api; 2 | 3 | import de.derfrzocker.ore.control.api.config.ConfigManager; 4 | import org.bukkit.World; 5 | 6 | import java.util.LinkedList; 7 | import java.util.List; 8 | import java.util.Set; 9 | import java.util.function.Function; 10 | 11 | public class OreControlManager { 12 | 13 | private final OreControlRegistries registries; 14 | private final ConfigManager configManager; 15 | private final Function> biomeFunction; 16 | private final List valueChangeListener = new LinkedList<>(); 17 | 18 | public OreControlManager(OreControlRegistries registries, ConfigManager configManager, Function> biomeFunction) { 19 | this.registries = registries; 20 | this.configManager = configManager; 21 | this.biomeFunction = biomeFunction; 22 | } 23 | 24 | public OreControlRegistries getRegistries() { 25 | return registries; 26 | } 27 | 28 | public ConfigManager getConfigManager() { 29 | return configManager; 30 | } 31 | 32 | public Set getBiomes(World world) { 33 | return biomeFunction.apply(world); 34 | } 35 | 36 | public void addValueChangeListener(Runnable listener) { 37 | valueChangeListener.add(listener); 38 | } 39 | 40 | public void onValueChange() { 41 | valueChangeListener.forEach(Runnable::run); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/ore/control/api/OreControlRegistries.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.api; 2 | 3 | import de.derfrzocker.feature.api.Registries; 4 | import de.derfrzocker.feature.api.Registry; 5 | 6 | public class OreControlRegistries extends Registries { 7 | 8 | private final Registry biomeRegistry = new Registry<>(); 9 | 10 | public Registry getBiomeRegistry() { 11 | return biomeRegistry; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/ore/control/api/PlacementModifierHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.api; 2 | 3 | import de.derfrzocker.feature.api.FeaturePlacementModifier; 4 | import de.derfrzocker.feature.api.PlacementModifierConfiguration; 5 | import org.bukkit.Keyed; 6 | 7 | public interface PlacementModifierHook extends Keyed { 8 | 9 | FeaturePlacementModifier getPlacementModifier(); 10 | 11 | Biome getBiome(); 12 | } 13 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/ore/control/api/config/ConfigInfo.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.api.config; 2 | 3 | import de.derfrzocker.feature.api.util.SaveAble; 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | import java.io.File; 7 | 8 | public class ConfigInfo implements Comparable, SaveAble { 9 | 10 | private final String worldName; 11 | private final File dataDirectory; 12 | private ConfigType configType; 13 | private boolean dirty = false; 14 | 15 | public ConfigInfo(String worldName, ConfigType configType, File dataDirectory) { 16 | this.worldName = worldName; 17 | this.configType = configType; 18 | this.dataDirectory = dataDirectory; 19 | } 20 | 21 | public String getWorldName() { 22 | return worldName; 23 | } 24 | 25 | public ConfigType getConfigType() { 26 | return configType; 27 | } 28 | 29 | public void setConfigType(ConfigType configType) { 30 | if (configType == ConfigType.GLOBAL) { 31 | throw new IllegalArgumentException(String.format("Cannot set config type to '%s'", configType)); 32 | } 33 | 34 | this.configType = configType; 35 | dirty = true; 36 | } 37 | 38 | public File getDataDirectory() { 39 | return dataDirectory; 40 | } 41 | 42 | public boolean isDirty() { 43 | return dirty; 44 | } 45 | 46 | public void saved() { 47 | dirty = false; 48 | } 49 | 50 | @Override 51 | public int compareTo(@NotNull ConfigInfo configInfo) { 52 | if (this == configInfo) { 53 | return 0; 54 | } 55 | 56 | if (getConfigType() != configInfo.getConfigType()) { 57 | return getConfigType().compareTo(configInfo.getConfigType()); 58 | } 59 | 60 | return getWorldName().compareTo(configInfo.getWorldName()); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/ore/control/api/config/ConfigType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.api.config; 2 | 3 | public enum ConfigType { 4 | 5 | GLOBAL, 6 | WORLD, 7 | TEMPLATE, 8 | 9 | } 10 | -------------------------------------------------------------------------------- /api/src/main/java/de/derfrzocker/ore/control/api/util/Reloadable.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.api.util; 2 | 3 | public interface Reloadable { 4 | 5 | void reload(); 6 | } 7 | -------------------------------------------------------------------------------- /common/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | 8 | ore-control-parent 9 | de.derfrzocker 10 | ${revision} 11 | 12 | 13 | ore-control-common 14 | 15 | 16 | 17 | de.derfrzocker 18 | ore-control-api 19 | ${project.version} 20 | provided 21 | 22 | 23 | net.objecthunter 24 | exp4j 25 | 0.4.8 26 | provided 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/AbstractValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common; 2 | 3 | import de.derfrzocker.feature.api.Value; 4 | import de.derfrzocker.feature.api.ValueLocation; 5 | import de.derfrzocker.feature.api.ValueType; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | public abstract class AbstractValue, T extends ValueType, O> implements Value { 9 | 10 | private ValueLocation valueLocation = ValueLocation.UNKNOWN; 11 | 12 | @Override 13 | public @NotNull ValueLocation getValueLocation() { 14 | return valueLocation; 15 | } 16 | 17 | @Override 18 | public void setValueLocation(@NotNull ValueLocation valueLocation) { 19 | this.valueLocation = valueLocation; 20 | } 21 | 22 | public abstract AbstractValue clone(); 23 | } 24 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/feature/generator/configuration/EmptyFeatureConfiguration.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.feature.generator.configuration; 2 | 3 | import de.derfrzocker.feature.api.FeatureGenerator; 4 | import de.derfrzocker.feature.api.FeatureGeneratorConfiguration; 5 | import de.derfrzocker.feature.api.Setting; 6 | import de.derfrzocker.feature.api.Value; 7 | import org.jetbrains.annotations.NotNull; 8 | import org.jetbrains.annotations.Nullable; 9 | 10 | import java.util.Collections; 11 | import java.util.Set; 12 | 13 | public class EmptyFeatureConfiguration implements FeatureGeneratorConfiguration { 14 | 15 | private final FeatureGenerator featureGenerator; 16 | 17 | public EmptyFeatureConfiguration(FeatureGenerator featureGenerator) { 18 | this.featureGenerator = featureGenerator; 19 | } 20 | 21 | @Override 22 | public @NotNull Set getSettings() { 23 | return Collections.emptySet(); 24 | } 25 | 26 | @Override 27 | public @Nullable Value getValue(@NotNull Setting setting) { 28 | return null; 29 | } 30 | 31 | @Override 32 | public void setValue(@NotNull Setting setting, @Nullable Value value) { 33 | 34 | } 35 | 36 | @Override 37 | public boolean isDirty() { 38 | return false; 39 | } 40 | 41 | @Override 42 | public void saved() { 43 | 44 | } 45 | 46 | @Override 47 | public @NotNull FeatureGenerator getOwner() { 48 | return featureGenerator; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/ruletest/AlwaysTrueRuleTest.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.ruletest; 2 | 3 | import de.derfrzocker.feature.api.RuleTest; 4 | import de.derfrzocker.feature.api.RuleTestType; 5 | import de.derfrzocker.feature.api.ValueLocation; 6 | import de.derfrzocker.feature.api.util.traverser.message.StringFormatter; 7 | import de.derfrzocker.feature.api.util.traverser.message.TraversKey; 8 | import de.derfrzocker.feature.common.util.MessageTraversUtil; 9 | import de.derfrzocker.spigot.utils.Pair; 10 | import org.jetbrains.annotations.NotNull; 11 | 12 | import java.util.List; 13 | 14 | public final class AlwaysTrueRuleTest implements RuleTest { 15 | 16 | private ValueLocation valueLocation = ValueLocation.UNKNOWN; 17 | 18 | @Override 19 | public RuleTestType getType() { 20 | return AlwaysTrueRuleTestType.INSTANCE; 21 | } 22 | 23 | @Override 24 | public RuleTest clone() { 25 | return this; 26 | } 27 | 28 | @Override 29 | public boolean isDirty() { 30 | return false; 31 | } 32 | 33 | @Override 34 | public void saved() { 35 | 36 | } 37 | 38 | @Override 39 | public @NotNull List<@NotNull String> traverse(@NotNull StringFormatter formatter, int depth, @NotNull TraversKey key) { 40 | return MessageTraversUtil.multiple(formatter, depth, key, TraversKey.ofRuleTest(getType().getKey())); 41 | } 42 | 43 | @Override 44 | public @NotNull ValueLocation getValueLocation() { 45 | return valueLocation; 46 | } 47 | 48 | @Override 49 | public void setValueLocation(@NotNull ValueLocation valueLocation) { 50 | this.valueLocation = valueLocation; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/ruletest/AlwaysTrueRuleTestType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.ruletest; 2 | 3 | import com.google.gson.JsonElement; 4 | import com.google.gson.JsonObject; 5 | import de.derfrzocker.feature.api.RuleTest; 6 | import de.derfrzocker.feature.api.RuleTestType; 7 | import de.derfrzocker.feature.api.util.Parser; 8 | import org.bukkit.NamespacedKey; 9 | import org.jetbrains.annotations.NotNull; 10 | 11 | public class AlwaysTrueRuleTestType implements RuleTestType { 12 | 13 | public static final AlwaysTrueRuleTestType INSTANCE = new AlwaysTrueRuleTestType(); 14 | private static final NamespacedKey KEY = NamespacedKey.minecraft("always_true"); 15 | private static final Parser PARSER = new Parser<>() { 16 | @Override 17 | public JsonElement toJson(RuleTest value) { 18 | return new JsonObject(); 19 | } 20 | 21 | @Override 22 | public AlwaysTrueRuleTest fromJson(JsonElement jsonElement) { 23 | return new AlwaysTrueRuleTest(); 24 | } 25 | }; 26 | 27 | private AlwaysTrueRuleTestType() { 28 | } 29 | 30 | @Override 31 | public @NotNull Parser getParser() { 32 | return PARSER; 33 | } 34 | 35 | @NotNull 36 | @Override 37 | public NamespacedKey getKey() { 38 | return KEY; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/ruletest/BlockMatchRuleTestType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.ruletest; 2 | 3 | import com.google.gson.JsonElement; 4 | import com.google.gson.JsonObject; 5 | import de.derfrzocker.feature.api.RuleTest; 6 | import de.derfrzocker.feature.api.RuleTestType; 7 | import de.derfrzocker.feature.api.util.Parser; 8 | import org.bukkit.Material; 9 | import org.bukkit.NamespacedKey; 10 | import org.bukkit.Registry; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | public class BlockMatchRuleTestType implements RuleTestType { 14 | 15 | public static final BlockMatchRuleTestType INSTANCE = new BlockMatchRuleTestType(); 16 | private static final NamespacedKey KEY = NamespacedKey.minecraft("block_match"); 17 | private static final Parser PARSER = new Parser<>() { 18 | @Override 19 | public JsonElement toJson(RuleTest v) { 20 | BlockMatchRuleTest value = (BlockMatchRuleTest) v; 21 | JsonObject jsonObject = new JsonObject(); 22 | 23 | jsonObject.addProperty("value", value.getBlock().getKey().toString()); 24 | 25 | return jsonObject; 26 | } 27 | 28 | @Override 29 | public BlockMatchRuleTest fromJson(JsonElement jsonElement) { 30 | JsonObject jsonObject = jsonElement.getAsJsonObject(); 31 | 32 | Material material = Registry.MATERIAL.get(NamespacedKey.fromString(jsonObject.getAsJsonPrimitive("value").getAsString())); 33 | 34 | return new BlockMatchRuleTest(material); 35 | } 36 | }; 37 | 38 | private BlockMatchRuleTestType() { 39 | } 40 | 41 | @Override 42 | public @NotNull Parser getParser() { 43 | return PARSER; 44 | } 45 | 46 | @NotNull 47 | @Override 48 | public NamespacedKey getKey() { 49 | return KEY; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/ruletest/BlockStateMatchRuleTestType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.ruletest; 2 | 3 | import com.google.gson.JsonElement; 4 | import com.google.gson.JsonObject; 5 | import de.derfrzocker.feature.api.RuleTest; 6 | import de.derfrzocker.feature.api.RuleTestType; 7 | import de.derfrzocker.feature.api.util.Parser; 8 | import org.bukkit.Bukkit; 9 | import org.bukkit.NamespacedKey; 10 | import org.bukkit.block.data.BlockData; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | public class BlockStateMatchRuleTestType implements RuleTestType { 14 | public static final BlockStateMatchRuleTestType INSTANCE = new BlockStateMatchRuleTestType(); 15 | private static final NamespacedKey KEY = NamespacedKey.minecraft("blockstate_match"); 16 | private static final Parser PARSER = new Parser<>() { 17 | @Override 18 | public JsonElement toJson(RuleTest v) { 19 | BlockStateMatchRuleTest value = (BlockStateMatchRuleTest) v; 20 | JsonObject jsonObject = new JsonObject(); 21 | 22 | jsonObject.addProperty("value", value.getBlockData().getAsString()); 23 | 24 | return jsonObject; 25 | } 26 | 27 | @Override 28 | public BlockStateMatchRuleTest fromJson(JsonElement jsonElement) { 29 | JsonObject jsonObject = jsonElement.getAsJsonObject(); 30 | 31 | BlockData blockData = Bukkit.createBlockData(jsonObject.getAsJsonPrimitive("value").getAsString()); 32 | 33 | return new BlockStateMatchRuleTest(blockData); 34 | } 35 | }; 36 | 37 | private BlockStateMatchRuleTestType() { 38 | } 39 | 40 | @Override 41 | public @NotNull Parser getParser() { 42 | return PARSER; 43 | } 44 | 45 | @NotNull 46 | @Override 47 | public NamespacedKey getKey() { 48 | return KEY; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/ruletest/TagMatchRuleTestType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.ruletest; 2 | 3 | import com.google.gson.JsonElement; 4 | import com.google.gson.JsonObject; 5 | import de.derfrzocker.feature.api.RuleTest; 6 | import de.derfrzocker.feature.api.RuleTestType; 7 | import de.derfrzocker.feature.api.util.Parser; 8 | import org.bukkit.NamespacedKey; 9 | import org.jetbrains.annotations.NotNull; 10 | 11 | public class TagMatchRuleTestType implements RuleTestType { 12 | public static final TagMatchRuleTestType INSTANCE = new TagMatchRuleTestType(); 13 | private static final NamespacedKey KEY = NamespacedKey.minecraft("tag_match"); 14 | private static final Parser PARSER = new Parser<>() { 15 | @Override 16 | public JsonElement toJson(RuleTest v) { 17 | TagMatchRuleTest value = (TagMatchRuleTest) v; 18 | JsonObject jsonObject = new JsonObject(); 19 | 20 | jsonObject.addProperty("value", value.getTag().toString()); 21 | 22 | return jsonObject; 23 | } 24 | 25 | @Override 26 | public RuleTest fromJson(JsonElement jsonElement) { 27 | JsonObject jsonObject = jsonElement.getAsJsonObject(); 28 | 29 | NamespacedKey tag = NamespacedKey.fromString(jsonObject.get("value").getAsString()); 30 | 31 | return new TagMatchRuleTest(tag); 32 | } 33 | }; 34 | 35 | private TagMatchRuleTestType() { 36 | } 37 | 38 | @Override 39 | public @NotNull Parser getParser() { 40 | return PARSER; 41 | } 42 | 43 | @NotNull 44 | @Override 45 | public NamespacedKey getKey() { 46 | return KEY; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/util/ValueLocationUtil.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.util; 2 | 3 | import de.derfrzocker.feature.api.Configuration; 4 | import de.derfrzocker.feature.api.PlacementModifierConfiguration; 5 | import de.derfrzocker.feature.api.Setting; 6 | import de.derfrzocker.feature.api.Value; 7 | import de.derfrzocker.feature.api.ValueLocation; 8 | import de.derfrzocker.ore.control.api.config.Config; 9 | 10 | import java.util.Optional; 11 | 12 | public final class ValueLocationUtil { 13 | 14 | private ValueLocationUtil() { 15 | } 16 | 17 | public static Optional setValueLocation(Optional configOptional, ValueLocation valueLocation) { 18 | configOptional.ifPresent(config -> { 19 | setValueLocation(config.getFeature(), valueLocation); 20 | 21 | if (config.getPlacements() != null) { 22 | for (PlacementModifierConfiguration placementConfig : config.getPlacements().values()) { 23 | setValueLocation(placementConfig, valueLocation); 24 | } 25 | } 26 | }); 27 | 28 | return configOptional; 29 | } 30 | 31 | public static void setValueLocation(Configuration configuration, ValueLocation valueLocation) { 32 | if (configuration == null) { 33 | return; 34 | } 35 | 36 | for (Setting setting : configuration.getSettings()) { 37 | Value value = configuration.getValue(setting); 38 | if (value != null) { 39 | value.setValueLocation(valueLocation); 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/bool/BooleanType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.bool; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | 5 | public abstract class BooleanType implements ValueType { 6 | } 7 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/bool/BooleanValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.bool; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | 5 | public abstract class BooleanValue extends AbstractValue { 6 | 7 | @Override 8 | public abstract BooleanValue clone(); 9 | } 10 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/bool/FixedBooleanType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.bool; 2 | 3 | import com.google.gson.JsonElement; 4 | import com.google.gson.JsonObject; 5 | import de.derfrzocker.feature.api.util.Parser; 6 | import org.bukkit.NamespacedKey; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | public class FixedBooleanType extends BooleanType { 10 | 11 | public static final NamespacedKey KEY = NamespacedKey.fromString("feature:fixed_boolean"); 12 | public static final FixedBooleanType INSTANCE = new FixedBooleanType(); 13 | public static final Parser PARSER = new Parser<>() { 14 | @Override 15 | public JsonElement toJson(BooleanValue v) { 16 | FixedBooleanValue value = (FixedBooleanValue) v; 17 | JsonObject jsonObject = new JsonObject(); 18 | 19 | jsonObject.addProperty("value", value.getValue()); 20 | 21 | return jsonObject; 22 | } 23 | 24 | @Override 25 | public FixedBooleanValue fromJson(JsonElement jsonElement) { 26 | JsonObject jsonObject = jsonElement.getAsJsonObject(); 27 | 28 | boolean value = false; 29 | if (jsonObject.has("value")) { 30 | value = jsonObject.get("value").getAsBoolean(); 31 | } 32 | 33 | return new FixedBooleanValue(value); 34 | } 35 | }; 36 | 37 | private FixedBooleanType() { 38 | } 39 | 40 | @Override 41 | public Parser getParser() { 42 | return PARSER; 43 | } 44 | 45 | @Override 46 | public FixedBooleanValue createNewValue() { 47 | return new FixedBooleanValue(false); 48 | } 49 | 50 | @NotNull 51 | @Override 52 | public NamespacedKey getKey() { 53 | return KEY; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/bool/FixedBooleanValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.bool; 2 | 3 | import de.derfrzocker.feature.api.util.traverser.message.StringFormatter; 4 | import de.derfrzocker.feature.api.util.traverser.message.TraversKey; 5 | import de.derfrzocker.feature.common.util.MessageTraversUtil; 6 | import org.bukkit.generator.LimitedRegion; 7 | import org.bukkit.generator.WorldInfo; 8 | import org.bukkit.util.BlockVector; 9 | import org.jetbrains.annotations.NotNull; 10 | 11 | import java.util.List; 12 | import java.util.Random; 13 | 14 | public class FixedBooleanValue extends BooleanValue { 15 | 16 | private boolean value; 17 | private boolean dirty = false; 18 | 19 | public FixedBooleanValue(boolean value) { 20 | this.value = value; 21 | } 22 | 23 | @Override 24 | public FixedBooleanType getValueType() { 25 | return FixedBooleanType.INSTANCE; 26 | } 27 | 28 | @Override 29 | public Boolean getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 30 | return value; 31 | } 32 | 33 | @Override 34 | public boolean isDirty() { 35 | return dirty; 36 | } 37 | 38 | @Override 39 | public void saved() { 40 | dirty = false; 41 | } 42 | 43 | public boolean getValue() { 44 | return value; 45 | } 46 | 47 | public void setValue(boolean value) { 48 | this.value = value; 49 | dirty = true; 50 | } 51 | 52 | @Override 53 | public FixedBooleanValue clone() { 54 | return new FixedBooleanValue(value); 55 | } 56 | 57 | @Override 58 | public @NotNull List<@NotNull String> traverse(@NotNull StringFormatter formatter, int depth, @NotNull TraversKey key) { 59 | return MessageTraversUtil.single(formatter, depth, key, getValue()); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/number/FixedFloatType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.number; 2 | 3 | import com.google.gson.JsonElement; 4 | import com.google.gson.JsonObject; 5 | import de.derfrzocker.feature.api.util.Parser; 6 | import org.bukkit.NamespacedKey; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | public class FixedFloatType extends FloatType { 10 | 11 | public static final NamespacedKey KEY = NamespacedKey.fromString("feature:fixed_float"); 12 | public static final FixedFloatType INSTANCE = new FixedFloatType(); 13 | public static final Parser PARSER = new Parser<>() { 14 | 15 | @Override 16 | public JsonElement toJson(FloatValue v) { 17 | FixedFloatValue value = (FixedFloatValue) v; 18 | JsonObject jsonObject = new JsonObject(); 19 | 20 | jsonObject.addProperty("value", value.getValue()); 21 | 22 | return jsonObject; 23 | } 24 | 25 | @Override 26 | public FixedFloatValue fromJson(JsonElement jsonElement) { 27 | JsonObject jsonObject = jsonElement.getAsJsonObject(); 28 | 29 | float value = 0f; 30 | if (jsonObject.has("value")) { 31 | value = jsonObject.get("value").getAsFloat(); 32 | } 33 | 34 | return new FixedFloatValue(value); 35 | } 36 | }; 37 | 38 | private FixedFloatType() { 39 | } 40 | 41 | @Override 42 | public Parser getParser() { 43 | return PARSER; 44 | } 45 | 46 | @Override 47 | public FixedFloatValue createNewValue() { 48 | return new FixedFloatValue(0); 49 | } 50 | 51 | @NotNull 52 | @Override 53 | public NamespacedKey getKey() { 54 | return KEY; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/number/FixedFloatValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.number; 2 | 3 | import de.derfrzocker.feature.api.util.traverser.message.StringFormatter; 4 | import de.derfrzocker.feature.api.util.traverser.message.TraversKey; 5 | import de.derfrzocker.feature.common.util.MessageTraversUtil; 6 | import org.bukkit.generator.LimitedRegion; 7 | import org.bukkit.generator.WorldInfo; 8 | import org.bukkit.util.BlockVector; 9 | import org.jetbrains.annotations.NotNull; 10 | 11 | import java.util.List; 12 | import java.util.Random; 13 | 14 | public class FixedFloatValue extends FloatValue { 15 | 16 | private float value; 17 | private boolean dirty = false; 18 | 19 | public FixedFloatValue(float value) { 20 | this.value = value; 21 | } 22 | 23 | @Override 24 | public FixedFloatType getValueType() { 25 | return FixedFloatType.INSTANCE; 26 | } 27 | 28 | @Override 29 | public Float getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 30 | return value; 31 | } 32 | 33 | @Override 34 | public boolean isDirty() { 35 | return dirty; 36 | } 37 | 38 | @Override 39 | public void saved() { 40 | dirty = false; 41 | } 42 | 43 | public float getValue() { 44 | return value; 45 | } 46 | 47 | public void setValue(float value) { 48 | this.value = value; 49 | dirty = true; 50 | } 51 | 52 | @Override 53 | public FixedFloatValue clone() { 54 | return new FixedFloatValue(value); 55 | } 56 | 57 | @Override 58 | public @NotNull List<@NotNull String> traverse(@NotNull StringFormatter formatter, int depth, @NotNull TraversKey key) { 59 | return MessageTraversUtil.single(formatter, depth, key, getValue()); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/number/FloatType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.number; 2 | 3 | public abstract class FloatType extends NumberType { 4 | } 5 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/number/FloatValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.number; 2 | 3 | public abstract class FloatValue extends NumberValue { 4 | 5 | @Override 6 | public abstract FloatValue clone(); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/number/IntegerType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.number; 2 | 3 | public abstract class IntegerType extends NumberType { 4 | } 5 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/number/IntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.number; 2 | 3 | public abstract class IntegerValue extends NumberValue { 4 | 5 | @Override 6 | public abstract IntegerValue clone(); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/number/NumberType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.number; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | 5 | public abstract class NumberType, T extends NumberType, O extends Number> implements ValueType { 6 | } 7 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/number/NumberValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.number; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | 5 | public abstract class NumberValue, T extends NumberType, O extends Number> extends AbstractValue { 6 | 7 | @Override 8 | public abstract NumberValue clone(); 9 | } 10 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/number/integer/Exp4jIntegerType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.number.integer; 2 | 3 | import com.google.gson.JsonElement; 4 | import com.google.gson.JsonObject; 5 | import de.derfrzocker.feature.api.util.Parser; 6 | import de.derfrzocker.feature.common.value.number.IntegerType; 7 | import de.derfrzocker.feature.common.value.number.IntegerValue; 8 | import org.bukkit.NamespacedKey; 9 | import org.jetbrains.annotations.NotNull; 10 | 11 | public class Exp4jIntegerType extends IntegerType { 12 | 13 | public static final NamespacedKey KEY = NamespacedKey.fromString("feature:exp4f_integer"); 14 | public static final Exp4jIntegerType INSTANCE = new Exp4jIntegerType(); 15 | public static final Parser PARSER = new Parser<>() { 16 | @Override 17 | public JsonElement toJson(IntegerValue v) { 18 | Exp4jIntegerValue value = (Exp4jIntegerValue) v; 19 | JsonObject jsonObject = new JsonObject(); 20 | 21 | jsonObject.addProperty("value", value.getExpressionString()); 22 | 23 | return jsonObject; 24 | } 25 | 26 | @Override 27 | public Exp4jIntegerValue fromJson(JsonElement jsonElement) { 28 | JsonObject jsonObject = jsonElement.getAsJsonObject(); 29 | 30 | String value = null; 31 | if (jsonObject.has("value")) { 32 | value = jsonObject.get("value").getAsString(); 33 | } 34 | 35 | return new Exp4jIntegerValue(value); 36 | } 37 | }; 38 | 39 | private Exp4jIntegerType() { 40 | } 41 | 42 | @Override 43 | public Parser getParser() { 44 | return PARSER; 45 | } 46 | 47 | @Override 48 | public Exp4jIntegerValue createNewValue() { 49 | return new Exp4jIntegerValue("0"); 50 | } 51 | 52 | @NotNull 53 | @Override 54 | public NamespacedKey getKey() { 55 | return KEY; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/number/integer/FixedIntegerType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.number.integer; 2 | 3 | import com.google.gson.JsonElement; 4 | import com.google.gson.JsonObject; 5 | import de.derfrzocker.feature.api.util.Parser; 6 | import de.derfrzocker.feature.common.value.number.IntegerType; 7 | import de.derfrzocker.feature.common.value.number.IntegerValue; 8 | import org.bukkit.NamespacedKey; 9 | import org.jetbrains.annotations.NotNull; 10 | 11 | public class FixedIntegerType extends IntegerType { 12 | 13 | public static final NamespacedKey KEY = NamespacedKey.fromString("feature:fixed_integer"); 14 | public static final FixedIntegerType INSTANCE = new FixedIntegerType(); 15 | public static final Parser PARSER = new Parser<>() { 16 | @Override 17 | public JsonElement toJson(IntegerValue v) { 18 | FixedIntegerValue value = (FixedIntegerValue) v; 19 | JsonObject jsonObject = new JsonObject(); 20 | 21 | jsonObject.addProperty("value", value.getValue()); 22 | 23 | return jsonObject; 24 | } 25 | 26 | @Override 27 | public FixedIntegerValue fromJson(JsonElement jsonElement) { 28 | JsonObject jsonObject = jsonElement.getAsJsonObject(); 29 | 30 | int value = 0; 31 | if (jsonObject.has("value")) { 32 | value = jsonObject.get("value").getAsInt(); 33 | } 34 | 35 | return new FixedIntegerValue(value); 36 | } 37 | }; 38 | 39 | private FixedIntegerType() { 40 | } 41 | 42 | @Override 43 | public Parser getParser() { 44 | return PARSER; 45 | } 46 | 47 | @Override 48 | public FixedIntegerValue createNewValue() { 49 | return new FixedIntegerValue(0); 50 | } 51 | 52 | @NotNull 53 | @Override 54 | public NamespacedKey getKey() { 55 | return KEY; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/number/integer/FixedIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.number.integer; 2 | 3 | import de.derfrzocker.feature.api.util.traverser.message.StringFormatter; 4 | import de.derfrzocker.feature.api.util.traverser.message.TraversKey; 5 | import de.derfrzocker.feature.common.util.MessageTraversUtil; 6 | import de.derfrzocker.feature.common.value.number.IntegerValue; 7 | import org.bukkit.generator.LimitedRegion; 8 | import org.bukkit.generator.WorldInfo; 9 | import org.bukkit.util.BlockVector; 10 | import org.jetbrains.annotations.NotNull; 11 | 12 | import java.util.List; 13 | import java.util.Random; 14 | 15 | public class FixedIntegerValue extends IntegerValue { 16 | 17 | private int value; 18 | private boolean dirty = false; 19 | 20 | public FixedIntegerValue(int value) { 21 | this.value = value; 22 | } 23 | 24 | @Override 25 | public FixedIntegerType getValueType() { 26 | return FixedIntegerType.INSTANCE; 27 | } 28 | 29 | @Override 30 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 31 | return value; 32 | } 33 | 34 | @Override 35 | public boolean isDirty() { 36 | return dirty; 37 | } 38 | 39 | @Override 40 | public void saved() { 41 | dirty = false; 42 | } 43 | 44 | public int getValue() { 45 | return value; 46 | } 47 | 48 | public void setValue(int value) { 49 | this.value = value; 50 | dirty = true; 51 | } 52 | 53 | @Override 54 | public FixedIntegerValue clone() { 55 | return new FixedIntegerValue(value); 56 | } 57 | 58 | @Override 59 | public @NotNull List<@NotNull String> traverse(@NotNull StringFormatter formatter, int depth, @NotNull TraversKey key) { 60 | return MessageTraversUtil.single(formatter, depth, key, getValue()); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/target/TargetListType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.target; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | 5 | import java.util.List; 6 | 7 | public abstract class TargetListType implements ValueType> { 8 | } 9 | -------------------------------------------------------------------------------- /common/src/main/java/de/derfrzocker/feature/common/value/target/TargetListValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.common.value.target; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | 5 | import java.util.List; 6 | 7 | public abstract class TargetListValue extends AbstractValue> { 8 | 9 | @Override 10 | public abstract TargetListValue clone(); 11 | } 12 | -------------------------------------------------------------------------------- /impl/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | 8 | ore-control-parent 9 | de.derfrzocker 10 | ${revision} 11 | 12 | 13 | 14 | v1_18_R1 15 | v1_18_R2 16 | v1_19_R1 17 | v1_19_R2 18 | v1_19_R3 19 | v1_20_R1 20 | v1_20_R2 21 | v1_20_R3 22 | v1_20_R4 23 | v1_21_R1 24 | v1_21_R2 25 | v1_21_R3 26 | v1_21_R4 27 | 28 | 29 | ore-control-impl 30 | pom 31 | 32 | -------------------------------------------------------------------------------- /impl/v1_18_R1/src/main/java/de/derfrzocker/feature/impl/v1_18_R1/value/heightmap/HeightmapType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_18_R1.value.heightmap; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_18_R1/src/main/java/de/derfrzocker/feature/impl/v1_18_R1/value/heightmap/HeightmapValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_18_R1.value.heightmap; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract HeightmapValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_18_R1/src/main/java/de/derfrzocker/feature/impl/v1_18_R1/value/offset/NMSAboveBottomOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_18_R1.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.AboveBottomOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import org.bukkit.craftbukkit.v1_18_R1.generator.CraftLimitedRegion; 7 | import org.bukkit.generator.LimitedRegion; 8 | import org.bukkit.generator.WorldInfo; 9 | import org.bukkit.util.BlockVector; 10 | import org.jetbrains.annotations.NotNull; 11 | 12 | import java.util.Random; 13 | 14 | public class NMSAboveBottomOffsetIntegerValue extends AboveBottomOffsetIntegerValue { 15 | 16 | public NMSAboveBottomOffsetIntegerValue(IntegerValue base) { 17 | super(base); 18 | } 19 | 20 | @Override 21 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 22 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 23 | 24 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 25 | 26 | return Math.max(level.getMinBuildHeight(), level.getLevel().getChunkSource().chunkMap.generator.getMinY()) + baseValue; 27 | } 28 | 29 | @Override 30 | public AboveBottomOffsetIntegerValue clone() { 31 | return new NMSAboveBottomOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /impl/v1_18_R1/src/main/java/de/derfrzocker/feature/impl/v1_18_R1/value/offset/NMSBelowTopOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_18_R1.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.BelowTopOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import net.minecraft.world.level.chunk.ChunkGenerator; 7 | import org.bukkit.craftbukkit.v1_18_R1.generator.CraftLimitedRegion; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | import java.util.Random; 14 | 15 | public class NMSBelowTopOffsetIntegerValue extends BelowTopOffsetIntegerValue { 16 | 17 | public NMSBelowTopOffsetIntegerValue(IntegerValue base) { 18 | super(base); 19 | } 20 | 21 | @Override 22 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 23 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 24 | 25 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 26 | ChunkGenerator chunkGenerator = level.getLevel().getChunkSource().chunkMap.generator; 27 | 28 | return Math.min(level.getHeight(), chunkGenerator.getGenDepth()) - 1 + Math.max(level.getMinBuildHeight(), chunkGenerator.getMinY()) - baseValue; 29 | } 30 | 31 | @Override 32 | public NMSBelowTopOffsetIntegerValue clone() { 33 | return new NMSBelowTopOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /impl/v1_18_R1/src/main/java/de/derfrzocker/feature/impl/v1_18_R1/value/target/TargetType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_18_R1.value.target; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; 5 | 6 | public abstract class TargetType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_18_R1/src/main/java/de/derfrzocker/feature/impl/v1_18_R1/value/target/TargetValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_18_R1.value.target; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; 5 | 6 | public abstract class TargetValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract TargetValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_18_R1/src/main/java/de/derfrzocker/ore/control/impl/v1_18_R1/NMSReflectionNames.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_18_R1; 2 | 3 | public final class NMSReflectionNames { 4 | 5 | public final static String BIOME_GENERATION_SETTINGS_FEATURES = "e"; 6 | public final static String BIOME_GENERATION_SETTINGS_FEATURE_SET = "g"; 7 | public final static String WEIGHTED_LIST_INT_DISTRIBUTION = "b"; 8 | public final static String COUNT_PLACEMENT_COUNT = "c"; 9 | public final static String HEIGHT_RANGE_PLACEMENT_HEIGHT = "c"; 10 | public final static String RARITY_FILTER_CHANCE = "c"; 11 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_HEIGHTMAP = "c"; 12 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MIN_INCLUSIVE = "d"; 13 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MAX_INCLUSIVE = "e"; 14 | public final static String SURFACE_WATER_DEPTH_FILTER_MAX_WATER_DEPTH = "c"; 15 | public static final String CLAMPED_INT_SOURCE = "b"; 16 | public static final String CLAMPED_INT_MIN_INCLUSIVE = "f"; 17 | public static final String CLAMPED_INT_MAX_INCLUSIVE = "g"; 18 | public static final String CLAMPED_NORMAL_INT_MEAN = "b"; 19 | public static final String CLAMPED_NORMAL_INT_DEVIATION = "f"; 20 | 21 | private NMSReflectionNames() { 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /impl/v1_18_R1/src/main/java/de/derfrzocker/ore/control/impl/v1_18_R1/feature/generator/GlowstoneBlobFeatureGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_18_R1.feature.generator; 2 | 3 | import de.derfrzocker.feature.common.feature.generator.configuration.EmptyFeatureConfiguration; 4 | import de.derfrzocker.ore.control.api.Biome; 5 | import de.derfrzocker.ore.control.api.OreControlManager; 6 | import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; 7 | import org.bukkit.NamespacedKey; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | import java.util.Random; 14 | 15 | public class GlowstoneBlobFeatureGeneratorHook extends MinecraftFeatureGeneratorHook { 16 | 17 | public GlowstoneBlobFeatureGeneratorHook(@NotNull OreControlManager oreControlManager, Biome biome, NamespacedKey namespacedKey) { 18 | super(NoneFeatureConfiguration.CODEC, GLOWSTONE_BLOB, oreControlManager, "glowstone_blob", biome, namespacedKey); 19 | } 20 | 21 | @Override 22 | public NoneFeatureConfiguration createConfig(@NotNull NoneFeatureConfiguration defaultConfiguration, @NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion, @NotNull EmptyFeatureConfiguration configuration) { 23 | return defaultConfiguration; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_18_R2/src/main/java/de/derfrzocker/feature/impl/v1_18_R2/value/heightmap/HeightmapType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_18_R2.value.heightmap; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_18_R2/src/main/java/de/derfrzocker/feature/impl/v1_18_R2/value/heightmap/HeightmapValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_18_R2.value.heightmap; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract HeightmapValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_18_R2/src/main/java/de/derfrzocker/feature/impl/v1_18_R2/value/offset/NMSAboveBottomOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_18_R2.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.AboveBottomOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import org.bukkit.craftbukkit.v1_18_R2.generator.CraftLimitedRegion; 7 | import org.bukkit.generator.LimitedRegion; 8 | import org.bukkit.generator.WorldInfo; 9 | import org.bukkit.util.BlockVector; 10 | import org.jetbrains.annotations.NotNull; 11 | 12 | import java.util.Random; 13 | 14 | public class NMSAboveBottomOffsetIntegerValue extends AboveBottomOffsetIntegerValue { 15 | 16 | public NMSAboveBottomOffsetIntegerValue(IntegerValue base) { 17 | super(base); 18 | } 19 | 20 | @Override 21 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 22 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 23 | 24 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 25 | 26 | return Math.max(level.getMinBuildHeight(), level.getLevel().getChunkSource().chunkMap.generator.getMinY()) + baseValue; 27 | } 28 | 29 | @Override 30 | public AboveBottomOffsetIntegerValue clone() { 31 | return new NMSAboveBottomOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /impl/v1_18_R2/src/main/java/de/derfrzocker/feature/impl/v1_18_R2/value/offset/NMSBelowTopOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_18_R2.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.BelowTopOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import net.minecraft.world.level.chunk.ChunkGenerator; 7 | import org.bukkit.craftbukkit.v1_18_R2.generator.CraftLimitedRegion; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | import java.util.Random; 14 | 15 | public class NMSBelowTopOffsetIntegerValue extends BelowTopOffsetIntegerValue { 16 | 17 | public NMSBelowTopOffsetIntegerValue(IntegerValue base) { 18 | super(base); 19 | } 20 | 21 | @Override 22 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 23 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 24 | 25 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 26 | ChunkGenerator chunkGenerator = level.getLevel().getChunkSource().chunkMap.generator; 27 | 28 | return Math.min(level.getHeight(), chunkGenerator.getGenDepth()) - 1 + Math.max(level.getMinBuildHeight(), chunkGenerator.getMinY()) - baseValue; 29 | } 30 | 31 | @Override 32 | public NMSBelowTopOffsetIntegerValue clone() { 33 | return new NMSBelowTopOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /impl/v1_18_R2/src/main/java/de/derfrzocker/feature/impl/v1_18_R2/value/target/TargetType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_18_R2.value.target; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; 5 | 6 | public abstract class TargetType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_18_R2/src/main/java/de/derfrzocker/feature/impl/v1_18_R2/value/target/TargetValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_18_R2.value.target; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; 5 | 6 | public abstract class TargetValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract TargetValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_18_R2/src/main/java/de/derfrzocker/ore/control/impl/v1_18_R2/NMSReflectionNames.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_18_R2; 2 | 3 | public final class NMSReflectionNames { 4 | 5 | public final static String BIOME_GENERATION_SETTINGS_FEATURES = "e"; 6 | public final static String BIOME_GENERATION_SETTINGS_FEATURE_SET = "g"; 7 | public final static String WEIGHTED_LIST_INT_DISTRIBUTION = "b"; 8 | public final static String COUNT_PLACEMENT_COUNT = "c"; 9 | public final static String HEIGHT_RANGE_PLACEMENT_HEIGHT = "c"; 10 | public final static String RARITY_FILTER_CHANCE = "c"; 11 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_HEIGHTMAP = "c"; 12 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MIN_INCLUSIVE = "d"; 13 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MAX_INCLUSIVE = "e"; 14 | public final static String SURFACE_WATER_DEPTH_FILTER_MAX_WATER_DEPTH = "c"; 15 | public static final String CLAMPED_INT_SOURCE = "b"; 16 | public static final String CLAMPED_INT_MIN_INCLUSIVE = "f"; 17 | public static final String CLAMPED_INT_MAX_INCLUSIVE = "g"; 18 | public static final String CLAMPED_NORMAL_INT_MEAN = "b"; 19 | public static final String CLAMPED_NORMAL_INT_DEVIATION = "f"; 20 | 21 | private NMSReflectionNames() { 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /impl/v1_18_R2/src/main/java/de/derfrzocker/ore/control/impl/v1_18_R2/feature/generator/GlowstoneBlobFeatureGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_18_R2.feature.generator; 2 | 3 | import de.derfrzocker.feature.common.feature.generator.configuration.EmptyFeatureConfiguration; 4 | import de.derfrzocker.ore.control.api.Biome; 5 | import de.derfrzocker.ore.control.api.OreControlManager; 6 | import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; 7 | import org.bukkit.NamespacedKey; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | import java.util.Random; 14 | 15 | public class GlowstoneBlobFeatureGeneratorHook extends MinecraftFeatureGeneratorHook { 16 | 17 | public GlowstoneBlobFeatureGeneratorHook(@NotNull OreControlManager oreControlManager, Biome biome, NamespacedKey namespacedKey) { 18 | super(NoneFeatureConfiguration.CODEC, GLOWSTONE_BLOB, oreControlManager, "glowstone_blob", biome, namespacedKey); 19 | } 20 | 21 | @Override 22 | public NoneFeatureConfiguration createConfig(@NotNull NoneFeatureConfiguration defaultConfiguration, @NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion, @NotNull EmptyFeatureConfiguration configuration) { 23 | return defaultConfiguration; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_19_R1/src/main/java/de/derfrzocker/feature/impl/v1_19_R1/value/heightmap/HeightmapType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R1.value.heightmap; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_19_R1/src/main/java/de/derfrzocker/feature/impl/v1_19_R1/value/heightmap/HeightmapValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R1.value.heightmap; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract HeightmapValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_19_R1/src/main/java/de/derfrzocker/feature/impl/v1_19_R1/value/offset/NMSAboveBottomOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R1.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.AboveBottomOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import org.bukkit.craftbukkit.v1_19_R1.generator.CraftLimitedRegion; 7 | import org.bukkit.generator.LimitedRegion; 8 | import org.bukkit.generator.WorldInfo; 9 | import org.bukkit.util.BlockVector; 10 | import org.jetbrains.annotations.NotNull; 11 | 12 | import java.util.Random; 13 | 14 | public class NMSAboveBottomOffsetIntegerValue extends AboveBottomOffsetIntegerValue { 15 | 16 | public NMSAboveBottomOffsetIntegerValue(IntegerValue base) { 17 | super(base); 18 | } 19 | 20 | @Override 21 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 22 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 23 | 24 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 25 | 26 | return Math.max(level.getMinBuildHeight(), level.getLevel().getChunkSource().chunkMap.generator.getMinY()) + baseValue; 27 | } 28 | 29 | @Override 30 | public AboveBottomOffsetIntegerValue clone() { 31 | return new NMSAboveBottomOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /impl/v1_19_R1/src/main/java/de/derfrzocker/feature/impl/v1_19_R1/value/offset/NMSBelowTopOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R1.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.BelowTopOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import net.minecraft.world.level.chunk.ChunkGenerator; 7 | import org.bukkit.craftbukkit.v1_19_R1.generator.CraftLimitedRegion; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | import java.util.Random; 14 | 15 | public class NMSBelowTopOffsetIntegerValue extends BelowTopOffsetIntegerValue { 16 | 17 | public NMSBelowTopOffsetIntegerValue(IntegerValue base) { 18 | super(base); 19 | } 20 | 21 | @Override 22 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 23 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 24 | 25 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 26 | ChunkGenerator chunkGenerator = level.getLevel().getChunkSource().chunkMap.generator; 27 | 28 | return Math.min(level.getHeight(), chunkGenerator.getGenDepth()) - 1 + Math.max(level.getMinBuildHeight(), chunkGenerator.getMinY()) - baseValue; 29 | } 30 | 31 | @Override 32 | public NMSBelowTopOffsetIntegerValue clone() { 33 | return new NMSBelowTopOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /impl/v1_19_R1/src/main/java/de/derfrzocker/feature/impl/v1_19_R1/value/target/TargetType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R1.value.target; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; 5 | 6 | public abstract class TargetType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_19_R1/src/main/java/de/derfrzocker/feature/impl/v1_19_R1/value/target/TargetValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R1.value.target; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; 5 | 6 | public abstract class TargetValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract TargetValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_19_R1/src/main/java/de/derfrzocker/ore/control/impl/v1_19_R1/NMSReflectionNames.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_19_R1; 2 | 3 | public final class NMSReflectionNames { 4 | 5 | public final static String BIOME_GENERATION_SETTINGS_FEATURES = "e"; 6 | public final static String BIOME_GENERATION_SETTINGS_FEATURE_SET = "g"; 7 | public final static String WEIGHTED_LIST_INT_DISTRIBUTION = "b"; 8 | public final static String COUNT_PLACEMENT_COUNT = "c"; 9 | public final static String HEIGHT_RANGE_PLACEMENT_HEIGHT = "c"; 10 | public final static String RARITY_FILTER_CHANCE = "c"; 11 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_HEIGHTMAP = "c"; 12 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MIN_INCLUSIVE = "d"; 13 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MAX_INCLUSIVE = "e"; 14 | public final static String SURFACE_WATER_DEPTH_FILTER_MAX_WATER_DEPTH = "c"; 15 | public static final String CLAMPED_INT_SOURCE = "b"; 16 | public static final String CLAMPED_INT_MIN_INCLUSIVE = "f"; 17 | public static final String CLAMPED_INT_MAX_INCLUSIVE = "g"; 18 | public static final String CLAMPED_NORMAL_INT_MEAN = "b"; 19 | public static final String CLAMPED_NORMAL_INT_DEVIATION = "f"; 20 | public static final String CHUNK_MAP_GENERATOR = "u"; 21 | public static final String NOISE_GENERATOR_SETTINGS = "g"; 22 | 23 | private NMSReflectionNames() { 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_19_R1/src/main/java/de/derfrzocker/ore/control/impl/v1_19_R1/feature/generator/GlowstoneBlobFeatureGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_19_R1.feature.generator; 2 | 3 | import de.derfrzocker.feature.common.feature.generator.configuration.EmptyFeatureConfiguration; 4 | import de.derfrzocker.ore.control.api.Biome; 5 | import de.derfrzocker.ore.control.api.OreControlManager; 6 | import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; 7 | import org.bukkit.NamespacedKey; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | import java.util.Random; 14 | 15 | public class GlowstoneBlobFeatureGeneratorHook extends MinecraftFeatureGeneratorHook { 16 | 17 | public GlowstoneBlobFeatureGeneratorHook(@NotNull OreControlManager oreControlManager, Biome biome, NamespacedKey namespacedKey) { 18 | super(NoneFeatureConfiguration.CODEC, GLOWSTONE_BLOB, oreControlManager, "glowstone_blob", biome, namespacedKey); 19 | } 20 | 21 | @Override 22 | public NoneFeatureConfiguration createConfig(@NotNull NoneFeatureConfiguration defaultConfiguration, @NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion, @NotNull EmptyFeatureConfiguration configuration) { 23 | return defaultConfiguration; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_19_R2/src/main/java/de/derfrzocker/feature/impl/v1_19_R2/value/heightmap/HeightmapType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R2.value.heightmap; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_19_R2/src/main/java/de/derfrzocker/feature/impl/v1_19_R2/value/heightmap/HeightmapValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R2.value.heightmap; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract HeightmapValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_19_R2/src/main/java/de/derfrzocker/feature/impl/v1_19_R2/value/offset/NMSAboveBottomOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R2.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.AboveBottomOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import org.bukkit.craftbukkit.v1_19_R2.generator.CraftLimitedRegion; 7 | import org.bukkit.generator.LimitedRegion; 8 | import org.bukkit.generator.WorldInfo; 9 | import org.bukkit.util.BlockVector; 10 | import org.jetbrains.annotations.NotNull; 11 | 12 | import java.util.Random; 13 | 14 | public class NMSAboveBottomOffsetIntegerValue extends AboveBottomOffsetIntegerValue { 15 | 16 | public NMSAboveBottomOffsetIntegerValue(IntegerValue base) { 17 | super(base); 18 | } 19 | 20 | @Override 21 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 22 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 23 | 24 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 25 | 26 | return Math.max(level.getMinBuildHeight(), level.getLevel().getChunkSource().chunkMap.generator.getMinY()) + baseValue; 27 | } 28 | 29 | @Override 30 | public AboveBottomOffsetIntegerValue clone() { 31 | return new NMSAboveBottomOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /impl/v1_19_R2/src/main/java/de/derfrzocker/feature/impl/v1_19_R2/value/offset/NMSBelowTopOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R2.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.BelowTopOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import net.minecraft.world.level.chunk.ChunkGenerator; 7 | import org.bukkit.craftbukkit.v1_19_R2.generator.CraftLimitedRegion; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | import java.util.Random; 14 | 15 | public class NMSBelowTopOffsetIntegerValue extends BelowTopOffsetIntegerValue { 16 | 17 | public NMSBelowTopOffsetIntegerValue(IntegerValue base) { 18 | super(base); 19 | } 20 | 21 | @Override 22 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 23 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 24 | 25 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 26 | ChunkGenerator chunkGenerator = level.getLevel().getChunkSource().chunkMap.generator; 27 | 28 | return Math.min(level.getHeight(), chunkGenerator.getGenDepth()) - 1 + Math.max(level.getMinBuildHeight(), chunkGenerator.getMinY()) - baseValue; 29 | } 30 | 31 | @Override 32 | public NMSBelowTopOffsetIntegerValue clone() { 33 | return new NMSBelowTopOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /impl/v1_19_R2/src/main/java/de/derfrzocker/feature/impl/v1_19_R2/value/target/TargetType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R2.value.target; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; 5 | 6 | public abstract class TargetType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_19_R2/src/main/java/de/derfrzocker/feature/impl/v1_19_R2/value/target/TargetValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R2.value.target; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; 5 | 6 | public abstract class TargetValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract TargetValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_19_R2/src/main/java/de/derfrzocker/ore/control/impl/v1_19_R2/NMSReflectionNames.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_19_R2; 2 | 3 | public final class NMSReflectionNames { 4 | 5 | public final static String BIOME_GENERATION_SETTINGS_FEATURES = "e"; 6 | public final static String BIOME_GENERATION_SETTINGS_FEATURE_SET = "g"; 7 | public final static String WEIGHTED_LIST_INT_DISTRIBUTION = "b"; 8 | public final static String COUNT_PLACEMENT_COUNT = "c"; 9 | public final static String HEIGHT_RANGE_PLACEMENT_HEIGHT = "c"; 10 | public final static String RARITY_FILTER_CHANCE = "c"; 11 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_HEIGHTMAP = "c"; 12 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MIN_INCLUSIVE = "d"; 13 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MAX_INCLUSIVE = "e"; 14 | public final static String SURFACE_WATER_DEPTH_FILTER_MAX_WATER_DEPTH = "c"; 15 | public static final String CLAMPED_INT_SOURCE = "b"; 16 | public static final String CLAMPED_INT_MIN_INCLUSIVE = "f"; 17 | public static final String CLAMPED_INT_MAX_INCLUSIVE = "g"; 18 | public static final String CLAMPED_NORMAL_INT_MEAN = "b"; 19 | public static final String CLAMPED_NORMAL_INT_DEVIATION = "f"; 20 | public static final String CHUNK_MAP_GENERATOR = "u"; 21 | public static final String NOISE_GENERATOR_SETTINGS = "e"; 22 | 23 | private NMSReflectionNames() { 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_19_R2/src/main/java/de/derfrzocker/ore/control/impl/v1_19_R2/feature/generator/GlowstoneBlobFeatureGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_19_R2.feature.generator; 2 | 3 | import de.derfrzocker.feature.common.feature.generator.configuration.EmptyFeatureConfiguration; 4 | import de.derfrzocker.ore.control.api.Biome; 5 | import de.derfrzocker.ore.control.api.OreControlManager; 6 | import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; 7 | import org.bukkit.NamespacedKey; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | import java.util.Random; 14 | 15 | public class GlowstoneBlobFeatureGeneratorHook extends MinecraftFeatureGeneratorHook { 16 | 17 | public GlowstoneBlobFeatureGeneratorHook(@NotNull OreControlManager oreControlManager, Biome biome, NamespacedKey namespacedKey) { 18 | super(NoneFeatureConfiguration.CODEC, GLOWSTONE_BLOB, oreControlManager, "glowstone_blob", biome, namespacedKey); 19 | } 20 | 21 | @Override 22 | public NoneFeatureConfiguration createConfig(@NotNull NoneFeatureConfiguration defaultConfiguration, @NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion, @NotNull EmptyFeatureConfiguration configuration) { 23 | return defaultConfiguration; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_19_R3/src/main/java/de/derfrzocker/feature/impl/v1_19_R3/value/heightmap/HeightmapType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R3.value.heightmap; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_19_R3/src/main/java/de/derfrzocker/feature/impl/v1_19_R3/value/heightmap/HeightmapValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R3.value.heightmap; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract HeightmapValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_19_R3/src/main/java/de/derfrzocker/feature/impl/v1_19_R3/value/offset/NMSAboveBottomOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R3.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.AboveBottomOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import org.bukkit.craftbukkit.v1_19_R3.generator.CraftLimitedRegion; 7 | import org.bukkit.generator.LimitedRegion; 8 | import org.bukkit.generator.WorldInfo; 9 | import org.bukkit.util.BlockVector; 10 | import org.jetbrains.annotations.NotNull; 11 | 12 | import java.util.Random; 13 | 14 | public class NMSAboveBottomOffsetIntegerValue extends AboveBottomOffsetIntegerValue { 15 | 16 | public NMSAboveBottomOffsetIntegerValue(IntegerValue base) { 17 | super(base); 18 | } 19 | 20 | @Override 21 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 22 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 23 | 24 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 25 | 26 | return Math.max(level.getMinBuildHeight(), level.getLevel().getChunkSource().chunkMap.generator.getMinY()) + baseValue; 27 | } 28 | 29 | @Override 30 | public AboveBottomOffsetIntegerValue clone() { 31 | return new NMSAboveBottomOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /impl/v1_19_R3/src/main/java/de/derfrzocker/feature/impl/v1_19_R3/value/offset/NMSBelowTopOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_19_R3.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.BelowTopOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import net.minecraft.world.level.chunk.ChunkGenerator; 7 | import org.bukkit.craftbukkit.v1_19_R3.generator.CraftLimitedRegion; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | import java.util.Random; 14 | 15 | public class NMSBelowTopOffsetIntegerValue extends BelowTopOffsetIntegerValue { 16 | 17 | public NMSBelowTopOffsetIntegerValue(IntegerValue base) { 18 | super(base); 19 | } 20 | 21 | @Override 22 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 23 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 24 | 25 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 26 | ChunkGenerator chunkGenerator = level.getLevel().getChunkSource().chunkMap.generator; 27 | 28 | return Math.min(level.getHeight(), chunkGenerator.getGenDepth()) - 1 + Math.max(level.getMinBuildHeight(), chunkGenerator.getMinY()) - baseValue; 29 | } 30 | 31 | @Override 32 | public NMSBelowTopOffsetIntegerValue clone() { 33 | return new NMSBelowTopOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /impl/v1_19_R3/src/main/java/de/derfrzocker/ore/control/impl/v1_19_R3/NMSReflectionNames.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_19_R3; 2 | 3 | public final class NMSReflectionNames { 4 | 5 | public final static String BIOME_GENERATION_SETTINGS_FEATURES = "e"; 6 | public final static String BIOME_GENERATION_SETTINGS_FEATURE_SET = "g"; 7 | public final static String WEIGHTED_LIST_INT_DISTRIBUTION = "b"; 8 | public final static String COUNT_PLACEMENT_COUNT = "c"; 9 | public final static String HEIGHT_RANGE_PLACEMENT_HEIGHT = "c"; 10 | public final static String RARITY_FILTER_CHANCE = "c"; 11 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_HEIGHTMAP = "c"; 12 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MIN_INCLUSIVE = "d"; 13 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MAX_INCLUSIVE = "e"; 14 | public final static String SURFACE_WATER_DEPTH_FILTER_MAX_WATER_DEPTH = "c"; 15 | public static final String CLAMPED_INT_SOURCE = "b"; 16 | public static final String CLAMPED_INT_MIN_INCLUSIVE = "f"; 17 | public static final String CLAMPED_INT_MAX_INCLUSIVE = "g"; 18 | public static final String CLAMPED_NORMAL_INT_MEAN = "b"; 19 | public static final String CLAMPED_NORMAL_INT_DEVIATION = "f"; 20 | public static final String CHUNK_MAP_GENERATOR = "u"; 21 | public static final String NOISE_GENERATOR_SETTINGS = "e"; 22 | 23 | private NMSReflectionNames() { 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_19_R3/src/main/java/de/derfrzocker/ore/control/impl/v1_19_R3/feature/generator/EmptyConfigurationGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_19_R3.feature.generator; 2 | 3 | import de.derfrzocker.feature.common.feature.generator.configuration.EmptyFeatureConfiguration; 4 | import de.derfrzocker.ore.control.api.Biome; 5 | import de.derfrzocker.ore.control.api.OreControlManager; 6 | import net.minecraft.world.level.levelgen.feature.Feature; 7 | import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; 8 | import org.bukkit.NamespacedKey; 9 | import org.bukkit.generator.LimitedRegion; 10 | import org.bukkit.generator.WorldInfo; 11 | import org.bukkit.util.BlockVector; 12 | import org.jetbrains.annotations.NotNull; 13 | 14 | import java.util.Random; 15 | 16 | public class EmptyConfigurationGeneratorHook extends MinecraftFeatureGeneratorHook { 17 | 18 | private EmptyConfigurationGeneratorHook(Feature feature, @NotNull OreControlManager oreControlManager, @NotNull String name, Biome biome, NamespacedKey namespacedKey) { 19 | super(NoneFeatureConfiguration.CODEC, feature, oreControlManager, name, biome, namespacedKey); 20 | } 21 | 22 | public static EmptyConfigurationGeneratorHook createGlowstoneBlobHook(@NotNull OreControlManager oreControlManager, @NotNull NamespacedKey namespacedKey, @NotNull Biome biome) { 23 | return new EmptyConfigurationGeneratorHook(GLOWSTONE_BLOB, oreControlManager, "glowstone_blob", biome, namespacedKey); 24 | } 25 | 26 | @Override 27 | public NoneFeatureConfiguration createConfig(@NotNull NoneFeatureConfiguration defaultConfiguration, @NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion, @NotNull EmptyFeatureConfiguration configuration) { 28 | return defaultConfiguration; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /impl/v1_20_R1/src/main/java/de/derfrzocker/feature/impl/v1_20_R1/value/heightmap/HeightmapType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R1.value.heightmap; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_20_R1/src/main/java/de/derfrzocker/feature/impl/v1_20_R1/value/heightmap/HeightmapValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R1.value.heightmap; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract HeightmapValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_20_R1/src/main/java/de/derfrzocker/feature/impl/v1_20_R1/value/offset/NMSAboveBottomOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R1.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.AboveBottomOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import org.bukkit.craftbukkit.v1_20_R1.generator.CraftLimitedRegion; 7 | import org.bukkit.generator.LimitedRegion; 8 | import org.bukkit.generator.WorldInfo; 9 | import org.bukkit.util.BlockVector; 10 | import org.jetbrains.annotations.NotNull; 11 | 12 | import java.util.Random; 13 | 14 | public class NMSAboveBottomOffsetIntegerValue extends AboveBottomOffsetIntegerValue { 15 | 16 | public NMSAboveBottomOffsetIntegerValue(IntegerValue base) { 17 | super(base); 18 | } 19 | 20 | @Override 21 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 22 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 23 | 24 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 25 | 26 | return Math.max(level.getMinBuildHeight(), level.getLevel().getChunkSource().chunkMap.generator.getMinY()) + baseValue; 27 | } 28 | 29 | @Override 30 | public AboveBottomOffsetIntegerValue clone() { 31 | return new NMSAboveBottomOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /impl/v1_20_R1/src/main/java/de/derfrzocker/feature/impl/v1_20_R1/value/offset/NMSBelowTopOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R1.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.BelowTopOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import net.minecraft.world.level.chunk.ChunkGenerator; 7 | import org.bukkit.craftbukkit.v1_20_R1.generator.CraftLimitedRegion; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | import java.util.Random; 14 | 15 | public class NMSBelowTopOffsetIntegerValue extends BelowTopOffsetIntegerValue { 16 | 17 | public NMSBelowTopOffsetIntegerValue(IntegerValue base) { 18 | super(base); 19 | } 20 | 21 | @Override 22 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 23 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 24 | 25 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 26 | ChunkGenerator chunkGenerator = level.getLevel().getChunkSource().chunkMap.generator; 27 | 28 | return Math.min(level.getHeight(), chunkGenerator.getGenDepth()) - 1 + Math.max(level.getMinBuildHeight(), chunkGenerator.getMinY()) - baseValue; 29 | } 30 | 31 | @Override 32 | public NMSBelowTopOffsetIntegerValue clone() { 33 | return new NMSBelowTopOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /impl/v1_20_R1/src/main/java/de/derfrzocker/ore/control/impl/v1_20_R1/NMSReflectionNames.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_20_R1; 2 | 3 | public final class NMSReflectionNames { 4 | 5 | public final static String BIOME_GENERATION_SETTINGS_FEATURES = "e"; 6 | public final static String BIOME_GENERATION_SETTINGS_FEATURE_SET = "g"; 7 | public final static String WEIGHTED_LIST_INT_DISTRIBUTION = "b"; 8 | public final static String COUNT_PLACEMENT_COUNT = "c"; 9 | public final static String HEIGHT_RANGE_PLACEMENT_HEIGHT = "c"; 10 | public final static String RARITY_FILTER_CHANCE = "c"; 11 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_HEIGHTMAP = "c"; 12 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MIN_INCLUSIVE = "d"; 13 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MAX_INCLUSIVE = "e"; 14 | public final static String SURFACE_WATER_DEPTH_FILTER_MAX_WATER_DEPTH = "c"; 15 | public static final String CLAMPED_INT_SOURCE = "b"; 16 | public static final String CLAMPED_INT_MIN_INCLUSIVE = "f"; 17 | public static final String CLAMPED_INT_MAX_INCLUSIVE = "g"; 18 | public static final String CLAMPED_NORMAL_INT_MEAN = "b"; 19 | public static final String CLAMPED_NORMAL_INT_DEVIATION = "f"; 20 | public static final String CHUNK_MAP_GENERATOR = "t"; 21 | public static final String NOISE_GENERATOR_SETTINGS = "e"; 22 | 23 | private NMSReflectionNames() { 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_20_R1/src/main/java/de/derfrzocker/ore/control/impl/v1_20_R1/feature/generator/EmptyConfigurationGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_20_R1.feature.generator; 2 | 3 | import de.derfrzocker.feature.common.feature.generator.configuration.EmptyFeatureConfiguration; 4 | import de.derfrzocker.ore.control.api.Biome; 5 | import de.derfrzocker.ore.control.api.OreControlManager; 6 | import net.minecraft.world.level.levelgen.feature.Feature; 7 | import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; 8 | import org.bukkit.NamespacedKey; 9 | import org.bukkit.generator.LimitedRegion; 10 | import org.bukkit.generator.WorldInfo; 11 | import org.bukkit.util.BlockVector; 12 | import org.jetbrains.annotations.NotNull; 13 | 14 | import java.util.Random; 15 | 16 | public class EmptyConfigurationGeneratorHook extends MinecraftFeatureGeneratorHook { 17 | 18 | private EmptyConfigurationGeneratorHook(Feature feature, @NotNull OreControlManager oreControlManager, @NotNull String name, Biome biome, NamespacedKey namespacedKey) { 19 | super(NoneFeatureConfiguration.CODEC, feature, oreControlManager, name, biome, namespacedKey); 20 | } 21 | 22 | public static EmptyConfigurationGeneratorHook createGlowstoneBlobHook(@NotNull OreControlManager oreControlManager, @NotNull NamespacedKey namespacedKey, @NotNull Biome biome) { 23 | return new EmptyConfigurationGeneratorHook(GLOWSTONE_BLOB, oreControlManager, "glowstone_blob", biome, namespacedKey); 24 | } 25 | 26 | @Override 27 | public NoneFeatureConfiguration createConfig(@NotNull NoneFeatureConfiguration defaultConfiguration, @NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion, @NotNull EmptyFeatureConfiguration configuration) { 28 | return defaultConfiguration; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /impl/v1_20_R2/src/main/java/de/derfrzocker/feature/impl/v1_20_R2/value/heightmap/HeightmapType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R2.value.heightmap; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_20_R2/src/main/java/de/derfrzocker/feature/impl/v1_20_R2/value/heightmap/HeightmapValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R2.value.heightmap; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract HeightmapValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_20_R2/src/main/java/de/derfrzocker/feature/impl/v1_20_R2/value/offset/NMSAboveBottomOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R2.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.AboveBottomOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import org.bukkit.craftbukkit.v1_20_R2.generator.CraftLimitedRegion; 7 | import org.bukkit.generator.LimitedRegion; 8 | import org.bukkit.generator.WorldInfo; 9 | import org.bukkit.util.BlockVector; 10 | import org.jetbrains.annotations.NotNull; 11 | 12 | import java.util.Random; 13 | 14 | public class NMSAboveBottomOffsetIntegerValue extends AboveBottomOffsetIntegerValue { 15 | 16 | public NMSAboveBottomOffsetIntegerValue(IntegerValue base) { 17 | super(base); 18 | } 19 | 20 | @Override 21 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 22 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 23 | 24 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 25 | 26 | return Math.max(level.getMinBuildHeight(), level.getLevel().getChunkSource().chunkMap.generator.getMinY()) + baseValue; 27 | } 28 | 29 | @Override 30 | public AboveBottomOffsetIntegerValue clone() { 31 | return new NMSAboveBottomOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /impl/v1_20_R2/src/main/java/de/derfrzocker/feature/impl/v1_20_R2/value/offset/NMSBelowTopOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R2.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.BelowTopOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import net.minecraft.world.level.chunk.ChunkGenerator; 7 | import org.bukkit.craftbukkit.v1_20_R2.generator.CraftLimitedRegion; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | import java.util.Random; 14 | 15 | public class NMSBelowTopOffsetIntegerValue extends BelowTopOffsetIntegerValue { 16 | 17 | public NMSBelowTopOffsetIntegerValue(IntegerValue base) { 18 | super(base); 19 | } 20 | 21 | @Override 22 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 23 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 24 | 25 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 26 | ChunkGenerator chunkGenerator = level.getLevel().getChunkSource().chunkMap.generator; 27 | 28 | return Math.min(level.getHeight(), chunkGenerator.getGenDepth()) - 1 + Math.max(level.getMinBuildHeight(), chunkGenerator.getMinY()) - baseValue; 29 | } 30 | 31 | @Override 32 | public NMSBelowTopOffsetIntegerValue clone() { 33 | return new NMSBelowTopOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /impl/v1_20_R2/src/main/java/de/derfrzocker/ore/control/impl/v1_20_R2/NMSReflectionNames.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_20_R2; 2 | 3 | public final class NMSReflectionNames { 4 | 5 | public final static String BIOME_GENERATION_SETTINGS_FEATURES = "e"; 6 | public final static String BIOME_GENERATION_SETTINGS_FEATURE_SET = "g"; 7 | public final static String WEIGHTED_LIST_INT_DISTRIBUTION = "b"; 8 | public final static String COUNT_PLACEMENT_COUNT = "c"; 9 | public final static String HEIGHT_RANGE_PLACEMENT_HEIGHT = "c"; 10 | public final static String RARITY_FILTER_CHANCE = "c"; 11 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_HEIGHTMAP = "c"; 12 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MIN_INCLUSIVE = "d"; 13 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MAX_INCLUSIVE = "e"; 14 | public final static String SURFACE_WATER_DEPTH_FILTER_MAX_WATER_DEPTH = "c"; 15 | public static final String CLAMPED_INT_SOURCE = "b"; 16 | public static final String CLAMPED_INT_MIN_INCLUSIVE = "f"; 17 | public static final String CLAMPED_INT_MAX_INCLUSIVE = "g"; 18 | public static final String CLAMPED_NORMAL_INT_MEAN = "b"; 19 | public static final String CLAMPED_NORMAL_INT_DEVIATION = "f"; 20 | public static final String CHUNK_MAP_GENERATOR = "t"; 21 | public static final String NOISE_GENERATOR_SETTINGS = "e"; 22 | 23 | private NMSReflectionNames() { 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_20_R2/src/main/java/de/derfrzocker/ore/control/impl/v1_20_R2/feature/generator/EmptyConfigurationGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_20_R2.feature.generator; 2 | 3 | import de.derfrzocker.feature.common.feature.generator.configuration.EmptyFeatureConfiguration; 4 | import de.derfrzocker.ore.control.api.Biome; 5 | import de.derfrzocker.ore.control.api.OreControlManager; 6 | import net.minecraft.world.level.levelgen.feature.Feature; 7 | import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; 8 | import org.bukkit.NamespacedKey; 9 | import org.bukkit.generator.LimitedRegion; 10 | import org.bukkit.generator.WorldInfo; 11 | import org.bukkit.util.BlockVector; 12 | import org.jetbrains.annotations.NotNull; 13 | 14 | import java.util.Random; 15 | 16 | public class EmptyConfigurationGeneratorHook extends MinecraftFeatureGeneratorHook { 17 | 18 | private EmptyConfigurationGeneratorHook(Feature feature, @NotNull OreControlManager oreControlManager, @NotNull String name, Biome biome, NamespacedKey namespacedKey) { 19 | super(NoneFeatureConfiguration.CODEC, feature, oreControlManager, name, biome, namespacedKey); 20 | } 21 | 22 | public static EmptyConfigurationGeneratorHook createGlowstoneBlobHook(@NotNull OreControlManager oreControlManager, @NotNull NamespacedKey namespacedKey, @NotNull Biome biome) { 23 | return new EmptyConfigurationGeneratorHook(GLOWSTONE_BLOB, oreControlManager, "glowstone_blob", biome, namespacedKey); 24 | } 25 | 26 | @Override 27 | public NoneFeatureConfiguration createConfig(@NotNull NoneFeatureConfiguration defaultConfiguration, @NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion, @NotNull EmptyFeatureConfiguration configuration) { 28 | return defaultConfiguration; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /impl/v1_20_R3/src/main/java/de/derfrzocker/feature/impl/v1_20_R3/value/heightmap/HeightmapType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R3.value.heightmap; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_20_R3/src/main/java/de/derfrzocker/feature/impl/v1_20_R3/value/heightmap/HeightmapValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R3.value.heightmap; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract HeightmapValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_20_R3/src/main/java/de/derfrzocker/feature/impl/v1_20_R3/value/offset/NMSAboveBottomOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R3.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.AboveBottomOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import org.bukkit.craftbukkit.v1_20_R3.generator.CraftLimitedRegion; 7 | import org.bukkit.generator.LimitedRegion; 8 | import org.bukkit.generator.WorldInfo; 9 | import org.bukkit.util.BlockVector; 10 | import org.jetbrains.annotations.NotNull; 11 | 12 | import java.util.Random; 13 | 14 | public class NMSAboveBottomOffsetIntegerValue extends AboveBottomOffsetIntegerValue { 15 | 16 | public NMSAboveBottomOffsetIntegerValue(IntegerValue base) { 17 | super(base); 18 | } 19 | 20 | @Override 21 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 22 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 23 | 24 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 25 | 26 | return Math.max(level.getMinBuildHeight(), level.getLevel().getChunkSource().chunkMap.generator.getMinY()) + baseValue; 27 | } 28 | 29 | @Override 30 | public AboveBottomOffsetIntegerValue clone() { 31 | return new NMSAboveBottomOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /impl/v1_20_R3/src/main/java/de/derfrzocker/feature/impl/v1_20_R3/value/offset/NMSBelowTopOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R3.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.BelowTopOffsetIntegerValue; 5 | import net.minecraft.world.level.WorldGenLevel; 6 | import net.minecraft.world.level.chunk.ChunkGenerator; 7 | import org.bukkit.craftbukkit.v1_20_R3.generator.CraftLimitedRegion; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | import java.util.Random; 14 | 15 | public class NMSBelowTopOffsetIntegerValue extends BelowTopOffsetIntegerValue { 16 | 17 | public NMSBelowTopOffsetIntegerValue(IntegerValue base) { 18 | super(base); 19 | } 20 | 21 | @Override 22 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 23 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 24 | 25 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 26 | ChunkGenerator chunkGenerator = level.getLevel().getChunkSource().chunkMap.generator; 27 | 28 | return Math.min(level.getHeight(), chunkGenerator.getGenDepth()) - 1 + Math.max(level.getMinBuildHeight(), chunkGenerator.getMinY()) - baseValue; 29 | } 30 | 31 | @Override 32 | public NMSBelowTopOffsetIntegerValue clone() { 33 | return new NMSBelowTopOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /impl/v1_20_R3/src/main/java/de/derfrzocker/ore/control/impl/v1_20_R3/NMSReflectionNames.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_20_R3; 2 | 3 | public final class NMSReflectionNames { 4 | 5 | public final static String BIOME_GENERATION_SETTINGS_FEATURES = "e"; 6 | public final static String BIOME_GENERATION_SETTINGS_FEATURE_SET = "g"; 7 | public final static String WEIGHTED_LIST_INT_DISTRIBUTION = "b"; 8 | public final static String COUNT_PLACEMENT_COUNT = "c"; 9 | public final static String HEIGHT_RANGE_PLACEMENT_HEIGHT = "c"; 10 | public final static String RARITY_FILTER_CHANCE = "c"; 11 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_HEIGHTMAP = "c"; 12 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MIN_INCLUSIVE = "d"; 13 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MAX_INCLUSIVE = "e"; 14 | public final static String SURFACE_WATER_DEPTH_FILTER_MAX_WATER_DEPTH = "c"; 15 | public static final String CLAMPED_INT_SOURCE = "b"; 16 | public static final String CLAMPED_INT_MIN_INCLUSIVE = "f"; 17 | public static final String CLAMPED_INT_MAX_INCLUSIVE = "g"; 18 | public static final String CLAMPED_NORMAL_INT_MEAN = "b"; 19 | public static final String CLAMPED_NORMAL_INT_DEVIATION = "f"; 20 | public static final String CHUNK_MAP_GENERATOR = "t"; 21 | public static final String NOISE_GENERATOR_SETTINGS = "e"; 22 | 23 | private NMSReflectionNames() { 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_20_R3/src/main/java/de/derfrzocker/ore/control/impl/v1_20_R3/feature/generator/EmptyConfigurationGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_20_R3.feature.generator; 2 | 3 | import de.derfrzocker.feature.common.feature.generator.configuration.EmptyFeatureConfiguration; 4 | import de.derfrzocker.ore.control.api.Biome; 5 | import de.derfrzocker.ore.control.api.OreControlManager; 6 | import net.minecraft.world.level.levelgen.feature.Feature; 7 | import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; 8 | import org.bukkit.NamespacedKey; 9 | import org.bukkit.generator.LimitedRegion; 10 | import org.bukkit.generator.WorldInfo; 11 | import org.bukkit.util.BlockVector; 12 | import org.jetbrains.annotations.NotNull; 13 | 14 | import java.util.Random; 15 | 16 | public class EmptyConfigurationGeneratorHook extends MinecraftFeatureGeneratorHook { 17 | 18 | private EmptyConfigurationGeneratorHook(Feature feature, @NotNull OreControlManager oreControlManager, @NotNull String name, Biome biome, NamespacedKey namespacedKey) { 19 | super(NoneFeatureConfiguration.CODEC, feature, oreControlManager, name, biome, namespacedKey); 20 | } 21 | 22 | public static EmptyConfigurationGeneratorHook createGlowstoneBlobHook(@NotNull OreControlManager oreControlManager, @NotNull NamespacedKey namespacedKey, @NotNull Biome biome) { 23 | return new EmptyConfigurationGeneratorHook(GLOWSTONE_BLOB, oreControlManager, "glowstone_blob", biome, namespacedKey); 24 | } 25 | 26 | @Override 27 | public NoneFeatureConfiguration createConfig(@NotNull NoneFeatureConfiguration defaultConfiguration, @NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion, @NotNull EmptyFeatureConfiguration configuration) { 28 | return defaultConfiguration; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /impl/v1_20_R4/src/main/java/de/derfrzocker/feature/impl/v1_20_R4/value/heightmap/HeightmapType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R4.value.heightmap; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_20_R4/src/main/java/de/derfrzocker/feature/impl/v1_20_R4/value/heightmap/HeightmapValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R4.value.heightmap; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract HeightmapValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_20_R4/src/main/java/de/derfrzocker/feature/impl/v1_20_R4/value/offset/NMSAboveBottomOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R4.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.AboveBottomOffsetIntegerValue; 5 | import java.util.Random; 6 | import net.minecraft.world.level.WorldGenLevel; 7 | import org.bukkit.craftbukkit.v1_20_R4.generator.CraftLimitedRegion; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | public class NMSAboveBottomOffsetIntegerValue extends AboveBottomOffsetIntegerValue { 14 | 15 | public NMSAboveBottomOffsetIntegerValue(IntegerValue base) { 16 | super(base); 17 | } 18 | 19 | @Override 20 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 21 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 22 | 23 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 24 | 25 | return Math.max(level.getMinBuildHeight(), level.getLevel().getChunkSource().chunkMap.generator.getMinY()) + baseValue; 26 | } 27 | 28 | @Override 29 | public AboveBottomOffsetIntegerValue clone() { 30 | return new NMSAboveBottomOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /impl/v1_20_R4/src/main/java/de/derfrzocker/feature/impl/v1_20_R4/value/offset/NMSBelowTopOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_20_R4.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.BelowTopOffsetIntegerValue; 5 | import java.util.Random; 6 | import net.minecraft.world.level.WorldGenLevel; 7 | import net.minecraft.world.level.chunk.ChunkGenerator; 8 | import org.bukkit.craftbukkit.v1_20_R4.generator.CraftLimitedRegion; 9 | import org.bukkit.generator.LimitedRegion; 10 | import org.bukkit.generator.WorldInfo; 11 | import org.bukkit.util.BlockVector; 12 | import org.jetbrains.annotations.NotNull; 13 | 14 | public class NMSBelowTopOffsetIntegerValue extends BelowTopOffsetIntegerValue { 15 | 16 | public NMSBelowTopOffsetIntegerValue(IntegerValue base) { 17 | super(base); 18 | } 19 | 20 | @Override 21 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 22 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 23 | 24 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 25 | ChunkGenerator chunkGenerator = level.getLevel().getChunkSource().chunkMap.generator; 26 | 27 | return Math.min(level.getHeight(), chunkGenerator.getGenDepth()) - 1 + Math.max(level.getMinBuildHeight(), chunkGenerator.getMinY()) - baseValue; 28 | } 29 | 30 | @Override 31 | public NMSBelowTopOffsetIntegerValue clone() { 32 | return new NMSBelowTopOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /impl/v1_20_R4/src/main/java/de/derfrzocker/ore/control/impl/v1_20_R4/NMSReflectionNames.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_20_R4; 2 | 3 | public final class NMSReflectionNames { 4 | 5 | public final static String BIOME_GENERATION_SETTINGS_FEATURES = "e"; 6 | public final static String BIOME_GENERATION_SETTINGS_FEATURE_SET = "g"; 7 | public final static String WEIGHTED_LIST_INT_DISTRIBUTION = "b"; 8 | public final static String COUNT_PLACEMENT_COUNT = "c"; 9 | public final static String HEIGHT_RANGE_PLACEMENT_HEIGHT = "c"; 10 | public final static String RARITY_FILTER_CHANCE = "c"; 11 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_HEIGHTMAP = "c"; 12 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MIN_INCLUSIVE = "d"; 13 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MAX_INCLUSIVE = "e"; 14 | public final static String SURFACE_WATER_DEPTH_FILTER_MAX_WATER_DEPTH = "c"; 15 | public static final String CLAMPED_INT_SOURCE = "b"; 16 | public static final String CLAMPED_INT_MIN_INCLUSIVE = "f"; 17 | public static final String CLAMPED_INT_MAX_INCLUSIVE = "g"; 18 | public static final String CLAMPED_NORMAL_INT_MEAN = "b"; 19 | public static final String CLAMPED_NORMAL_INT_DEVIATION = "f"; 20 | public static final String CHUNK_MAP_GENERATOR = "t"; 21 | public static final String NOISE_GENERATOR_SETTINGS = "e"; 22 | 23 | private NMSReflectionNames() { 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_20_R4/src/main/java/de/derfrzocker/ore/control/impl/v1_20_R4/feature/generator/EmptyConfigurationGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_20_R4.feature.generator; 2 | 3 | import de.derfrzocker.feature.common.feature.generator.configuration.EmptyFeatureConfiguration; 4 | import de.derfrzocker.ore.control.api.Biome; 5 | import de.derfrzocker.ore.control.api.OreControlManager; 6 | import java.util.Random; 7 | import net.minecraft.world.level.levelgen.feature.Feature; 8 | import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; 9 | import org.bukkit.NamespacedKey; 10 | import org.bukkit.generator.LimitedRegion; 11 | import org.bukkit.generator.WorldInfo; 12 | import org.bukkit.util.BlockVector; 13 | import org.jetbrains.annotations.NotNull; 14 | 15 | public class EmptyConfigurationGeneratorHook extends MinecraftFeatureGeneratorHook { 16 | 17 | private EmptyConfigurationGeneratorHook(Feature feature, @NotNull OreControlManager oreControlManager, @NotNull String name, Biome biome, NamespacedKey namespacedKey) { 18 | super(NoneFeatureConfiguration.CODEC, feature, oreControlManager, name, biome, namespacedKey); 19 | } 20 | 21 | public static EmptyConfigurationGeneratorHook createGlowstoneBlobHook(@NotNull OreControlManager oreControlManager, @NotNull NamespacedKey namespacedKey, @NotNull Biome biome) { 22 | return new EmptyConfigurationGeneratorHook(GLOWSTONE_BLOB, oreControlManager, "glowstone_blob", biome, namespacedKey); 23 | } 24 | 25 | @Override 26 | public NoneFeatureConfiguration createConfig(@NotNull NoneFeatureConfiguration defaultConfiguration, @NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion, @NotNull EmptyFeatureConfiguration configuration) { 27 | return defaultConfiguration; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /impl/v1_21_R1/src/main/java/de/derfrzocker/feature/impl/v1_21_R1/value/heightmap/HeightmapType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R1.value.heightmap; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_21_R1/src/main/java/de/derfrzocker/feature/impl/v1_21_R1/value/heightmap/HeightmapValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R1.value.heightmap; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract HeightmapValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_21_R1/src/main/java/de/derfrzocker/feature/impl/v1_21_R1/value/offset/NMSAboveBottomOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R1.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.AboveBottomOffsetIntegerValue; 5 | import java.util.Random; 6 | import net.minecraft.world.level.WorldGenLevel; 7 | import org.bukkit.craftbukkit.v1_21_R1.generator.CraftLimitedRegion; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | public class NMSAboveBottomOffsetIntegerValue extends AboveBottomOffsetIntegerValue { 14 | 15 | public NMSAboveBottomOffsetIntegerValue(IntegerValue base) { 16 | super(base); 17 | } 18 | 19 | @Override 20 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 21 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 22 | 23 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 24 | 25 | return Math.max(level.getMinBuildHeight(), level.getLevel().getChunkSource().getGenerator().getMinY()) + baseValue; 26 | } 27 | 28 | @Override 29 | public AboveBottomOffsetIntegerValue clone() { 30 | return new NMSAboveBottomOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /impl/v1_21_R1/src/main/java/de/derfrzocker/feature/impl/v1_21_R1/value/offset/NMSBelowTopOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R1.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.BelowTopOffsetIntegerValue; 5 | import java.util.Random; 6 | import net.minecraft.world.level.WorldGenLevel; 7 | import net.minecraft.world.level.chunk.ChunkGenerator; 8 | import org.bukkit.craftbukkit.v1_21_R1.generator.CraftLimitedRegion; 9 | import org.bukkit.generator.LimitedRegion; 10 | import org.bukkit.generator.WorldInfo; 11 | import org.bukkit.util.BlockVector; 12 | import org.jetbrains.annotations.NotNull; 13 | 14 | public class NMSBelowTopOffsetIntegerValue extends BelowTopOffsetIntegerValue { 15 | 16 | public NMSBelowTopOffsetIntegerValue(IntegerValue base) { 17 | super(base); 18 | } 19 | 20 | @Override 21 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 22 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 23 | 24 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 25 | ChunkGenerator chunkGenerator = level.getLevel().getChunkSource().getGenerator(); 26 | 27 | return Math.min(level.getHeight(), chunkGenerator.getGenDepth()) - 1 + Math.max(level.getMinBuildHeight(), chunkGenerator.getMinY()) - baseValue; 28 | } 29 | 30 | @Override 31 | public NMSBelowTopOffsetIntegerValue clone() { 32 | return new NMSBelowTopOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /impl/v1_21_R1/src/main/java/de/derfrzocker/ore/control/impl/v1_21_R1/NMSReflectionNames.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_21_R1; 2 | 3 | public final class NMSReflectionNames { 4 | 5 | public final static String BIOME_GENERATION_SETTINGS_FEATURES = "e"; 6 | public final static String BIOME_GENERATION_SETTINGS_FEATURE_SET = "g"; 7 | public final static String WEIGHTED_LIST_INT_DISTRIBUTION = "b"; 8 | public final static String COUNT_PLACEMENT_COUNT = "c"; 9 | public final static String HEIGHT_RANGE_PLACEMENT_HEIGHT = "c"; 10 | public final static String RARITY_FILTER_CHANCE = "c"; 11 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_HEIGHTMAP = "c"; 12 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MIN_INCLUSIVE = "d"; 13 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MAX_INCLUSIVE = "e"; 14 | public final static String SURFACE_WATER_DEPTH_FILTER_MAX_WATER_DEPTH = "c"; 15 | public static final String CLAMPED_INT_SOURCE = "b"; 16 | public static final String CLAMPED_INT_MIN_INCLUSIVE = "f"; 17 | public static final String CLAMPED_INT_MAX_INCLUSIVE = "g"; 18 | public static final String CLAMPED_NORMAL_INT_MEAN = "b"; 19 | public static final String CLAMPED_NORMAL_INT_DEVIATION = "f"; 20 | public static final String CHUNK_MAP_WORLD_GEN_CONTEXT = "P"; 21 | public static final String NOISE_GENERATOR_SETTINGS = "e"; 22 | 23 | private NMSReflectionNames() { 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_21_R1/src/main/java/de/derfrzocker/ore/control/impl/v1_21_R1/feature/generator/EmptyConfigurationGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_21_R1.feature.generator; 2 | 3 | import de.derfrzocker.feature.common.feature.generator.configuration.EmptyFeatureConfiguration; 4 | import de.derfrzocker.ore.control.api.Biome; 5 | import de.derfrzocker.ore.control.api.OreControlManager; 6 | import java.util.Random; 7 | import net.minecraft.world.level.levelgen.feature.Feature; 8 | import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; 9 | import org.bukkit.NamespacedKey; 10 | import org.bukkit.generator.LimitedRegion; 11 | import org.bukkit.generator.WorldInfo; 12 | import org.bukkit.util.BlockVector; 13 | import org.jetbrains.annotations.NotNull; 14 | 15 | public class EmptyConfigurationGeneratorHook extends MinecraftFeatureGeneratorHook { 16 | 17 | private EmptyConfigurationGeneratorHook(Feature feature, @NotNull OreControlManager oreControlManager, @NotNull String name, Biome biome, NamespacedKey namespacedKey) { 18 | super(NoneFeatureConfiguration.CODEC, feature, oreControlManager, name, biome, namespacedKey); 19 | } 20 | 21 | public static EmptyConfigurationGeneratorHook createGlowstoneBlobHook(@NotNull OreControlManager oreControlManager, @NotNull NamespacedKey namespacedKey, @NotNull Biome biome) { 22 | return new EmptyConfigurationGeneratorHook(GLOWSTONE_BLOB, oreControlManager, "glowstone_blob", biome, namespacedKey); 23 | } 24 | 25 | @Override 26 | public NoneFeatureConfiguration createConfig(@NotNull NoneFeatureConfiguration defaultConfiguration, @NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion, @NotNull EmptyFeatureConfiguration configuration) { 27 | return defaultConfiguration; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /impl/v1_21_R2/src/main/java/de/derfrzocker/feature/impl/v1_21_R2/value/heightmap/HeightmapType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R2.value.heightmap; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_21_R2/src/main/java/de/derfrzocker/feature/impl/v1_21_R2/value/heightmap/HeightmapValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R2.value.heightmap; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract HeightmapValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_21_R2/src/main/java/de/derfrzocker/feature/impl/v1_21_R2/value/offset/NMSAboveBottomOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R2.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.AboveBottomOffsetIntegerValue; 5 | import java.util.Random; 6 | import net.minecraft.world.level.WorldGenLevel; 7 | import org.bukkit.craftbukkit.v1_21_R2.generator.CraftLimitedRegion; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | public class NMSAboveBottomOffsetIntegerValue extends AboveBottomOffsetIntegerValue { 14 | 15 | public NMSAboveBottomOffsetIntegerValue(IntegerValue base) { 16 | super(base); 17 | } 18 | 19 | @Override 20 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 21 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 22 | 23 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 24 | 25 | return Math.max(level.getMinY(), level.getLevel().getChunkSource().getGenerator().getMinY()) + baseValue; 26 | } 27 | 28 | @Override 29 | public AboveBottomOffsetIntegerValue clone() { 30 | return new NMSAboveBottomOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /impl/v1_21_R2/src/main/java/de/derfrzocker/feature/impl/v1_21_R2/value/offset/NMSBelowTopOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R2.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.BelowTopOffsetIntegerValue; 5 | import java.util.Random; 6 | import net.minecraft.world.level.WorldGenLevel; 7 | import net.minecraft.world.level.chunk.ChunkGenerator; 8 | import org.bukkit.craftbukkit.v1_21_R2.generator.CraftLimitedRegion; 9 | import org.bukkit.generator.LimitedRegion; 10 | import org.bukkit.generator.WorldInfo; 11 | import org.bukkit.util.BlockVector; 12 | import org.jetbrains.annotations.NotNull; 13 | 14 | public class NMSBelowTopOffsetIntegerValue extends BelowTopOffsetIntegerValue { 15 | 16 | public NMSBelowTopOffsetIntegerValue(IntegerValue base) { 17 | super(base); 18 | } 19 | 20 | @Override 21 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 22 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 23 | 24 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 25 | ChunkGenerator chunkGenerator = level.getLevel().getChunkSource().getGenerator(); 26 | 27 | return Math.min(level.getHeight(), chunkGenerator.getGenDepth()) - 1 + Math.max(level.getMinY(), chunkGenerator.getMinY()) - baseValue; 28 | } 29 | 30 | @Override 31 | public NMSBelowTopOffsetIntegerValue clone() { 32 | return new NMSBelowTopOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /impl/v1_21_R2/src/main/java/de/derfrzocker/ore/control/impl/v1_21_R2/NMSReflectionNames.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_21_R2; 2 | 3 | public final class NMSReflectionNames { 4 | 5 | public final static String BIOME_GENERATION_SETTINGS_FEATURES = "e"; 6 | public final static String BIOME_GENERATION_SETTINGS_FEATURE_SET = "g"; 7 | public final static String WEIGHTED_LIST_INT_DISTRIBUTION = "b"; 8 | public final static String COUNT_PLACEMENT_COUNT = "c"; 9 | public final static String HEIGHT_RANGE_PLACEMENT_HEIGHT = "c"; 10 | public final static String RARITY_FILTER_CHANCE = "c"; 11 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_HEIGHTMAP = "c"; 12 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MIN_INCLUSIVE = "d"; 13 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MAX_INCLUSIVE = "e"; 14 | public final static String SURFACE_WATER_DEPTH_FILTER_MAX_WATER_DEPTH = "c"; 15 | public static final String CLAMPED_INT_SOURCE = "b"; 16 | public static final String CLAMPED_INT_MIN_INCLUSIVE = "f"; 17 | public static final String CLAMPED_INT_MAX_INCLUSIVE = "g"; 18 | public static final String CLAMPED_NORMAL_INT_MEAN = "b"; 19 | public static final String CLAMPED_NORMAL_INT_DEVIATION = "f"; 20 | public static final String CHUNK_MAP_WORLD_GEN_CONTEXT = "R"; 21 | public static final String NOISE_GENERATOR_SETTINGS = "e"; 22 | 23 | private NMSReflectionNames() { 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_21_R2/src/main/java/de/derfrzocker/ore/control/impl/v1_21_R2/feature/generator/EmptyConfigurationGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_21_R2.feature.generator; 2 | 3 | import de.derfrzocker.feature.common.feature.generator.configuration.EmptyFeatureConfiguration; 4 | import de.derfrzocker.ore.control.api.Biome; 5 | import de.derfrzocker.ore.control.api.OreControlManager; 6 | import java.util.Random; 7 | import net.minecraft.world.level.levelgen.feature.Feature; 8 | import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; 9 | import org.bukkit.NamespacedKey; 10 | import org.bukkit.generator.LimitedRegion; 11 | import org.bukkit.generator.WorldInfo; 12 | import org.bukkit.util.BlockVector; 13 | import org.jetbrains.annotations.NotNull; 14 | 15 | public class EmptyConfigurationGeneratorHook extends MinecraftFeatureGeneratorHook { 16 | 17 | private EmptyConfigurationGeneratorHook(Feature feature, @NotNull OreControlManager oreControlManager, @NotNull String name, Biome biome, NamespacedKey namespacedKey) { 18 | super(NoneFeatureConfiguration.CODEC, feature, oreControlManager, name, biome, namespacedKey); 19 | } 20 | 21 | public static EmptyConfigurationGeneratorHook createGlowstoneBlobHook(@NotNull OreControlManager oreControlManager, @NotNull NamespacedKey namespacedKey, @NotNull Biome biome) { 22 | return new EmptyConfigurationGeneratorHook(GLOWSTONE_BLOB, oreControlManager, "glowstone_blob", biome, namespacedKey); 23 | } 24 | 25 | @Override 26 | public NoneFeatureConfiguration createConfig(@NotNull NoneFeatureConfiguration defaultConfiguration, @NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion, @NotNull EmptyFeatureConfiguration configuration) { 27 | return defaultConfiguration; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /impl/v1_21_R3/src/main/java/de/derfrzocker/feature/impl/v1_21_R3/value/heightmap/HeightmapType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R3.value.heightmap; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_21_R3/src/main/java/de/derfrzocker/feature/impl/v1_21_R3/value/heightmap/HeightmapValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R3.value.heightmap; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract HeightmapValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_21_R3/src/main/java/de/derfrzocker/feature/impl/v1_21_R3/value/offset/NMSAboveBottomOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R3.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.AboveBottomOffsetIntegerValue; 5 | import java.util.Random; 6 | import net.minecraft.world.level.WorldGenLevel; 7 | import org.bukkit.craftbukkit.v1_21_R3.generator.CraftLimitedRegion; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | public class NMSAboveBottomOffsetIntegerValue extends AboveBottomOffsetIntegerValue { 14 | 15 | public NMSAboveBottomOffsetIntegerValue(IntegerValue base) { 16 | super(base); 17 | } 18 | 19 | @Override 20 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 21 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 22 | 23 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 24 | 25 | return Math.max(level.getMinY(), level.getLevel().getChunkSource().getGenerator().getMinY()) + baseValue; 26 | } 27 | 28 | @Override 29 | public AboveBottomOffsetIntegerValue clone() { 30 | return new NMSAboveBottomOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /impl/v1_21_R3/src/main/java/de/derfrzocker/feature/impl/v1_21_R3/value/offset/NMSBelowTopOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R3.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.BelowTopOffsetIntegerValue; 5 | import java.util.Random; 6 | import net.minecraft.world.level.WorldGenLevel; 7 | import net.minecraft.world.level.chunk.ChunkGenerator; 8 | import org.bukkit.craftbukkit.v1_21_R3.generator.CraftLimitedRegion; 9 | import org.bukkit.generator.LimitedRegion; 10 | import org.bukkit.generator.WorldInfo; 11 | import org.bukkit.util.BlockVector; 12 | import org.jetbrains.annotations.NotNull; 13 | 14 | public class NMSBelowTopOffsetIntegerValue extends BelowTopOffsetIntegerValue { 15 | 16 | public NMSBelowTopOffsetIntegerValue(IntegerValue base) { 17 | super(base); 18 | } 19 | 20 | @Override 21 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 22 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 23 | 24 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 25 | ChunkGenerator chunkGenerator = level.getLevel().getChunkSource().getGenerator(); 26 | 27 | return Math.min(level.getHeight(), chunkGenerator.getGenDepth()) - 1 + Math.max(level.getMinY(), chunkGenerator.getMinY()) - baseValue; 28 | } 29 | 30 | @Override 31 | public NMSBelowTopOffsetIntegerValue clone() { 32 | return new NMSBelowTopOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /impl/v1_21_R3/src/main/java/de/derfrzocker/ore/control/impl/v1_21_R3/NMSReflectionNames.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_21_R3; 2 | 3 | public final class NMSReflectionNames { 4 | 5 | public final static String BIOME_GENERATION_SETTINGS_FEATURES = "e"; 6 | public final static String BIOME_GENERATION_SETTINGS_FEATURE_SET = "g"; 7 | public final static String WEIGHTED_LIST_INT_DISTRIBUTION = "b"; 8 | public final static String COUNT_PLACEMENT_COUNT = "c"; 9 | public final static String HEIGHT_RANGE_PLACEMENT_HEIGHT = "c"; 10 | public final static String RARITY_FILTER_CHANCE = "c"; 11 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_HEIGHTMAP = "c"; 12 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MIN_INCLUSIVE = "d"; 13 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MAX_INCLUSIVE = "e"; 14 | public final static String SURFACE_WATER_DEPTH_FILTER_MAX_WATER_DEPTH = "c"; 15 | public static final String CLAMPED_INT_SOURCE = "b"; 16 | public static final String CLAMPED_INT_MIN_INCLUSIVE = "f"; 17 | public static final String CLAMPED_INT_MAX_INCLUSIVE = "g"; 18 | public static final String CLAMPED_NORMAL_INT_MEAN = "b"; 19 | public static final String CLAMPED_NORMAL_INT_DEVIATION = "f"; 20 | public static final String CHUNK_MAP_WORLD_GEN_CONTEXT = "R"; 21 | public static final String NOISE_GENERATOR_SETTINGS = "e"; 22 | 23 | private NMSReflectionNames() { 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_21_R3/src/main/java/de/derfrzocker/ore/control/impl/v1_21_R3/feature/generator/EmptyConfigurationGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_21_R3.feature.generator; 2 | 3 | import de.derfrzocker.feature.common.feature.generator.configuration.EmptyFeatureConfiguration; 4 | import de.derfrzocker.ore.control.api.Biome; 5 | import de.derfrzocker.ore.control.api.OreControlManager; 6 | import java.util.Random; 7 | import net.minecraft.world.level.levelgen.feature.Feature; 8 | import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; 9 | import org.bukkit.NamespacedKey; 10 | import org.bukkit.generator.LimitedRegion; 11 | import org.bukkit.generator.WorldInfo; 12 | import org.bukkit.util.BlockVector; 13 | import org.jetbrains.annotations.NotNull; 14 | 15 | public class EmptyConfigurationGeneratorHook extends MinecraftFeatureGeneratorHook { 16 | 17 | private EmptyConfigurationGeneratorHook(Feature feature, @NotNull OreControlManager oreControlManager, @NotNull String name, Biome biome, NamespacedKey namespacedKey) { 18 | super(NoneFeatureConfiguration.CODEC, feature, oreControlManager, name, biome, namespacedKey); 19 | } 20 | 21 | public static EmptyConfigurationGeneratorHook createGlowstoneBlobHook(@NotNull OreControlManager oreControlManager, @NotNull NamespacedKey namespacedKey, @NotNull Biome biome) { 22 | return new EmptyConfigurationGeneratorHook(GLOWSTONE_BLOB, oreControlManager, "glowstone_blob", biome, namespacedKey); 23 | } 24 | 25 | @Override 26 | public NoneFeatureConfiguration createConfig(@NotNull NoneFeatureConfiguration defaultConfiguration, @NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion, @NotNull EmptyFeatureConfiguration configuration) { 27 | return defaultConfiguration; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /impl/v1_21_R4/src/main/java/de/derfrzocker/feature/impl/v1_21_R4/value/heightmap/HeightmapType.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R4.value.heightmap; 2 | 3 | import de.derfrzocker.feature.api.ValueType; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapType implements ValueType { 7 | } 8 | -------------------------------------------------------------------------------- /impl/v1_21_R4/src/main/java/de/derfrzocker/feature/impl/v1_21_R4/value/heightmap/HeightmapValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R4.value.heightmap; 2 | 3 | import de.derfrzocker.feature.common.AbstractValue; 4 | import net.minecraft.world.level.levelgen.Heightmap; 5 | 6 | public abstract class HeightmapValue extends AbstractValue { 7 | 8 | @Override 9 | public abstract HeightmapValue clone(); 10 | } 11 | -------------------------------------------------------------------------------- /impl/v1_21_R4/src/main/java/de/derfrzocker/feature/impl/v1_21_R4/value/offset/NMSAboveBottomOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R4.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.AboveBottomOffsetIntegerValue; 5 | import java.util.Random; 6 | import net.minecraft.world.level.WorldGenLevel; 7 | import org.bukkit.craftbukkit.v1_21_R4.generator.CraftLimitedRegion; 8 | import org.bukkit.generator.LimitedRegion; 9 | import org.bukkit.generator.WorldInfo; 10 | import org.bukkit.util.BlockVector; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | public class NMSAboveBottomOffsetIntegerValue extends AboveBottomOffsetIntegerValue { 14 | 15 | public NMSAboveBottomOffsetIntegerValue(IntegerValue base) { 16 | super(base); 17 | } 18 | 19 | @Override 20 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 21 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 22 | 23 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 24 | 25 | return Math.max(level.getMinY(), level.getLevel().getChunkSource().getGenerator().getMinY()) + baseValue; 26 | } 27 | 28 | @Override 29 | public AboveBottomOffsetIntegerValue clone() { 30 | return new NMSAboveBottomOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /impl/v1_21_R4/src/main/java/de/derfrzocker/feature/impl/v1_21_R4/value/offset/NMSBelowTopOffsetIntegerValue.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.feature.impl.v1_21_R4.value.offset; 2 | 3 | import de.derfrzocker.feature.common.value.number.IntegerValue; 4 | import de.derfrzocker.feature.common.value.offset.BelowTopOffsetIntegerValue; 5 | import java.util.Random; 6 | import net.minecraft.world.level.WorldGenLevel; 7 | import net.minecraft.world.level.chunk.ChunkGenerator; 8 | import org.bukkit.craftbukkit.v1_21_R4.generator.CraftLimitedRegion; 9 | import org.bukkit.generator.LimitedRegion; 10 | import org.bukkit.generator.WorldInfo; 11 | import org.bukkit.util.BlockVector; 12 | import org.jetbrains.annotations.NotNull; 13 | 14 | public class NMSBelowTopOffsetIntegerValue extends BelowTopOffsetIntegerValue { 15 | 16 | public NMSBelowTopOffsetIntegerValue(IntegerValue base) { 17 | super(base); 18 | } 19 | 20 | @Override 21 | public Integer getValue(@NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion) { 22 | int baseValue = getBase() == null ? 0 : getBase().getValue(worldInfo, random, position, limitedRegion); 23 | 24 | WorldGenLevel level = ((CraftLimitedRegion) limitedRegion).getHandle(); 25 | ChunkGenerator chunkGenerator = level.getLevel().getChunkSource().getGenerator(); 26 | 27 | return Math.min(level.getHeight(), chunkGenerator.getGenDepth()) - 1 + Math.max(level.getMinY(), chunkGenerator.getMinY()) - baseValue; 28 | } 29 | 30 | @Override 31 | public NMSBelowTopOffsetIntegerValue clone() { 32 | return new NMSBelowTopOffsetIntegerValue(getBase() == null ? null : getBase().clone()); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /impl/v1_21_R4/src/main/java/de/derfrzocker/ore/control/impl/v1_21_R4/NMSReflectionNames.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_21_R4; 2 | 3 | public final class NMSReflectionNames { 4 | 5 | public final static String BIOME_GENERATION_SETTINGS_FEATURES = "e"; 6 | public final static String BIOME_GENERATION_SETTINGS_FEATURE_SET = "g"; 7 | public final static String WEIGHTED_LIST_INT_DISTRIBUTION = "b"; 8 | public final static String COUNT_PLACEMENT_COUNT = "c"; 9 | public final static String HEIGHT_RANGE_PLACEMENT_HEIGHT = "c"; 10 | public final static String RARITY_FILTER_CHANCE = "c"; 11 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_HEIGHTMAP = "c"; 12 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MIN_INCLUSIVE = "d"; 13 | public final static String SURFACE_RELATIVE_THRESHOLD_FILTER_MAX_INCLUSIVE = "e"; 14 | public final static String SURFACE_WATER_DEPTH_FILTER_MAX_WATER_DEPTH = "c"; 15 | public static final String CLAMPED_INT_SOURCE = "b"; 16 | public static final String CLAMPED_INT_MIN_INCLUSIVE = "f"; 17 | public static final String CLAMPED_INT_MAX_INCLUSIVE = "g"; 18 | public static final String CLAMPED_NORMAL_INT_MEAN = "b"; 19 | public static final String CLAMPED_NORMAL_INT_DEVIATION = "f"; 20 | public static final String CHUNK_MAP_WORLD_GEN_CONTEXT = "S"; 21 | public static final String NOISE_GENERATOR_SETTINGS = "e"; 22 | 23 | private NMSReflectionNames() { 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /impl/v1_21_R4/src/main/java/de/derfrzocker/ore/control/impl/v1_21_R4/feature/generator/EmptyConfigurationGeneratorHook.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.impl.v1_21_R4.feature.generator; 2 | 3 | import de.derfrzocker.feature.common.feature.generator.configuration.EmptyFeatureConfiguration; 4 | import de.derfrzocker.ore.control.api.Biome; 5 | import de.derfrzocker.ore.control.api.OreControlManager; 6 | import java.util.Random; 7 | import net.minecraft.world.level.levelgen.feature.Feature; 8 | import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; 9 | import org.bukkit.NamespacedKey; 10 | import org.bukkit.generator.LimitedRegion; 11 | import org.bukkit.generator.WorldInfo; 12 | import org.bukkit.util.BlockVector; 13 | import org.jetbrains.annotations.NotNull; 14 | 15 | public class EmptyConfigurationGeneratorHook extends MinecraftFeatureGeneratorHook { 16 | 17 | private EmptyConfigurationGeneratorHook(Feature feature, @NotNull OreControlManager oreControlManager, @NotNull String name, Biome biome, NamespacedKey namespacedKey) { 18 | super(NoneFeatureConfiguration.CODEC, feature, oreControlManager, name, biome, namespacedKey); 19 | } 20 | 21 | public static EmptyConfigurationGeneratorHook createGlowstoneBlobHook(@NotNull OreControlManager oreControlManager, @NotNull NamespacedKey namespacedKey, @NotNull Biome biome) { 22 | return new EmptyConfigurationGeneratorHook(GLOWSTONE_BLOB, oreControlManager, "glowstone_blob", biome, namespacedKey); 23 | } 24 | 25 | @Override 26 | public NoneFeatureConfiguration createConfig(@NotNull NoneFeatureConfiguration defaultConfiguration, @NotNull WorldInfo worldInfo, @NotNull Random random, @NotNull BlockVector position, @NotNull LimitedRegion limitedRegion, @NotNull EmptyFeatureConfiguration configuration) { 27 | return defaultConfiguration; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/cache/config/BiomeConfigCacheSlice.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.cache.config; 2 | 3 | import de.derfrzocker.ore.control.api.Biome; 4 | import de.derfrzocker.ore.control.api.config.Config; 5 | import de.derfrzocker.ore.control.api.config.ConfigInfo; 6 | import de.derfrzocker.ore.control.cache.config.part.BiomeConfigCachePart; 7 | import org.bukkit.NamespacedKey; 8 | 9 | import java.util.Map; 10 | import java.util.Optional; 11 | import java.util.concurrent.ConcurrentHashMap; 12 | 13 | public class BiomeConfigCacheSlice { 14 | private final Map cache = new ConcurrentHashMap<>(); 15 | 16 | public void forEachFlatMap(QuadConsumer> consumer) { // Add and use Spigot Utils 17 | cache.forEach((configInfo, part) -> part.forEachFlatMap((biome, featureKey, config) -> consumer.accept(configInfo, biome, featureKey, config))); 18 | } 19 | 20 | public BiomeConfigCachePart getOrCreate(ConfigInfo configInfo) { 21 | return cache.computeIfAbsent(configInfo, ignore -> new BiomeConfigCachePart()); 22 | } 23 | 24 | public Optional get(ConfigInfo configInfo) { 25 | return Optional.ofNullable(cache.get(configInfo)); 26 | } 27 | 28 | public void clear() { 29 | cache.clear(); 30 | } 31 | 32 | @FunctionalInterface 33 | public interface QuadConsumer { 34 | void accept(F first, S second, T third, Q fourth); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/cache/config/ConfigCacheSlice.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.cache.config; 2 | 3 | import de.derfrzocker.ore.control.api.config.Config; 4 | import de.derfrzocker.ore.control.api.config.ConfigInfo; 5 | import de.derfrzocker.ore.control.cache.config.part.FeatureConfigCachePart; 6 | import de.derfrzocker.spigot.utils.function.TripleConsumer; 7 | import org.bukkit.NamespacedKey; 8 | 9 | import java.util.Map; 10 | import java.util.Optional; 11 | import java.util.concurrent.ConcurrentHashMap; 12 | 13 | public class ConfigCacheSlice { 14 | 15 | private final Map cache = new ConcurrentHashMap<>(); 16 | 17 | public void clear() { 18 | cache.clear(); 19 | } 20 | 21 | public void forEachFlatMap(TripleConsumer> consumer) { 22 | cache.forEach((configInfo, part) -> part.forEach((featureKey, config) -> consumer.accept(configInfo, featureKey, config))); 23 | } 24 | 25 | public FeatureConfigCachePart getOrCreate(ConfigInfo configInfo) { 26 | return cache.computeIfAbsent(configInfo, ignore -> new FeatureConfigCachePart()); 27 | } 28 | 29 | public Optional get(ConfigInfo configInfo) { 30 | return Optional.ofNullable(cache.get(configInfo)); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/cache/config/DefaultConfigCache.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.cache.config; 2 | 3 | import de.derfrzocker.ore.control.api.Biome; 4 | import de.derfrzocker.ore.control.api.config.Config; 5 | import de.derfrzocker.ore.control.cache.config.part.BiomeConfigCachePart; 6 | import de.derfrzocker.ore.control.cache.config.part.FeatureConfigCachePart; 7 | import org.bukkit.NamespacedKey; 8 | 9 | import java.util.Optional; 10 | 11 | public class DefaultConfigCache { 12 | private final BiomeConfigCachePart biomeCache = new BiomeConfigCachePart(); 13 | private final FeatureConfigCachePart cache = new FeatureConfigCachePart(); 14 | 15 | public Optional getDefault(NamespacedKey featureKey) { 16 | return cache.getOrCompute(featureKey, Optional::empty); 17 | } 18 | 19 | public Optional getDefault(Biome biome, NamespacedKey featureKey) { 20 | return biomeCache.getOrCreate(biome).getOrCompute(featureKey, Optional::empty); 21 | } 22 | 23 | public void setDefault(NamespacedKey featureKey, Config config) { 24 | cache.set(featureKey, Optional.ofNullable(config)); 25 | } 26 | 27 | public void setDefault(Biome biome, NamespacedKey featureKey, Config config) { 28 | biomeCache.getOrCreate(biome).set(featureKey, Optional.ofNullable(config)); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/cache/config/GenerationConfigCache.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.cache.config; 2 | 3 | import de.derfrzocker.ore.control.api.Biome; 4 | import de.derfrzocker.ore.control.api.config.Config; 5 | import de.derfrzocker.ore.control.api.config.ConfigInfo; 6 | import org.bukkit.NamespacedKey; 7 | 8 | import java.util.Optional; 9 | 10 | import static de.derfrzocker.ore.control.cache.config.ConfigCache.combineConfig; 11 | 12 | public class GenerationConfigCache { 13 | private final BiomeConfigCacheSlice biomeCache = new BiomeConfigCacheSlice(); 14 | private final StandardConfigCache standardConfigCache; 15 | 16 | public GenerationConfigCache(StandardConfigCache standardConfigCache) { 17 | this.standardConfigCache = standardConfigCache; 18 | } 19 | 20 | public Optional getGeneration(ConfigInfo configInfo, Biome biome, NamespacedKey featureKey) { 21 | return biomeCache.getOrCreate(configInfo).getOrCreate(biome).getOrCompute(featureKey, () -> loadGenerationConfig(configInfo, biome, featureKey)); 22 | } 23 | 24 | public void clear() { 25 | biomeCache.clear(); 26 | } 27 | 28 | private Optional loadGenerationConfig(ConfigInfo configInfo, Biome biome, NamespacedKey featureKey) { 29 | Optional globalWorldConfig = standardConfigCache.getGlobal(featureKey); 30 | Optional globalBiomeConfig = standardConfigCache.getGlobal(biome, featureKey); 31 | Optional worldConfig = standardConfigCache.get(configInfo, featureKey); 32 | Optional biomeConfig = standardConfigCache.get(configInfo, biome, featureKey); 33 | 34 | return combineConfig(combineConfig(combineConfig(biomeConfig, worldConfig), globalBiomeConfig), globalWorldConfig); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/cache/config/part/BiomeConfigCachePart.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.cache.config.part; 2 | 3 | import de.derfrzocker.ore.control.api.Biome; 4 | import de.derfrzocker.ore.control.api.config.Config; 5 | import de.derfrzocker.spigot.utils.function.TripleConsumer; 6 | import org.bukkit.NamespacedKey; 7 | 8 | import java.util.Map; 9 | import java.util.Optional; 10 | import java.util.concurrent.ConcurrentHashMap; 11 | 12 | public class BiomeConfigCachePart { 13 | private final Map cache = new ConcurrentHashMap<>(); 14 | 15 | public void forEachFlatMap(TripleConsumer> consumer) { 16 | cache.forEach((biome, part) -> part.forEach((featureKey, config) -> consumer.accept(biome, featureKey, config))); 17 | } 18 | 19 | public FeatureConfigCachePart getOrCreate(Biome biome) { 20 | return cache.computeIfAbsent(biome, ignore -> new FeatureConfigCachePart()); 21 | } 22 | 23 | public Optional get(Biome biome) { 24 | return Optional.ofNullable(cache.get(biome)); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/cache/config/part/FeatureConfigCachePart.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.cache.config.part; 2 | 3 | import de.derfrzocker.ore.control.api.config.Config; 4 | import org.bukkit.NamespacedKey; 5 | 6 | import java.util.Map; 7 | import java.util.Optional; 8 | import java.util.concurrent.ConcurrentHashMap; 9 | import java.util.function.BiConsumer; 10 | import java.util.function.Supplier; 11 | 12 | public class FeatureConfigCachePart { 13 | private final Map> cache = new ConcurrentHashMap<>(); 14 | 15 | public void forEach(BiConsumer> consumer) { 16 | cache.forEach(consumer); 17 | } 18 | 19 | public Optional getOrCompute(NamespacedKey featureKey, Supplier> supplier) { 20 | return cache.computeIfAbsent(featureKey, ignore -> supplier.get()); 21 | } 22 | 23 | public Config getOrCreate(NamespacedKey featureKey) { 24 | Optional optional = cache.getOrDefault(featureKey, Optional.empty()); 25 | 26 | if (optional.isPresent()) { 27 | return optional.get(); 28 | } 29 | 30 | Config config = new Config(); 31 | cache.put(featureKey, Optional.of(config)); 32 | 33 | return config; 34 | } 35 | 36 | public void set(NamespacedKey featureKey, Optional config) { 37 | cache.put(featureKey, config); 38 | } 39 | 40 | public void clear(NamespacedKey featureKey) { 41 | cache.remove(featureKey); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/cache/extra/ExtraValueCacheSlice.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.cache.extra; 2 | 3 | import de.derfrzocker.feature.api.ExtraValues; 4 | import de.derfrzocker.ore.control.api.config.ConfigInfo; 5 | 6 | import java.util.Map; 7 | import java.util.Optional; 8 | import java.util.concurrent.ConcurrentHashMap; 9 | import java.util.function.BiConsumer; 10 | import java.util.function.Supplier; 11 | 12 | public class ExtraValueCacheSlice { 13 | private final Map> cache = new ConcurrentHashMap<>(); 14 | 15 | public void forEach(BiConsumer> consumer) { 16 | cache.forEach(consumer); 17 | } 18 | 19 | public Optional getOrCompute(ConfigInfo configInfo, Supplier> supplier) { 20 | return cache.computeIfAbsent(configInfo, ignore -> supplier.get()); 21 | } 22 | 23 | public ExtraValues getOrCreate(ConfigInfo configInfo) { 24 | Optional value = cache.getOrDefault(configInfo, Optional.empty()); 25 | 26 | if (value.isPresent()) { 27 | return value.get(); 28 | } 29 | 30 | ExtraValues values = new ExtraValues(); 31 | cache.put(configInfo, Optional.of(values)); 32 | 33 | return values; 34 | } 35 | 36 | public void clear(ConfigInfo configInfo) { 37 | cache.remove(configInfo); 38 | } 39 | 40 | public void clear() { 41 | cache.clear(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/gui/GuiValuesHolder.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.gui; 2 | 3 | import de.derfrzocker.ore.control.Stats; 4 | import de.derfrzocker.ore.control.api.OreControlManager; 5 | import de.derfrzocker.ore.control.api.config.ConfigManager; 6 | import de.derfrzocker.ore.control.interactions.BlockInteractionManager; 7 | import de.derfrzocker.ore.control.traverser.ValueTraverser; 8 | import de.derfrzocker.spigot.utils.language.LanguageManager; 9 | import de.derfrzocker.spigot.utils.setting.ConfigSetting; 10 | import org.bukkit.plugin.Plugin; 11 | 12 | import java.util.function.Function; 13 | 14 | public record GuiValuesHolder(Plugin plugin, OreControlManager oreControlManager, OreControlGuiManager guiManager, 15 | ConfigManager configManager, LanguageManager languageManager, 16 | Function settingFunction, ValueTraverser valueTraverser, 17 | Stats stats, BlockInteractionManager blockInteractionManager) { 18 | } 19 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/gui/SettingWrapper.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.gui; 2 | 3 | import de.derfrzocker.feature.api.ConfigurationAble; 4 | import de.derfrzocker.feature.api.Setting; 5 | 6 | public class SettingWrapper { 7 | 8 | private final Setting setting; 9 | private final ConfigurationAble settingOwner; 10 | 11 | public SettingWrapper(Setting setting, ConfigurationAble settingOwner) { 12 | this.setting = setting; 13 | this.settingOwner = settingOwner; 14 | } 15 | 16 | public Setting getSetting() { 17 | return setting; 18 | } 19 | 20 | public ConfigurationAble getSettingOwner() { 21 | return settingOwner; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/gui/info/InfoLinkData.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.gui.info; 2 | 3 | import de.derfrzocker.ore.control.gui.PlayerGuiData; 4 | import de.derfrzocker.spigot.utils.message.MessageValue; 5 | 6 | public record InfoLinkData(InfoLink infoLink, String[] data) { 7 | 8 | public static InfoLinkData of(InfoLink infoLink, String... data) { 9 | return new InfoLinkData(infoLink, data); 10 | } 11 | 12 | public String url(PlayerGuiData playerGuiData) { 13 | return infoLink().getUrl().apply(playerGuiData, data()); 14 | } 15 | 16 | public MessageValue[] messageValues(PlayerGuiData playerGuiData) { 17 | return infoLink().getMessageValues().apply(playerGuiData, data()); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/gui/info/InfoUtil.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.gui.info; 2 | 3 | import de.derfrzocker.ore.control.OreControl; 4 | import org.bukkit.NamespacedKey; 5 | 6 | public final class InfoUtil { 7 | 8 | public static String fromKey(String base, NamespacedKey key) { 9 | return OreControl.BASE_WIKI_URL + base + ":-" + key.getNamespace().replace("_", "-") + ":-" + key.getKey().replace("_", "-"); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/gui/screen/ExtraValuesScreen.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.gui.screen; 2 | 3 | import de.derfrzocker.ore.control.gui.GuiValuesHolder; 4 | import de.derfrzocker.ore.control.gui.ScreenUtil; 5 | import de.derfrzocker.ore.control.gui.Screens; 6 | import de.derfrzocker.spigot.utils.gui.InventoryGui; 7 | import de.derfrzocker.spigot.utils.gui.builders.Builders; 8 | 9 | public class ExtraValuesScreen { 10 | 11 | public static InventoryGui getGui(GuiValuesHolder guiValuesHolder) { 12 | return Builders 13 | .single() 14 | .identifier(Screens.EXTRA_VALUES_SCREEN) 15 | .languageManager(guiValuesHolder.languageManager()) 16 | .withSetting(guiValuesHolder.settingFunction().apply("design.yml")) 17 | .withSetting(guiValuesHolder.settingFunction().apply("extra_values_screen.yml")) 18 | .addButtonContext(Builders 19 | .buttonContext() 20 | .identifier("big_ore_veins") 21 | .button( 22 | Builders 23 | .button() 24 | .identifier("big_ore_veins") 25 | .withAction(clickAction -> clickAction.getClickEvent().setCancelled(true)) 26 | .withAction(clickAction -> guiValuesHolder.guiManager().openScreen(Screens.EXTRA_BIG_ORE_VEIN_SCREEN, clickAction.getPlayer())) 27 | ) 28 | ) 29 | .addButtonContext(ScreenUtil.getBackButton(guiValuesHolder.guiManager())) 30 | .build(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/gui/screen/value/BiasedToBottomIntegerScreen.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.gui.screen.value; 2 | 3 | import de.derfrzocker.feature.common.value.number.integer.biased.BiasedToBottomIntegerValue; 4 | import de.derfrzocker.ore.control.gui.GuiValuesHolder; 5 | import de.derfrzocker.ore.control.gui.ScreenUtil; 6 | import de.derfrzocker.ore.control.gui.Screens; 7 | import de.derfrzocker.spigot.utils.gui.InventoryGui; 8 | import de.derfrzocker.spigot.utils.gui.builders.Builders; 9 | import org.bukkit.entity.Player; 10 | 11 | public class BiasedToBottomIntegerScreen { 12 | 13 | public static InventoryGui getGui(GuiValuesHolder guiValuesHolder) { 14 | return Builders 15 | .single() 16 | .identifier(Screens.VALUE_BIASED_TO_BOTTOM_INTEGER_SCREEN) 17 | .languageManager(guiValuesHolder.languageManager()) 18 | .withSetting(guiValuesHolder.settingFunction().apply("design.yml")) 19 | .withSetting(guiValuesHolder.settingFunction().apply("value/biased_to_bottom_integer_screen.yml")) 20 | .addButtonContext(ScreenUtil.getPassthroughButton(guiValuesHolder, "min-inclusive", BiasedToBottomIntegerValue.class, BiasedToBottomIntegerValue::getMinInclusive)) 21 | .addButtonContext(ScreenUtil.getPassthroughButton(guiValuesHolder, "max-inclusive", BiasedToBottomIntegerValue.class, BiasedToBottomIntegerValue::getMaxInclusive)) 22 | .withBackAction((setting, guiInfo) -> guiValuesHolder.guiManager().getPlayerGuiData((Player) guiInfo.getEntity()).setPreviousToEditValue()) 23 | .addButtonContext(ScreenUtil.getBackButton(guiValuesHolder.guiManager())) 24 | .build(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/gui/screen/value/TrapezoidIntegerScreen.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.gui.screen.value; 2 | 3 | import de.derfrzocker.feature.common.value.number.integer.trapezoid.TrapezoidIntegerValue; 4 | import de.derfrzocker.ore.control.gui.GuiValuesHolder; 5 | import de.derfrzocker.ore.control.gui.ScreenUtil; 6 | import de.derfrzocker.ore.control.gui.Screens; 7 | import de.derfrzocker.spigot.utils.gui.InventoryGui; 8 | import de.derfrzocker.spigot.utils.gui.builders.Builders; 9 | import org.bukkit.entity.Player; 10 | 11 | public class TrapezoidIntegerScreen { 12 | 13 | public static InventoryGui getGui(GuiValuesHolder guiValuesHolder) { 14 | return Builders 15 | .single() 16 | .identifier(Screens.VALUE_TRAPEZOID_INTEGER_SCREEN) 17 | .languageManager(guiValuesHolder.languageManager()) 18 | .withSetting(guiValuesHolder.settingFunction().apply("design.yml")) 19 | .withSetting(guiValuesHolder.settingFunction().apply("value/trapezoid_integer_screen.yml")) 20 | .addButtonContext(ScreenUtil.getPassthroughButton(guiValuesHolder, "min-inclusive", TrapezoidIntegerValue.class, TrapezoidIntegerValue::getMinInclusive)) 21 | .addButtonContext(ScreenUtil.getPassthroughButton(guiValuesHolder, "max-inclusive", TrapezoidIntegerValue.class, TrapezoidIntegerValue::getMaxInclusive)) 22 | .addButtonContext(ScreenUtil.getPassthroughButton(guiValuesHolder, "plateau", TrapezoidIntegerValue.class, TrapezoidIntegerValue::getPlateau)) 23 | .withBackAction((setting, guiInfo) -> guiValuesHolder.guiManager().getPlayerGuiData((Player) guiInfo.getEntity()).setPreviousToEditValue()) 24 | .addButtonContext(ScreenUtil.getBackButton(guiValuesHolder.guiManager())) 25 | .build(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/gui/screen/value/UniformIntegerScreen.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.gui.screen.value; 2 | 3 | import de.derfrzocker.feature.common.value.number.integer.uniform.UniformIntegerValue; 4 | import de.derfrzocker.ore.control.gui.GuiValuesHolder; 5 | import de.derfrzocker.ore.control.gui.ScreenUtil; 6 | import de.derfrzocker.ore.control.gui.Screens; 7 | import de.derfrzocker.spigot.utils.gui.InventoryGui; 8 | import de.derfrzocker.spigot.utils.gui.builders.Builders; 9 | import org.bukkit.entity.Player; 10 | 11 | public class UniformIntegerScreen { 12 | 13 | public static InventoryGui getGui(GuiValuesHolder guiValuesHolder) { 14 | return Builders 15 | .single() 16 | .identifier(Screens.VALUE_UNIFORM_INTEGER_SCREEN) 17 | .languageManager(guiValuesHolder.languageManager()) 18 | .withSetting(guiValuesHolder.settingFunction().apply("design.yml")) 19 | .withSetting(guiValuesHolder.settingFunction().apply("value/uniform_integer_screen.yml")) 20 | .addButtonContext(ScreenUtil.getPassthroughButton(guiValuesHolder, "min-inclusive", UniformIntegerValue.class, UniformIntegerValue::getMinInclusive)) 21 | .addButtonContext(ScreenUtil.getPassthroughButton(guiValuesHolder, "max-inclusive", UniformIntegerValue.class, UniformIntegerValue::getMaxInclusive)) 22 | .withBackAction((setting, guiInfo) -> guiValuesHolder.guiManager().getPlayerGuiData((Player) guiInfo.getEntity()).setPreviousToEditValue()) 23 | .addButtonContext(ScreenUtil.getBackButton(guiValuesHolder.guiManager())) 24 | .build(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ore-control/src/main/java/de/derfrzocker/ore/control/interactions/BlockInteractionListener.java: -------------------------------------------------------------------------------- 1 | package de.derfrzocker.ore.control.interactions; 2 | 3 | import org.bukkit.block.BlockState; 4 | import org.bukkit.entity.Player; 5 | 6 | public interface BlockInteractionListener { 7 | 8 | boolean onBlockShiftLeftClick(Player player, BlockState blockState); 9 | 10 | boolean onBlockLeftClick(Player player, BlockState blockState); 11 | 12 | boolean onAirShiftLeftClick(Player player); 13 | 14 | boolean onAirLeftClick(Player player); 15 | } 16 | -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/all_settings_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[all_settings_screen.name]%" 2 | default-icon: 3 | item-stack: 4 | ==: org.bukkit.inventory.ItemStack 5 | v: 2865 6 | type: COAL 7 | meta: 8 | ==: ItemMeta 9 | meta-type: UNSPECIFIC 10 | display-name: "&f%%translation:[settings.%setting%.name]%" 11 | lore: 12 | - " " 13 | - "%value-settings%" 14 | - " " 15 | - "&7>> &b%%translation:[all_settings_screen.default-icon.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/biome_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[biome_screen.name]%" 2 | default-icon: 3 | item-stack: 4 | ==: org.bukkit.inventory.ItemStack 5 | v: 2865 6 | type: BARRIER 7 | meta: 8 | ==: ItemMeta 9 | meta-type: UNSPECIFIC 10 | display-name: "&f%%translation:[namespaces.%biome-namespace%.name]%: %%translation:[biomes.%biome-namespace%.%biome-key%.name]%" 11 | lore: 12 | - " " 13 | - "&7>> &b%%translation:[biome_screen.default-icon.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/config_info_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[config_info_screen.name]%" 2 | whole-world: 3 | slot: 23 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: STONE 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[config_info_screen.whole-world.name]%" 12 | lore: 13 | - " " 14 | - "&7>> &b%%translation:[config_info_screen.whole-world.lore.left-click]% &7<<" 15 | biome: 16 | slot: 21 17 | item-stack: 18 | ==: org.bukkit.inventory.ItemStack 19 | v: 2865 20 | type: GRASS_BLOCK 21 | meta: 22 | ==: ItemMeta 23 | meta-type: UNSPECIFIC 24 | display-name: "&f%%translation:[config_info_screen.biome.name]%" 25 | lore: 26 | - " " 27 | - "&7>> &b%%translation:[config_info_screen.biome.lore.left-click]% &7<<" 28 | extra-values: 29 | slot: 4 30 | item-stack: 31 | ==: org.bukkit.inventory.ItemStack 32 | v: 2865 33 | type: COMPARATOR 34 | meta: 35 | ==: ItemMeta 36 | meta-type: UNSPECIFIC 37 | display-name: "&f%%translation:[config_info_screen.extra-values.name]%" 38 | lore: 39 | - " " 40 | - "&7>> &b%%translation:[config_info_screen.extra-values.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/extra/big_ore_vein_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[big_ore_vein_screen.name]%" 2 | activation: 3 | slot: 20 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: LIME_TERRACOTTA 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[big_ore_vein_screen.true.name]%" 12 | lore: 13 | - " " 14 | - "&7>> &b%%translation:[big_ore_vein_screen.true.lore.left-click]% &7<<" 15 | deactivation: 16 | slot: 24 17 | item-stack: 18 | ==: org.bukkit.inventory.ItemStack 19 | v: 2865 20 | type: RED_TERRACOTTA 21 | meta: 22 | ==: ItemMeta 23 | meta-type: UNSPECIFIC 24 | display-name: "&f%%translation:[big_ore_vein_screen.false.name]%" 25 | lore: 26 | - " " 27 | - "&7>> &b%%translation:[big_ore_vein_screen.false.lore.left-click]% &7<<" 28 | reset: 29 | slot: 22 30 | item-stack: 31 | ==: org.bukkit.inventory.ItemStack 32 | v: 2865 33 | type: GRAY_TERRACOTTA 34 | meta: 35 | ==: ItemMeta 36 | meta-type: UNSPECIFIC 37 | display-name: "&f%%translation:[big_ore_vein_screen.reset.name]%" 38 | lore: 39 | - " " 40 | - "&7>> &b%%translation:[big_ore_vein_screen.reset.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/extra_values_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[extra_values_screen.name]%" 2 | big_ore_veins: 3 | slot: 22 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: RAW_IRON_BLOCK 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[extra_values_screen.big_ore_veins.name]%" 12 | lore: 13 | - " " 14 | - "&7>> &b%%translation:[extra_values_screen.big_ore_veins.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/feature_selection_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[feature_selection_screen.name]%" 2 | default-icon: 3 | item-stack: 4 | ==: org.bukkit.inventory.ItemStack 5 | v: 2865 6 | type: BARRIER 7 | meta: 8 | ==: ItemMeta 9 | meta-type: UNSPECIFIC 10 | display-name: "&f%%translation:[namespaces.%feature-namespace%.name]%: %%translation:[features.%feature-namespace%.%feature-key%.name]%" 11 | lore: 12 | - " " 13 | - "%generator-settings%" 14 | - " " 15 | - "%placement-modifier-settings%" 16 | - " " 17 | - "&7>> &b%%translation:[feature_selection_screen.default-icon.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/generator_icons.yml: -------------------------------------------------------------------------------- 1 | icons: 2 | minecraft: 3 | ore: 4 | type: "DIAMOND_BLOCK" 5 | scattered_ore: 6 | type: "NETHERITE_BLOCK" 7 | glowstone_blob: 8 | type: "GLOWSTONE" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/language_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[language_screen.name]%" 2 | finished: 3 | slot: 4 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: WARPED_SIGN 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[language_screen.finished.name]%" 12 | lore: 13 | - " " 14 | - "&7>> &b%%translation:[language_screen.finished.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/other/block_tag_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[block_tag_screen.name]%" 2 | default-icon: 3 | item-stack: 4 | ==: org.bukkit.inventory.ItemStack 5 | v: 2865 6 | type: NAME_TAG 7 | meta: 8 | ==: ItemMeta 9 | meta-type: UNSPECIFIC 10 | display-name: "&f%tag%" 11 | lore: 12 | - " " 13 | - "&7>> &b%%translation:[block_tag_screen.default-icon.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/other/target_block_state_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[target_block_state_screen.name]%" 2 | target: 3 | slot: 21 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: COAL 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[target_block_state_screen.target.name]%" 12 | lore: 13 | - " " 14 | - "%value-settings%" 15 | - " " 16 | - "&7>> &b%%translation:[target_block_state_screen.target.lore.left-click]% &7<<" 17 | state: 18 | slot: 23 19 | item-stack: 20 | ==: org.bukkit.inventory.ItemStack 21 | v: 2865 22 | type: COAL 23 | meta: 24 | ==: ItemMeta 25 | meta-type: UNSPECIFIC 26 | display-name: "&f%%translation:[target_block_state_screen.state.name]%" 27 | lore: 28 | - " " 29 | - "&r&b%%translation:[target_block_state_screen.state.lore.state]%: %state%" 30 | - " " 31 | - "&7>> &b%%translation:[target_block_state_screen.state.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/rule_test/block_match_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[block_match_screen.name]%" 2 | target: 3 | slot: 22 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: COAL 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[block_match_screen.block.name]%" 12 | lore: 13 | - " " 14 | - "&r&b%%translation:[block_match_screen.block.lore.block]%: %block%" 15 | - " " 16 | - "&7>> &b%%translation:[block_match_screen.block.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/rule_test/block_state_match_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[block_state_match_screen.name]%" 2 | target: 3 | slot: 22 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: COAL 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[block_state_match_screen.block-state.name]%" 12 | lore: 13 | - " " 14 | - "&r&b%%translation:[block_state_match_screen.block-state.lore.block-state]%: %block-state%" 15 | - " " 16 | - "&7>> &b%%translation:[block_state_match_screen.block-state.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/rule_test/tag_match_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[tag_match_screen.name]%" 2 | tag: 3 | slot: 22 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: NAME_TAG 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[tag_match_screen.tag.name]%" 12 | lore: 13 | - " " 14 | - "&r&b%%translation:[tag_match_screen.tag.lore.tag]%: %tag%" 15 | - " " 16 | - "&7>> &b%%translation:[tag_match_screen.tag.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/value/above_bottom_offset_integer_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[above_bottom_offset_integer_screen.name]%" 2 | base: 3 | slot: 22 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: COAL 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[above_bottom_offset_integer_screen.base.name]%" 12 | lore: 13 | - " " 14 | - "%value-settings%" 15 | - " " 16 | - "&7>> &b%%translation:[above_bottom_offset_integer_screen.base.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/value/below_top_offset_integer_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[below_top_offset_integer_screen.name]%" 2 | base: 3 | slot: 22 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: COAL 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[below_top_offset_integer_screen.base.name]%" 12 | lore: 13 | - " " 14 | - "%value-settings%" 15 | - " " 16 | - "&7>> &b%%translation:[below_top_offset_integer_screen.base.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/value/biased_to_bottom_integer_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[biased_to_bottom_integer_screen.name]%" 2 | min-inclusive: 3 | slot: 21 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: COAL 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[biased_to_bottom_integer_screen.min-inclusive.name]%" 12 | lore: 13 | - " " 14 | - "%value-settings%" 15 | - " " 16 | - "&7>> &b%%translation:[biased_to_bottom_integer_screen.min-inclusive.lore.left-click]% &7<<" 17 | max-inclusive: 18 | slot: 23 19 | item-stack: 20 | ==: org.bukkit.inventory.ItemStack 21 | v: 2865 22 | type: COAL 23 | meta: 24 | ==: ItemMeta 25 | meta-type: UNSPECIFIC 26 | display-name: "&f%%translation:[biased_to_bottom_integer_screen.max-inclusive.name]%" 27 | lore: 28 | - " " 29 | - "%value-settings%" 30 | - " " 31 | - "&7>> &b%%translation:[biased_to_bottom_integer_screen.max-inclusive.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/value/boolean_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[boolean_screen.name]%" 2 | true: 3 | slot: 20 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: LIME_TERRACOTTA 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[boolean_screen.true.name]%" 12 | lore: 13 | - " " 14 | - "&7>> &b%%translation:[boolean_screen.true.lore.left-click]% &7<<" 15 | false: 16 | slot: 24 17 | item-stack: 18 | ==: org.bukkit.inventory.ItemStack 19 | v: 2865 20 | type: RED_TERRACOTTA 21 | meta: 22 | ==: ItemMeta 23 | meta-type: UNSPECIFIC 24 | display-name: "&f%%translation:[boolean_screen.false.name]%" 25 | lore: 26 | - " " 27 | - "&7>> &b%%translation:[boolean_screen.false.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/value/clamped_integer_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[clamped_integer_screen.name]%" 2 | source: 3 | slot: 20 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: COAL 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[clamped_integer_screen.source.name]%" 12 | lore: 13 | - " " 14 | - "%value-settings%" 15 | - " " 16 | - "&7>> &b%%translation:[clamped_integer_screen.source.lore.left-click]% &7<<" 17 | min-inclusive: 18 | slot: 22 19 | item-stack: 20 | ==: org.bukkit.inventory.ItemStack 21 | v: 2865 22 | type: COAL 23 | meta: 24 | ==: ItemMeta 25 | meta-type: UNSPECIFIC 26 | display-name: "&f%%translation:[clamped_integer_screen.min-inclusive.name]%" 27 | lore: 28 | - " " 29 | - "%value-settings%" 30 | - " " 31 | - "&7>> &b%%translation:[clamped_integer_screen.min-inclusive.lore.left-click]% &7<<" 32 | max-inclusive: 33 | slot: 24 34 | item-stack: 35 | ==: org.bukkit.inventory.ItemStack 36 | v: 2865 37 | type: COAL 38 | meta: 39 | ==: ItemMeta 40 | meta-type: UNSPECIFIC 41 | display-name: "&f%%translation:[clamped_integer_screen.max-inclusive.name]%" 42 | lore: 43 | - " " 44 | - "%value-settings%" 45 | - " " 46 | - "&7>> &b%%translation:[clamped_integer_screen.max-inclusive.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/value/fixed_target_list_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[fixed_target_list_screen.name]%" 2 | default-icon: 3 | ==: org.bukkit.inventory.ItemStack 4 | v: 2865 5 | type: COAL 6 | meta: 7 | ==: ItemMeta 8 | meta-type: UNSPECIFIC 9 | display-name: "&f%%translation:[fixed_target_list_screen.default-icon.name]%" 10 | lore: 11 | - " " 12 | - "%value-settings%" 13 | - " " 14 | - "&7>> &b%%translation:[fixed_target_list_screen.default-icon.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/value/trapezoid_integer_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[trapezoid_integer_screen.name]%" 2 | min-inclusive: 3 | slot: 20 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: COAL 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[trapezoid_integer_screen.min-inclusive.name]%" 12 | lore: 13 | - " " 14 | - "%value-settings%" 15 | - " " 16 | - "&7>> &b%%translation:[trapezoid_integer_screen.min-inclusive.lore.left-click]% &7<<" 17 | max-inclusive: 18 | slot: 24 19 | item-stack: 20 | ==: org.bukkit.inventory.ItemStack 21 | v: 2865 22 | type: COAL 23 | meta: 24 | ==: ItemMeta 25 | meta-type: UNSPECIFIC 26 | display-name: "&f%%translation:[trapezoid_integer_screen.max-inclusive.name]%" 27 | lore: 28 | - " " 29 | - "%value-settings%" 30 | - " " 31 | - "&7>> &b%%translation:[trapezoid_integer_screen.max-inclusive.lore.left-click]% &7<<" 32 | plateau: 33 | slot: 22 34 | item-stack: 35 | ==: org.bukkit.inventory.ItemStack 36 | v: 2865 37 | type: COAL 38 | meta: 39 | ==: ItemMeta 40 | meta-type: UNSPECIFIC 41 | display-name: "&f%%translation:[trapezoid_integer_screen.plateau.name]%" 42 | lore: 43 | - " " 44 | - "%value-settings%" 45 | - " " 46 | - "&7>> &b%%translation:[trapezoid_integer_screen.plateau.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/value/uniform_integer_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[uniform_integer_screen.name]%" 2 | min-inclusive: 3 | slot: 21 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: COAL 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[uniform_integer_screen.min-inclusive.name]%" 12 | lore: 13 | - " " 14 | - "%value-settings%" 15 | - " " 16 | - "&7>> &b%%translation:[uniform_integer_screen.min-inclusive.lore.left-click]% &7<<" 17 | max-inclusive: 18 | slot: 23 19 | item-stack: 20 | ==: org.bukkit.inventory.ItemStack 21 | v: 2865 22 | type: COAL 23 | meta: 24 | ==: ItemMeta 25 | meta-type: UNSPECIFIC 26 | display-name: "&f%%translation:[uniform_integer_screen.max-inclusive.name]%" 27 | lore: 28 | - " " 29 | - "%value-settings%" 30 | - " " 31 | - "&7>> &b%%translation:[uniform_integer_screen.max-inclusive.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/value/weighted_list_integer_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[weighted_list_integer_screen.name]%" 2 | default-icon: 3 | ==: org.bukkit.inventory.ItemStack 4 | v: 2865 5 | type: COAL 6 | meta: 7 | ==: ItemMeta 8 | meta-type: UNSPECIFIC 9 | display-name: "&f%%translation:[weighted_list_integer_screen.default-icon.name]%" 10 | lore: 11 | - " " 12 | - "%value-settings%" 13 | - " " 14 | - "&7>> &b%%translation:[weighted_list_integer_screen.default-icon.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/gui/default/value/weighted_list_sub_integer_screen.yml: -------------------------------------------------------------------------------- 1 | name: "%%translation:[weighted_list_sub_integer_screen.name]%" 2 | data: 3 | slot: 21 4 | item-stack: 5 | ==: org.bukkit.inventory.ItemStack 6 | v: 2865 7 | type: COAL 8 | meta: 9 | ==: ItemMeta 10 | meta-type: UNSPECIFIC 11 | display-name: "&f%%translation:[weighted_list_sub_integer_screen.data.name]%" 12 | lore: 13 | - " " 14 | - "%value-settings%" 15 | - " " 16 | - "&7>> &b%%translation:[weighted_list_sub_integer_screen.data.lore.left-click]% &7<<" 17 | weight: 18 | slot: 23 19 | item-stack: 20 | ==: org.bukkit.inventory.ItemStack 21 | v: 2865 22 | type: COAL 23 | meta: 24 | ==: ItemMeta 25 | meta-type: UNSPECIFIC 26 | display-name: "&f%%translation:[weighted_list_sub_integer_screen.weight.name]%" 27 | lore: 28 | - " " 29 | - "%value-settings%" 30 | - " " 31 | - "&7>> &b%%translation:[weighted_list_sub_integer_screen.weight.lore.left-click]% &7<<" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/README.txt: -------------------------------------------------------------------------------- 1 | The default language files present in this directory should not be modified directly. 2 | They will be overridden on every plugin start. They are only references for adding your own language files. 3 | 4 | How to add own language files: 5 | 6 | 1: Make a copy of one of the existing language directories in this directory. 7 | 8 | 2: Rename the copied directory to the name of the language you want to add. 9 | Note: To avoid collisions with further added languages it is recommended to prefix your directory. For example: custom_ch. 10 | 11 | 3: In the directory of your language you find a file called info.yml. This file contains some basic information about the 12 | language, such as the names of the authors and an icon which is shown in the selection gui. Modify those values accordingly. 13 | 14 | 4: Now you can start translating the files. Once you start the server again the language files will show in the selecting screen. 15 | 16 | 5: Share your language files! 17 | You can help bringing this plugin to more languages by contributing your custom language files back to the plugin, 18 | they don't need to be completed every bit is helpful. 19 | You can do this by either making a PR (https://github.com/DerFrZocker/Ore-Control) or by sending the language files, 20 | via a discussion post https://github.com/DerFrZocker/Ore-Control/discussions. -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/de/feature_generators.yml: -------------------------------------------------------------------------------- 1 | feature-generators: 2 | minecraft: 3 | ore: 4 | name: "Erz" 5 | scattered_ore: 6 | name: "Verstreut Erz" 7 | glowstone_blob: 8 | name: "Leuchtstein Klecks" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/de/info.yml: -------------------------------------------------------------------------------- 1 | authors: [DerFrZocker] 2 | icon: 3 | ==: org.bukkit.inventory.ItemStack 4 | v: 2865 5 | type: PLAYER_HEAD 6 | meta: 7 | ==: ItemMeta 8 | meta-type: SKULL 9 | display-name: '{"text":"Deutsch"}' 10 | skull-owner: 11 | ==: PlayerProfile 12 | uniqueId: be211c23-d8aa-4119-bd0d-7f50fd115d9f 13 | properties: 14 | - name: textures 15 | value: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWU3ODk5YjQ4MDY4NTg2OTdlMjgzZjA4NGQ5MTczZmU0ODc4ODY0NTM3NzQ2MjZiMjRiZDhjZmVjYzc3YjNmIn19fQ== -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/de/namespaces.yml: -------------------------------------------------------------------------------- 1 | namespaces: 2 | minecraft: 3 | name: "Minecraft" 4 | feature: 5 | name: "Feature" 6 | terralith: 7 | name: "Terralith" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/de/placement_modifiers.yml: -------------------------------------------------------------------------------- 1 | placement-modifiers: 2 | minecraft: 3 | rarity_filter: 4 | name: "Raritätsfilter" 5 | surface_relative_threshold_filter: 6 | name: "Relativer Oberflächenschwellenwertfilter" 7 | surface_water_depth_filter: 8 | name: "Oberflächenwasser Tiefenfilter" 9 | count: 10 | name: "Anzahl" 11 | height_range: 12 | name: "Höhenbereich" 13 | feature: 14 | activation: 15 | name: "Aktivierung" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/de/rule_tests.yml: -------------------------------------------------------------------------------- 1 | rule-tests: 2 | minecraft: 3 | always_true: 4 | name: "Immer Wahr" 5 | block_match: 6 | name: "Block Übereinstimmung" 7 | blockstate_match: 8 | name: "Blockzustand Übereinstimmung" 9 | random_block_match: 10 | name: "Zufällige Block Übereinstimmung" 11 | random_blockstate_match: 12 | name: "Zufällige Blockzustand Übereinstimmung" 13 | tag_match: 14 | name: "Tag Übereinstimmung" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/de/settings.yml: -------------------------------------------------------------------------------- 1 | settings: 2 | size: 3 | name: "Größe" 4 | discard-chance-on-air-exposure: 5 | name: "Stop Chance Bei Luft Berührung" 6 | count: 7 | name: "Anzahl" 8 | height: 9 | name: "Höhe" 10 | chance: 11 | name: "Chance" 12 | min-inclusive: 13 | name: "Min Inklusive" 14 | max-inclusive: 15 | name: "Max Inklusive" 16 | max-water-depth: 17 | name: "Max Wasser Tiefe" 18 | activate: 19 | name: "Aktivieren" 20 | targets: 21 | name: "Ziele" 22 | value-settings: 23 | min-inclusive: 24 | name: "Min Inklusive" 25 | max-inclusive: 26 | name: "Max Inklusive" 27 | plateau: 28 | name: "Plateau" 29 | base: 30 | name: "Basis" 31 | data: 32 | name: "Daten" 33 | weight: 34 | name: "Gewicht" 35 | target-block-state: 36 | name: "Ziel Blockzustand" 37 | state: 38 | name: "Zustand" 39 | target: 40 | name: "Ziel" 41 | entry: 42 | name: "Eintrag" 43 | block: 44 | name: "Block" 45 | block-state: 46 | name: "Blockzustand" 47 | probability: 48 | name: "Wahrscheinlichkeit" 49 | tag: 50 | name: "Tag" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/de/useful_links.yml: -------------------------------------------------------------------------------- 1 | useful-links: 2 | header: "&7~~~~~~~~~~~~~~~~~&bNützliche Links&7~~~~~~~~~~~~~~~~~" 3 | prefix: "&bOre Control &7>>&f " 4 | footer: "&7~~~~~~~~~~~~~~~~~&bNützliche Links&7~~~~~~~~~~~~~~~~~" 5 | hover: "Klicke Mich!" 6 | questions: 7 | GENERATOR_INFO: "Was ist %%translation:[namespaces.%generator-namespace%.name]% %%translation:[feature-generators.%generator-namespace%.%generator-key%.name]% für ein Generator?" 8 | PLACEMENT_MODIFIER_INFO: "Was ist %%translation:[namespaces.%placement-modifier-namespace%.name]% %%translation:[placement-modifiers.%placement-modifier-namespace%.%placement-modifier-key%.name]% für ein Plaziermodifikator?" 9 | INVENTORY_GUI_SCREENS_EXPLAINED: "Was kann ich setzen / machen in der '%%translation:[%screen-name-key%.name]%' gui screen?" 10 | COMMON_QUESTIONS: "%%translation:[useful-links.common-questions.%common-question-key%]%" 11 | common-questions: 12 | why-are-there-multiple-features-with-the-same-ore: "Warum gibt es mehrere features mit dem selben Erz?" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/de/value_types.yml: -------------------------------------------------------------------------------- 1 | value-types: 2 | feature: 3 | fixed_integer: 4 | name: "Feste Zahl" 5 | fixed_double_to_integer: 6 | name: "Feste Gleitkommazahl" 7 | uniform_integer: 8 | name: "Uniform" 9 | trapezoid_integer: 10 | name: "Trapezförmig" 11 | above_bottom_offset_integer: 12 | name: "Oberhalb Des Unteren Offsets" 13 | below_top_offset_integer: 14 | name: "Unterhalb Des Oberen Offsets" 15 | fixed_float: 16 | name: "Feste Gleitkommazahl" 17 | weighted_list_integer: 18 | name: "Gewichtet" 19 | biased_to_bottom_integer: 20 | name: "Verzerrt Nach Unten" 21 | fixed_boolean: 22 | name: "Fester Boolean" 23 | clamped_integer: 24 | name: "Geklemmt" 25 | clamped_normal_integer: 26 | name: "Normal Geklemmt" 27 | fixed_target_list: 28 | name: "Feste Zielliste" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/en/feature_generators.yml: -------------------------------------------------------------------------------- 1 | feature-generators: 2 | minecraft: 3 | ore: 4 | name: "Ore" 5 | scattered_ore: 6 | name: "Scattered Ore" 7 | glowstone_blob: 8 | name: "Glowstone Blob" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/en/info.yml: -------------------------------------------------------------------------------- 1 | authors: [DerFrZocker] 2 | icon: 3 | ==: org.bukkit.inventory.ItemStack 4 | v: 2865 5 | type: PLAYER_HEAD 6 | meta: 7 | ==: ItemMeta 8 | meta-type: SKULL 9 | display-name: '{"text":"English"}' 10 | skull-owner: 11 | ==: PlayerProfile 12 | uniqueId: d4c559ed-72c4-43bc-a775-a19cd470824a 13 | properties: 14 | - name: textures 15 | value: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmVlNWM4NTBhZmJiN2Q4ODQzMjY1YTE0NjIxMWFjOWM2MTVmNzMzZGNjNWE4ZTIxOTBlNWMyNDdkZWEzMiJ9fX0= -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/en/namespaces.yml: -------------------------------------------------------------------------------- 1 | namespaces: 2 | minecraft: 3 | name: "Minecraft" 4 | feature: 5 | name: "Feature" 6 | terralith: 7 | name: "Terralith" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/en/placement_modifiers.yml: -------------------------------------------------------------------------------- 1 | placement-modifiers: 2 | minecraft: 3 | rarity_filter: 4 | name: "Rarity Filter" 5 | surface_relative_threshold_filter: 6 | name: "Surface Relative Threshold Filter" 7 | surface_water_depth_filter: 8 | name: "Surface Water Depth Filter" 9 | count: 10 | name: "Count" 11 | height_range: 12 | name: "Height Range" 13 | feature: 14 | activation: 15 | name: "Activation" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/en/rule_tests.yml: -------------------------------------------------------------------------------- 1 | rule-tests: 2 | minecraft: 3 | always_true: 4 | name: "Always True" 5 | block_match: 6 | name: "Block Match" 7 | blockstate_match: 8 | name: "Block State Match" 9 | random_block_match: 10 | name: "Random Block Match" 11 | random_blockstate_match: 12 | name: "Random Blockstate Match" 13 | tag_match: 14 | name: "Tag Match" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/en/settings.yml: -------------------------------------------------------------------------------- 1 | settings: 2 | size: 3 | name: "Size" 4 | discard-chance-on-air-exposure: 5 | name: "Discard Chance On Air Exposure" 6 | count: 7 | name: "Count" 8 | height: 9 | name: "Height" 10 | chance: 11 | name: "Chance" 12 | min-inclusive: 13 | name: "Min Inclusive" 14 | max-inclusive: 15 | name: "Max Inclusive" 16 | max-water-depth: 17 | name: "Max Water Depth" 18 | activate: 19 | name: "Activate" 20 | targets: 21 | name: "Targets" 22 | value-settings: 23 | min-inclusive: 24 | name: "Min Inclusive" 25 | max-inclusive: 26 | name: "Max Inclusive" 27 | plateau: 28 | name: "Plateau" 29 | base: 30 | name: "Base" 31 | data: 32 | name: "Data" 33 | weight: 34 | name: "Weight" 35 | target-block-state: 36 | name: "Target Block State" 37 | state: 38 | name: "State" 39 | target: 40 | name: "Target" 41 | entry: 42 | name: "Entry" 43 | block: 44 | name: "Block" 45 | block-state: 46 | name: "Block State" 47 | probability: 48 | name: "Probability" 49 | tag: 50 | name: "Tag" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/en/useful_links.yml: -------------------------------------------------------------------------------- 1 | useful-links: 2 | header: "&7~~~~~~~~~~~~~~~~~~&bUseful Links&7~~~~~~~~~~~~~~~~~~" 3 | prefix: "&bOre Control &7>>&f " 4 | footer: "&7~~~~~~~~~~~~~~~~~~&bUseful Links&7~~~~~~~~~~~~~~~~~~" 5 | hover: "Click Me!" 6 | questions: 7 | GENERATOR_INFO: "What is %%translation:[namespaces.%generator-namespace%.name]% %%translation:[feature-generators.%generator-namespace%.%generator-key%.name]% for a generator?" 8 | PLACEMENT_MODIFIER_INFO: "What is %%translation:[namespaces.%placement-modifier-namespace%.name]% %%translation:[placement-modifiers.%placement-modifier-namespace%.%placement-modifier-key%.name]% for a placement modifier?" 9 | INVENTORY_GUI_SCREENS_EXPLAINED: "What can I set / make in the '%%translation:[%screen-name-key%.name]%' gui screen?" 10 | COMMON_QUESTIONS: "%%translation:[useful-links.common-questions.%common-question-key%]%" 11 | common-questions: 12 | why-are-there-multiple-features-with-the-same-ore: "Why are there multiple features with the same ore?" -------------------------------------------------------------------------------- /ore-control/src/main/resources/lang/en/value_types.yml: -------------------------------------------------------------------------------- 1 | value-types: 2 | feature: 3 | fixed_integer: 4 | name: "Fixed Integer" 5 | fixed_double_to_integer: 6 | name: "Fixed Double" 7 | uniform_integer: 8 | name: "Uniform" 9 | trapezoid_integer: 10 | name: "Trapezoid" 11 | above_bottom_offset_integer: 12 | name: "Above Bottom Offset" 13 | below_top_offset_integer: 14 | name: "Below Top Offset" 15 | fixed_float: 16 | name: "Fixed Float" 17 | weighted_list_integer: 18 | name: "Weighted" 19 | biased_to_bottom_integer: 20 | name: "Biased To Bottom" 21 | fixed_boolean: 22 | name: "Fixed Boolean" 23 | clamped_integer: 24 | name: "Clamped" 25 | clamped_normal_integer: 26 | name: "Normal Clamped" 27 | fixed_target_list: 28 | name: "Fixed Target List" -------------------------------------------------------------------------------- /ore-control/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | name: ${parent.name} 2 | version: ${project.version} 3 | description: ${project.description} 4 | author: ${project.author} 5 | main: de.derfrzocker.ore.control.OreControl 6 | api-version: "1.13" 7 | load: STARTUP 8 | libraries: 9 | - net.objecthunter:exp4j:0.4.8 10 | commands: 11 | ore-control: 12 | permission: "ore.control" 13 | description: "Open the ore control gui" 14 | usage: "Usage: /" 15 | --------------------------------------------------------------------------------