Skip to content

Commit b17829b

Browse files
authored
Merge pull request #113 from Polari-Stars-MC/main
拉取
2 parents 7e2230b + 73d4a9c commit b17829b

File tree

6 files changed

+109
-13
lines changed

6 files changed

+109
-13
lines changed

src/main/java/org/polaris2023/wild_wind/common/init/ModBlocks.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -410,10 +410,10 @@ public class ModBlocks {
410410
@I18n(en_us = "Baobab Wall Sign", zh_cn = "墙上的猴面包木告示牌", zh_tw = "牆上的猴麵包木告示牌", descriptionId = "block.wild_wind.baobab_wall_sign")
411411
public static final DeferredBlock<WallSignBlock> BAOBAB_WALL_SIGN =
412412
register("baobab_wall_sign", props -> new WallSignBlock(ModWoodSettings.BAOBAB.woodType, props), BlockBehaviour.Properties.ofFullCopy(Blocks.ACACIA_WALL_SIGN).lootFrom(BAOBAB_SIGN));
413-
@I18n(en_us = "Baobab Hanging Sign", zh_cn = "猴面包木悬挂式告示牌", zh_tw = "猴麵包木懸挂式告示牌")
413+
@I18n(en_us = "Baobab Hanging Sign", zh_cn = "悬挂式猴面包木告示牌", zh_tw = "懸挂式猴麵包木告示牌")
414414
public static final DeferredBlock<CeilingHangingSignBlock> BAOBAB_HANGING_SIGN =
415415
register("baobab_hanging_sign", props -> new CeilingHangingSignBlock(ModWoodSettings.BAOBAB.woodType, props), BlockBehaviour.Properties.ofFullCopy(Blocks.ACACIA_HANGING_SIGN));
416-
@I18n(en_us = "Baobab Wall Hanging Sign", zh_cn = "墙上的猴面包木悬挂式告示牌", zh_tw = "牆上的猴麵包木懸挂式告示牌", descriptionId = "block.wild_wind.baobab_wall_hanging_sign")
416+
@I18n(en_us = "Baobab Wall Hanging Sign", zh_cn = "墙上的悬挂式猴面包木告示牌", zh_tw = "牆上的懸挂式猴麵包木告示牌", descriptionId = "block.wild_wind.baobab_wall_hanging_sign")
417417
public static final DeferredBlock<WallHangingSignBlock> BAOBAB_WALL_HANGING_SIGN =
418418
register("baobab_wall_hanging_sign", props -> new WallHangingSignBlock(ModWoodSettings.BAOBAB.woodType, props), BlockBehaviour.Properties.ofFullCopy(Blocks.ACACIA_WALL_HANGING_SIGN).lootFrom(BAOBAB_HANGING_SIGN));
419419
public static final DeferredItem<BlockItem> BAOBAB_LOG_ITEM =

src/main/java/org/polaris2023/wild_wind/datagen/ModRecipeProvider.java

+40-4
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ protected void addSmeltingRecipes() {
7272
SimpleCookingRecipeBuilder smelting = smelting(Items.TERRACOTTA, RecipeCategory.BUILDING_BLOCKS, ModBlocks.GLAZED_TERRACOTTA.get(),0.35F);
7373
add(smelting);
7474

75-
75+
smeltingAndBlasting(Ingredient.of(ModBlocks.SALT_ORE_ITEM.get(), ModBlocks.DEEPSLATE_SALT_ORE_ITEM.get()), RecipeCategory.MISC, ModBaseItems.SALT.get(), 0.7F);
7676
}
7777

7878
public static Criterion<InventoryChangeTrigger.TriggerInstance> has(ItemLike... likes) {
@@ -162,10 +162,7 @@ protected static <T extends RecipeBuilder> void unlockedBy(T t, TagKey<Item> tag
162162
t.unlockedBy(("has" + "_" + tag.location()).toLowerCase(Locale.ROOT), has(tag));
163163
}
164164

165-
166-
167165
protected void addShapelessRecipe() {
168-
169166
add(shapeless(RecipeCategory.FOOD, ModBaseFoods.FISH_CHOWDER.get(), 1, fish_chowder -> {
170167
unlockedBy(fish_chowder, ModBaseFoods.RAW_TROUT.get(), Items.COD, Items.SALMON);
171168
unlockedBy(fish_chowder, Items.BROWN_MUSHROOM, Items.RED_MUSHROOM);
@@ -302,6 +299,15 @@ public static SimpleCookingRecipeBuilder smelting(
302299
.unlockedBy(BuiltInRegistries.ITEM.getKey(item).toString(), has(item));
303300
}
304301

302+
public static SimpleCookingRecipeBuilder blasting(
303+
Ingredient input, RecipeCategory category, ItemLike result, float exp, int cookingTime
304+
) {
305+
ItemStack[] items = input.getItems();
306+
Item item = items[0].getItem();
307+
return SimpleCookingRecipeBuilder.blasting(input, category, result, exp, cookingTime)
308+
.unlockedBy(BuiltInRegistries.ITEM.getKey(item).toString(), has(item));
309+
}
310+
305311
public static SimpleCookingRecipeBuilder smoking(
306312
Ingredient input, RecipeCategory category, ItemLike result, float exp, int cookingTime
307313
) {
@@ -346,12 +352,23 @@ public static SimpleCookingRecipeBuilder smelting(
346352
.unlockedBy(BuiltInRegistries.ITEM.getKey(input.asItem()).toString(), has(input));
347353
}
348354

355+
public static SimpleCookingRecipeBuilder blasting(
356+
ItemLike input, RecipeCategory category, ItemLike result, float exp, int cookingTime) {
357+
return SimpleCookingRecipeBuilder.blasting(Ingredient.of(input), category, result, exp, cookingTime)
358+
.unlockedBy(BuiltInRegistries.ITEM.getKey(input.asItem()).toString(), has(input));
359+
}
360+
349361
public static SimpleCookingRecipeBuilder smoking(
350362
ItemLike input, RecipeCategory category, ItemLike result, float exp, int cookingTime) {
351363
return SimpleCookingRecipeBuilder.smoking(Ingredient.of(input), category, result, exp, cookingTime)
352364
.unlockedBy(BuiltInRegistries.ITEM.getKey(input.asItem()).toString(), has(input));
353365
}
354366

367+
public void smeltingAndBlasting(Ingredient input, RecipeCategory category, ItemLike result, float exp) {
368+
add(smelting(input, category, result, exp));
369+
add(blasting(input, category, result, exp), "blasting/");
370+
}
371+
355372
public void smeltingAndSmoking(Ingredient input, RecipeCategory category, ItemLike result, float exp) {
356373
add(smelting(input, category, result, exp));
357374
add(smoking(input, category, result, exp), "smoking/");
@@ -377,13 +394,26 @@ public static SimpleCookingRecipeBuilder smoking(
377394
return smoking(input, category, result, exp, 200);
378395
}
379396

397+
public static SimpleCookingRecipeBuilder blasting(
398+
Ingredient input, RecipeCategory category, ItemLike result, float exp
399+
) {
400+
return blasting(input, category, result, exp, 200);
401+
}
402+
380403
public void smeltingAndSmoking(
381404
ItemLike input, RecipeCategory category, ItemLike result, float exp
382405
) {
383406
add(smelting(input, category, result, exp));
384407
add(smoking(input, category, result, exp), "smoking/");
385408
}
386409

410+
public void smeltingAndBlasting(
411+
ItemLike input, RecipeCategory category, ItemLike result, float exp
412+
) {
413+
add(smelting(input, category, result, exp));
414+
add(blasting(input, category, result, exp), "blasting/");
415+
}
416+
387417
public void smeltingSmokingAndCampfire(ItemLike input, RecipeCategory category, ItemLike result, float exp) {
388418
add(smelting(input, category, result, exp));
389419
add(smoking(input, category, result, exp), "smoking/");
@@ -402,6 +432,12 @@ public static SimpleCookingRecipeBuilder smoking(
402432
return smoking(input, category, result, exp, 200);
403433
}
404434

435+
public static SimpleCookingRecipeBuilder blasting(
436+
ItemLike input, RecipeCategory category, ItemLike result, float exp
437+
) {
438+
return blasting(input, category, result, exp, 200);
439+
}
440+
405441
public void add(RecipeBuilder builder) {
406442
list.put(BuiltInRegistries.ITEM.getKey(builder.getResult()), builder);
407443
}

src/main/java/org/polaris2023/wild_wind/datagen/loot/ModBlockLootSubProvider.java

+23-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,19 @@
22

33
import com.google.common.collect.ImmutableSet;
44
import net.minecraft.core.HolderLookup;
5+
import net.minecraft.core.registries.Registries;
56
import net.minecraft.data.loot.BlockLootSubProvider;
67
import net.minecraft.world.flag.FeatureFlags;
78
import net.minecraft.world.item.Item;
89
import net.minecraft.world.item.Items;
10+
import net.minecraft.world.item.enchantment.Enchantment;
11+
import net.minecraft.world.item.enchantment.Enchantments;
912
import net.minecraft.world.level.block.Block;
13+
import net.minecraft.world.level.storage.loot.LootTable;
14+
import net.minecraft.world.level.storage.loot.entries.LootItem;
15+
import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount;
16+
import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction;
17+
import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator;
1018
import org.polaris2023.wild_wind.common.init.ModBlocks;
1119
import org.polaris2023.wild_wind.common.init.ModInitializer;
1220
import org.polaris2023.wild_wind.common.init.items.ModBaseItems;
@@ -40,8 +48,8 @@ public void generate() {
4048
this.dropSelf(ModBlocks.CONCRETE.get());
4149
this.dropSelf(ModBlocks.GLAZED_TERRACOTTA.get());
4250
this.dropSelf(ModBlocks.SALT_BLOCK.get());
43-
this.dropOther(ModBlocks.SALT_ORE.get(), ModBaseItems.SALT.get());
44-
this.dropOther(ModBlocks.DEEPSLATE_SALT_ORE.get(), ModBaseItems.SALT.get());
51+
this.add(ModBlocks.SALT_ORE.get(), this.createSaltOreDrops(ModBlocks.SALT_ORE.get()));
52+
this.add(ModBlocks.DEEPSLATE_SALT_ORE.get(), this.createSaltOreDrops(ModBlocks.DEEPSLATE_SALT_ORE.get()));
4553
this.dropSelf(ModBlocks.AZALEA_LOG.get());
4654
this.dropSelf(ModBlocks.STRIPPED_AZALEA_LOG.get());
4755
this.dropSelf(ModBlocks.AZALEA_WOOD.get());
@@ -70,4 +78,17 @@ public void generate() {
7078
this.dropSelf(ModBlocks.PALM_SAPLING.get());
7179
this.dropSelf(ModBlocks.BAOBAB_SAPLING.get());
7280
}
81+
82+
protected LootTable.Builder createSaltOreDrops(Block block) {
83+
HolderLookup.RegistryLookup<Enchantment> registrylookup = this.registries.lookupOrThrow(Registries.ENCHANTMENT);
84+
return this.createSilkTouchDispatchTable(
85+
block,
86+
this.applyExplosionDecay(
87+
block,
88+
LootItem.lootTableItem(ModBaseItems.SALT)
89+
.apply(SetItemCountFunction.setCount(UniformGenerator.between(4.0F, 9.0F)))
90+
.apply(ApplyBonusCount.addOreBonusCount(registrylookup.getOrThrow(Enchantments.FORTUNE)))
91+
)
92+
);
93+
}
7394
}

src/main/java/org/polaris2023/wild_wind/datagen/tag/ModBlockTagsProvider.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ protected void addTags(HolderLookup.Provider provider) {
3939
tag(BlockTags.SNOW_LAYER_CANNOT_SURVIVE_ON).add(ModBlocks.BRITTLE_ICE.get());
4040

4141
//Mineable
42-
tag(BlockTags.MINEABLE_WITH_PICKAXE).add(ModBlocks.BRITTLE_ICE.get(), ModBlocks.SALT_ORE.get());
42+
tag(BlockTags.MINEABLE_WITH_PICKAXE).add(ModBlocks.BRITTLE_ICE.get(), ModBlocks.SALT_ORE.get(), ModBlocks.DEEPSLATE_SALT_ORE.get());
4343
tag(BlockTags.MINEABLE_WITH_AXE).add(ModBlocks.PALM_CROWN.get());
4444

4545
tag(ModBlockTags.AZALEA_LOGS).add(ModBlocks.AZALEA_LOG.get(), ModBlocks.AZALEA_WOOD.get(), ModBlocks.STRIPPED_AZALEA_LOG.get(), ModBlocks.STRIPPED_AZALEA_WOOD.get());

src/main/java/org/polaris2023/wild_wind/datagen/worldgen/ModConfiguredFeatureRegistry.java

+25-2
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,34 @@
44
import net.minecraft.data.worldgen.BootstrapContext;
55
import net.minecraft.data.worldgen.features.FeatureUtils;
66
import net.minecraft.resources.ResourceKey;
7+
import net.minecraft.tags.BlockTags;
78
import net.minecraft.util.valueproviders.UniformInt;
89
import net.minecraft.world.level.block.Blocks;
910
import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate;
1011
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
1112
import net.minecraft.world.level.levelgen.feature.Feature;
1213
import net.minecraft.world.level.levelgen.feature.configurations.DiskConfiguration;
1314
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
15+
import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration;
1416
import net.minecraft.world.level.levelgen.feature.stateproviders.RuleBasedBlockStateProvider;
17+
import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest;
18+
import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest;
1519
import org.polaris2023.wild_wind.common.init.ModBlocks;
1620
import org.polaris2023.wild_wind.common.init.ModFeatures;
1721
import org.polaris2023.wild_wind.util.Helpers;
1822

1923
import java.util.List;
2024

2125
public class ModConfiguredFeatureRegistry {
22-
public static final ResourceKey<ConfiguredFeature<?, ?>> BRITTLE_ICE = ResourceKey.create(Registries.CONFIGURED_FEATURE, Helpers.location("brittle_ice"));
23-
public static final ResourceKey<ConfiguredFeature<?, ?>> DISK_BRITTLE_ICE = ResourceKey.create(Registries.CONFIGURED_FEATURE, Helpers.location("disk_brittle_ice"));
26+
private static final RuleTest STONE_ORE_REPLACEABLES = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES);
27+
private static final RuleTest DEEPSLATE_ORE_REPLACEABLES = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES);
28+
29+
public static final ResourceKey<ConfiguredFeature<?, ?>> BRITTLE_ICE = create("brittle_ice");
30+
public static final ResourceKey<ConfiguredFeature<?, ?>> DISK_BRITTLE_ICE = create("disk_brittle_ice");
31+
32+
//Ore
33+
public static final ResourceKey<ConfiguredFeature<?, ?>> ORE_SALT = create("ore_salt");
34+
public static final ResourceKey<ConfiguredFeature<?, ?>> ORE_SALT_BURIED = create("ore_salt_buried");
2435

2536
public static void bootstrap(BootstrapContext<ConfiguredFeature<?, ?>> context) {
2637
FeatureUtils.register(context, BRITTLE_ICE, ModFeatures.BRITTLE_ICE, NoneFeatureConfiguration.NONE);
@@ -29,5 +40,17 @@ public static void bootstrap(BootstrapContext<ConfiguredFeature<?, ?>> context)
2940
BlockPredicate.matchesBlocks(List.of(Blocks.ICE, ModBlocks.BRITTLE_ICE.get())),
3041
UniformInt.of(4, 6), 1
3142
));
43+
FeatureUtils.register(context, ORE_SALT, Feature.ORE, new OreConfiguration(List.of(
44+
OreConfiguration.target(STONE_ORE_REPLACEABLES, ModBlocks.SALT_ORE.get().defaultBlockState()),
45+
OreConfiguration.target(DEEPSLATE_ORE_REPLACEABLES, ModBlocks.DEEPSLATE_SALT_ORE.get().defaultBlockState())
46+
), 7));
47+
FeatureUtils.register(context, ORE_SALT_BURIED, Feature.ORE, new OreConfiguration(List.of(
48+
OreConfiguration.target(STONE_ORE_REPLACEABLES, ModBlocks.SALT_ORE.get().defaultBlockState()),
49+
OreConfiguration.target(DEEPSLATE_ORE_REPLACEABLES, ModBlocks.DEEPSLATE_SALT_ORE.get().defaultBlockState())
50+
), 7, 1.0F));
51+
}
52+
53+
private static ResourceKey<ConfiguredFeature<?, ?>> create(String name) {
54+
return ResourceKey.create(Registries.CONFIGURED_FEATURE, Helpers.location(name));
3255
}
3356
}

src/main/java/org/polaris2023/wild_wind/datagen/worldgen/ModPlacedFeatureRegistry.java

+18-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@
1414
import java.util.List;
1515

1616
public class ModPlacedFeatureRegistry {
17-
public static final ResourceKey<PlacedFeature> BRITTLE_ICE = ResourceKey.create(Registries.PLACED_FEATURE, Helpers.location("brittle_ice"));
18-
public static final ResourceKey<PlacedFeature> DISK_BRITTLE_ICE = ResourceKey.create(Registries.PLACED_FEATURE, Helpers.location("disk_brittle_ice"));
17+
public static final ResourceKey<PlacedFeature> BRITTLE_ICE = create("brittle_ice");
18+
public static final ResourceKey<PlacedFeature> DISK_BRITTLE_ICE = create("disk_brittle_ice");
19+
20+
//Ore
21+
public static final ResourceKey<PlacedFeature> ORE_SALT = create("ore_salt");
22+
public static final ResourceKey<PlacedFeature> ORE_SALT_BURIED = create("ore_salt_buried");
1923

2024
public static void bootstrap(BootstrapContext<PlacedFeature> context) {
2125
HolderGetter<ConfiguredFeature<?, ?>> configuredFeaturesLookup = context.lookup(Registries.CONFIGURED_FEATURE);
@@ -27,9 +31,21 @@ public static void bootstrap(BootstrapContext<PlacedFeature> context) {
2731
context, DISK_BRITTLE_ICE, configuredFeaturesLookup.getOrThrow(ModConfiguredFeatureRegistry.DISK_BRITTLE_ICE),
2832
orePlacement(CountPlacement.of(6), HeightmapPlacement.onHeightmap(Heightmap.Types.OCEAN_FLOOR_WG))
2933
);
34+
PlacementUtils.register(
35+
context, ORE_SALT, configuredFeaturesLookup.getOrThrow(ModConfiguredFeatureRegistry.ORE_SALT),
36+
orePlacement(CountPlacement.of(2), HeightRangePlacement.triangle(VerticalAnchor.absolute(-32), VerticalAnchor.absolute(32)))
37+
);
38+
PlacementUtils.register(
39+
context, ORE_SALT_BURIED, configuredFeaturesLookup.getOrThrow(ModConfiguredFeatureRegistry.ORE_SALT_BURIED),
40+
orePlacement(CountPlacement.of(2), HeightRangePlacement.uniform(VerticalAnchor.absolute(-64), VerticalAnchor.absolute(64)))
41+
);
3042
}
3143

3244
private static List<PlacementModifier> orePlacement(PlacementModifier countPlacement, PlacementModifier heightRange) {
3345
return List.of(countPlacement, InSquarePlacement.spread(), heightRange, BiomeFilter.biome());
3446
}
47+
48+
private static ResourceKey<PlacedFeature> create(String name) {
49+
return ResourceKey.create(Registries.PLACED_FEATURE, Helpers.location(name));
50+
}
3551
}

0 commit comments

Comments
 (0)