重构loottable生成

This commit is contained in:
17146 2025-04-06 22:25:15 +08:00 committed by Light_Quanta
parent 5a6a08d753
commit 68b80323ac
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
6 changed files with 33 additions and 16 deletions

View file

@ -1,4 +1,4 @@
// 1.21.1 2025-04-02T18:07:51.8657658 Loot Tables
// 1.21.1 2025-04-07T06:07:51.636744 Loot Tables
98386b2e65b2afb7cf5b0cabf6a7b0f062c1e640 data/superbwarfare/loot_table/blocks/barbed_wire.json
811e69929a14e6736015849c220100bb58d914c9 data/superbwarfare/loot_table/blocks/cemented_carbide_block.json
1f482bc1f0a1026d0e1b75ee28c6f541b56747a5 data/superbwarfare/loot_table/blocks/charging_station.json
@ -20,4 +20,5 @@ fb31a40f6a04000f317823cbb80eda8588ba9c69 data/superbwarfare/loot_table/blocks/si
073b9c242ea372f7b34883835c0b02a9ca8d94e5 data/superbwarfare/loot_table/blocks/small_container.json
83112ebff477e322bd3d23ed4653c7c02b230473 data/superbwarfare/loot_table/blocks/steel_block.json
71fc892124b5343e10688cabc2fb7c87d83cfef8 data/superbwarfare/loot_table/blocks/tungsten_block.json
6e2346c664cd643bff31c0a26e463c6c8dd46e37 data/superbwarfare/loot_table/chests/ancient_cpu.json
7e75ff103ccdbcf6be6f61413a4173115195f0a9 data/superbwarfare/loot_table/containers/blueprints.json

View file

@ -2,20 +2,21 @@
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"bonus_rolls": 1,
"bonus_rolls": 1.0,
"conditions": [
{
"chance": 0.4,
"condition": "minecraft:random_chance"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "superbwarfare:ancient_cpu"
"name": "superbwarfare:ancient_cpu",
"quality": 1
}
],
"conditions": [
{
"condition": "minecraft:random_chance",
"chance": 0.4
}
]
"rolls": 1.0
}
],
"random_sequence": "superbwarfare:chests/ancient_cpu"

View file

@ -6,24 +6,39 @@ import net.minecraft.core.HolderLookup;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.loot.LootTableSubProvider;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.storage.loot.LootPool;
import net.minecraft.world.level.storage.loot.LootTable;
import net.minecraft.world.level.storage.loot.entries.LootItem;
import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceCondition;
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
import org.jetbrains.annotations.NotNull;
import java.util.function.BiConsumer;
public class ModContainerLootProvider implements LootTableSubProvider {
public class ModCustomLootProvider implements LootTableSubProvider {
public ModContainerLootProvider(HolderLookup.Provider provider) {
public static ResourceLocation containers(String name) {
return Mod.loc("containers/" + name);
}
public static ResourceLocation chests(String name) {
return Mod.loc("chests/" + name);
}
public ModCustomLootProvider(HolderLookup.Provider provider) {
super();
}
@Override
public void generate(@NotNull BiConsumer<ResourceKey<LootTable>, LootTable.Builder> output) {
output.accept(ResourceKey.create(Registries.LOOT_TABLE, Mod.loc("containers/blueprints")),
output.accept(ResourceKey.create(Registries.LOOT_TABLE, chests("ancient_cpu")),
LootTable.lootTable().withPool(singleItem(ModItems.ANCIENT_CPU.get(), 1, 1, 1, 1)
.when(() -> LootItemRandomChanceCondition.randomChance(0.4f).build()))
);
output.accept(ResourceKey.create(Registries.LOOT_TABLE, containers("blueprints")),
LootTable.lootTable().withPool(multiItems(1, 0,
new PoolTriple(ModItems.GLOCK_17_BLUEPRINT.get(), 60, 0),
new PoolTriple(ModItems.MP_443_BLUEPRINT.get(), 60, 0),

View file

@ -13,7 +13,7 @@ public class ModLootTableProvider {
public static LootTableProvider create(PackOutput output, CompletableFuture<HolderLookup.Provider> registries) {
return new LootTableProvider(output, Set.of(), List.of(
new LootTableProvider.SubProviderEntry(ModBlockLootProvider::new, LootContextParamSets.BLOCK),
new LootTableProvider.SubProviderEntry(ModContainerLootProvider::new, LootContextParamSets.CHEST)
new LootTableProvider.SubProviderEntry(ModCustomLootProvider::new, LootContextParamSets.CHEST)
), registries);
}
}

View file

@ -500,7 +500,7 @@
"tips.superbwarfare.shoot.rings": "Rings",
"tips.superbwarfare.annihilator.energy_not_enough": "Energy is Not Enough",
"tips.superbwarfare.target.down": "Target Down %1$s",
"tips.superbwarfare.target.damage": "Damage: %1$s Distance: %2$sm",
"tips.superbwarfare.target.damage": "Damage: %1$s Distance: %2$s",
"tips.superbwarfare.mortar.range": "Range: ",
"tips.superbwarfare.mortar.yaw": "Yaw: ",
"tips.superbwarfare.mortar.pitch": "Pitch: ",

View file

@ -498,7 +498,7 @@
"tips.superbwarfare.shoot.rings": "环",
"tips.superbwarfare.annihilator.energy_not_enough": "能量不足",
"tips.superbwarfare.target.down": "击倒目标 %1$s",
"tips.superbwarfare.target.damage": "伤害:%1$s 距离:%2$sm",
"tips.superbwarfare.target.damage": "伤害:%1$s 距离:%2$s",
"tips.superbwarfare.mortar.range": "射程:",
"tips.superbwarfare.mortar.yaw": "水平朝向:",
"tips.superbwarfare.mortar.pitch": "俯仰角度:",