重构loottable生成
This commit is contained in:
parent
5a6a08d753
commit
68b80323ac
6 changed files with 33 additions and 16 deletions
|
@ -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
|
98386b2e65b2afb7cf5b0cabf6a7b0f062c1e640 data/superbwarfare/loot_table/blocks/barbed_wire.json
|
||||||
811e69929a14e6736015849c220100bb58d914c9 data/superbwarfare/loot_table/blocks/cemented_carbide_block.json
|
811e69929a14e6736015849c220100bb58d914c9 data/superbwarfare/loot_table/blocks/cemented_carbide_block.json
|
||||||
1f482bc1f0a1026d0e1b75ee28c6f541b56747a5 data/superbwarfare/loot_table/blocks/charging_station.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
|
073b9c242ea372f7b34883835c0b02a9ca8d94e5 data/superbwarfare/loot_table/blocks/small_container.json
|
||||||
83112ebff477e322bd3d23ed4653c7c02b230473 data/superbwarfare/loot_table/blocks/steel_block.json
|
83112ebff477e322bd3d23ed4653c7c02b230473 data/superbwarfare/loot_table/blocks/steel_block.json
|
||||||
71fc892124b5343e10688cabc2fb7c87d83cfef8 data/superbwarfare/loot_table/blocks/tungsten_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
|
7e75ff103ccdbcf6be6f61413a4173115195f0a9 data/superbwarfare/loot_table/containers/blueprints.json
|
||||||
|
|
|
@ -2,20 +2,21 @@
|
||||||
"type": "minecraft:chest",
|
"type": "minecraft:chest",
|
||||||
"pools": [
|
"pools": [
|
||||||
{
|
{
|
||||||
"rolls": 1,
|
"bonus_rolls": 1.0,
|
||||||
"bonus_rolls": 1,
|
"conditions": [
|
||||||
|
{
|
||||||
|
"chance": 0.4,
|
||||||
|
"condition": "minecraft:random_chance"
|
||||||
|
}
|
||||||
|
],
|
||||||
"entries": [
|
"entries": [
|
||||||
{
|
{
|
||||||
"type": "minecraft:item",
|
"type": "minecraft:item",
|
||||||
"name": "superbwarfare:ancient_cpu"
|
"name": "superbwarfare:ancient_cpu",
|
||||||
|
"quality": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"conditions": [
|
"rolls": 1.0
|
||||||
{
|
|
||||||
"condition": "minecraft:random_chance",
|
|
||||||
"chance": 0.4
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"random_sequence": "superbwarfare:chests/ancient_cpu"
|
"random_sequence": "superbwarfare:chests/ancient_cpu"
|
|
@ -6,24 +6,39 @@ import net.minecraft.core.HolderLookup;
|
||||||
import net.minecraft.core.registries.Registries;
|
import net.minecraft.core.registries.Registries;
|
||||||
import net.minecraft.data.loot.LootTableSubProvider;
|
import net.minecraft.data.loot.LootTableSubProvider;
|
||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.resources.ResourceKey;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.level.ItemLike;
|
import net.minecraft.world.level.ItemLike;
|
||||||
import net.minecraft.world.level.storage.loot.LootPool;
|
import net.minecraft.world.level.storage.loot.LootPool;
|
||||||
import net.minecraft.world.level.storage.loot.LootTable;
|
import net.minecraft.world.level.storage.loot.LootTable;
|
||||||
import net.minecraft.world.level.storage.loot.entries.LootItem;
|
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 net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.function.BiConsumer;
|
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();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void generate(@NotNull BiConsumer<ResourceKey<LootTable>, LootTable.Builder> output) {
|
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,
|
LootTable.lootTable().withPool(multiItems(1, 0,
|
||||||
new PoolTriple(ModItems.GLOCK_17_BLUEPRINT.get(), 60, 0),
|
new PoolTriple(ModItems.GLOCK_17_BLUEPRINT.get(), 60, 0),
|
||||||
new PoolTriple(ModItems.MP_443_BLUEPRINT.get(), 60, 0),
|
new PoolTriple(ModItems.MP_443_BLUEPRINT.get(), 60, 0),
|
|
@ -13,7 +13,7 @@ public class ModLootTableProvider {
|
||||||
public static LootTableProvider create(PackOutput output, CompletableFuture<HolderLookup.Provider> registries) {
|
public static LootTableProvider create(PackOutput output, CompletableFuture<HolderLookup.Provider> registries) {
|
||||||
return new LootTableProvider(output, Set.of(), List.of(
|
return new LootTableProvider(output, Set.of(), List.of(
|
||||||
new LootTableProvider.SubProviderEntry(ModBlockLootProvider::new, LootContextParamSets.BLOCK),
|
new LootTableProvider.SubProviderEntry(ModBlockLootProvider::new, LootContextParamSets.BLOCK),
|
||||||
new LootTableProvider.SubProviderEntry(ModContainerLootProvider::new, LootContextParamSets.CHEST)
|
new LootTableProvider.SubProviderEntry(ModCustomLootProvider::new, LootContextParamSets.CHEST)
|
||||||
), registries);
|
), registries);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -500,7 +500,7 @@
|
||||||
"tips.superbwarfare.shoot.rings": "Rings",
|
"tips.superbwarfare.shoot.rings": "Rings",
|
||||||
"tips.superbwarfare.annihilator.energy_not_enough": "Energy is Not Enough",
|
"tips.superbwarfare.annihilator.energy_not_enough": "Energy is Not Enough",
|
||||||
"tips.superbwarfare.target.down": "Target Down %1$s",
|
"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.range": "Range: ",
|
||||||
"tips.superbwarfare.mortar.yaw": "Yaw: ",
|
"tips.superbwarfare.mortar.yaw": "Yaw: ",
|
||||||
"tips.superbwarfare.mortar.pitch": "Pitch: ",
|
"tips.superbwarfare.mortar.pitch": "Pitch: ",
|
||||||
|
|
|
@ -498,7 +498,7 @@
|
||||||
"tips.superbwarfare.shoot.rings": "环",
|
"tips.superbwarfare.shoot.rings": "环",
|
||||||
"tips.superbwarfare.annihilator.energy_not_enough": "能量不足",
|
"tips.superbwarfare.annihilator.energy_not_enough": "能量不足",
|
||||||
"tips.superbwarfare.target.down": "击倒目标 %1$s",
|
"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.range": "射程:",
|
||||||
"tips.superbwarfare.mortar.yaw": "水平朝向:",
|
"tips.superbwarfare.mortar.yaw": "水平朝向:",
|
||||||
"tips.superbwarfare.mortar.pitch": "俯仰角度:",
|
"tips.superbwarfare.mortar.pitch": "俯仰角度:",
|
||||||
|
|
Loading…
Add table
Reference in a new issue