Skip to content

Commit bd52a78

Browse files
committed
Lucky events tweaks
1 parent c86071d commit bd52a78

File tree

16 files changed

+171
-123
lines changed

16 files changed

+171
-123
lines changed

src/datagen/java/fr/hugman/lucky_block/api/datagen/provider/LuckyBlockEventProvider.java

Lines changed: 13 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import net.minecraft.registry.RegistryEntryLookup;
2020
import net.minecraft.registry.RegistryWrapper;
2121
import net.minecraft.util.collection.Pool;
22+
import net.minecraft.world.gen.YOffset;
2223
import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider;
2324

2425
import java.util.concurrent.CompletableFuture;
@@ -28,12 +29,6 @@
2829
* @since 1.0.0
2930
*/
3031
public class LuckyBlockEventProvider extends FabricDynamicRegistryProvider {
31-
private static final int[] LUCK_DISTRIBUTION = {3, 15, 10, 15, 3};
32-
private static final int[] LUCKY_LUCK_DISTRIBUTION = {1, 3, 10, 20, 5};
33-
private static final int[] VERY_LUCKY_LUCK_DISTRIBUTION = {1, 5, 15, 20};
34-
private static final int[] UNLUCKY_LUCK_DISTRIBUTION = {5, 20, 10, 3, 1};
35-
private static final int[] VERY_UNLUCKY_LUCK_DISTRIBUTION = {20, 15, 5, 3};
36-
3732
public LuckyBlockEventProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
3833
super(output, registriesFuture);
3934
}
@@ -67,13 +62,14 @@ public static void register(Registerable<LuckyEvent> registerable) {
6762
LuckyBlocks.TRIPLE_LUCKY_BLOCK
6863
));
6964
registerable.register(LuckyEvents.SET_ORE_BLOCK, new SetBlockLuckyEvent(
70-
Blocks.COAL_ORE,
71-
Blocks.IRON_ORE,
72-
Blocks.GOLD_ORE,
73-
Blocks.REDSTONE_ORE,
74-
Blocks.LAPIS_ORE,
75-
Blocks.DIAMOND_ORE,
76-
Blocks.EMERALD_ORE
65+
Blocks.COAL_BLOCK,
66+
Blocks.COPPER_BLOCK,
67+
Blocks.IRON_BLOCK,
68+
Blocks.GOLD_BLOCK,
69+
Blocks.REDSTONE_BLOCK,
70+
Blocks.LAPIS_BLOCK,
71+
Blocks.DIAMOND_BLOCK,
72+
Blocks.EMERALD_BLOCK
7773
));
7874

7975
// Pillars
@@ -95,7 +91,7 @@ public static void register(Registerable<LuckyEvent> registerable) {
9591
.add(Blocks.GREEN_WOOL.getDefaultState())
9692
.add(Blocks.RED_WOOL.getDefaultState())
9793
.add(Blocks.BLACK_WOOL.getDefaultState())
98-
), true, true));
94+
)));
9995

10096
// Summon Entities
10197
registerable.register(LuckyEvents.SUMMON_TAMED_CAT, SummonEntityLuckyEvent.builder(EntityType.CAT).tamed().build());
@@ -151,48 +147,9 @@ public static void register(Registerable<LuckyEvent> registerable) {
151147
registerable.register(LuckyEvents.LOOT_BUCKETS, new LootLuckyEvent(LuckyBlockLootTables.BUCKETS));
152148
registerable.register(LuckyEvents.LOOT_FISH_BUCKET, new LootLuckyEvent(LuckyBlockLootTables.FISH_BUCKET));
153149
registerable.register(LuckyEvents.LOOT_ROTTEN_FLESH, new LootLuckyEvent(LuckyBlockLootTables.ROTTEN_FLESH));
154-
155-
// Pools
156-
registerable.register(LuckyPoolEvents.NORMAL, WeightedListSelectorLuckyEvent.builder(events)
157-
.add(LUCK_DISTRIBUTION[0], 0, LuckyEventTags.VERY_UNLUCKY)
158-
.add(LUCK_DISTRIBUTION[1], 2, LuckyEventTags.UNLUCKY)
159-
.add(LUCK_DISTRIBUTION[2], 5, LuckyEventTags.NORMAL)
160-
.add(LUCK_DISTRIBUTION[3], 7, LuckyEventTags.LUCKY)
161-
.add(LUCK_DISTRIBUTION[4], 12, LuckyEventTags.VERY_LUCKY)
162-
.build()
163-
);
164-
registerable.register(LuckyPoolEvents.LUCKY, WeightedListSelectorLuckyEvent.builder(events)
165-
.add(LUCKY_LUCK_DISTRIBUTION[0], 0, LuckyEventTags.VERY_UNLUCKY)
166-
.add(LUCKY_LUCK_DISTRIBUTION[1], 2, LuckyEventTags.UNLUCKY)
167-
.add(LUCKY_LUCK_DISTRIBUTION[2], 5, LuckyEventTags.NORMAL)
168-
.add(LUCKY_LUCK_DISTRIBUTION[3], 7, LuckyEventTags.LUCKY)
169-
.add(LUCKY_LUCK_DISTRIBUTION[4], 12, LuckyEventTags.VERY_LUCKY)
170-
.build()
171-
);
172-
registerable.register(LuckyPoolEvents.VERY_LUCKY, WeightedListSelectorLuckyEvent.builder(events)
173-
.add(VERY_LUCKY_LUCK_DISTRIBUTION[0], 2, LuckyEventTags.UNLUCKY)
174-
.add(VERY_LUCKY_LUCK_DISTRIBUTION[1], 5, LuckyEventTags.NORMAL)
175-
.add(VERY_LUCKY_LUCK_DISTRIBUTION[2], 7, LuckyEventTags.LUCKY)
176-
.add(VERY_LUCKY_LUCK_DISTRIBUTION[3], 12, LuckyEventTags.VERY_LUCKY)
177-
.build()
178-
);
179-
registerable.register(LuckyPoolEvents.UNLUCKY, WeightedListSelectorLuckyEvent.builder(events)
180-
.add(UNLUCKY_LUCK_DISTRIBUTION[0], 0, LuckyEventTags.VERY_UNLUCKY)
181-
.add(UNLUCKY_LUCK_DISTRIBUTION[1], 2, LuckyEventTags.UNLUCKY)
182-
.add(UNLUCKY_LUCK_DISTRIBUTION[2], 5, LuckyEventTags.NORMAL)
183-
.add(UNLUCKY_LUCK_DISTRIBUTION[3], 7, LuckyEventTags.LUCKY)
184-
.add(UNLUCKY_LUCK_DISTRIBUTION[4], 12, LuckyEventTags.VERY_LUCKY)
185-
.build()
186-
);
187-
registerable.register(LuckyPoolEvents.VERY_UNLUCKY, WeightedListSelectorLuckyEvent.builder(events)
188-
.add(VERY_UNLUCKY_LUCK_DISTRIBUTION[0], 0, LuckyEventTags.VERY_UNLUCKY)
189-
.add(VERY_UNLUCKY_LUCK_DISTRIBUTION[1], 2, LuckyEventTags.UNLUCKY)
190-
.add(VERY_UNLUCKY_LUCK_DISTRIBUTION[2], 5, LuckyEventTags.NORMAL)
191-
.add(VERY_UNLUCKY_LUCK_DISTRIBUTION[3], 7, LuckyEventTags.LUCKY)
192-
.build()
193-
);
194-
registerable.register(LuckyPoolEvents.DOUBLE, RepeatSelectorLuckyEvent.builder().count(2).add(events.getOrThrow(LuckyPoolEvents.NORMAL)).build());
195-
registerable.register(LuckyPoolEvents.TRIPLE, RepeatSelectorLuckyEvent.builder().count(3).add(events.getOrThrow(LuckyPoolEvents.NORMAL)).build());
150+
registerable.register(LuckyEvents.LOOT_EGGS, new LootLuckyEvent(LuckyBlockLootTables.EGGS));
151+
registerable.register(LuckyEvents.LOOT_POTATOES, new LootLuckyEvent(LuckyBlockLootTables.POTATOES));
152+
registerable.register(LuckyEvents.LOOT_PUMPKINS, new LootLuckyEvent(LuckyBlockLootTables.PUMPKINS));
196153
}
197154

198155
private static SummonEntityLuckyEvent summonHappyGhast(Item harness) {
@@ -206,14 +163,4 @@ private static SummonEntityLuckyEvent summonHappyGhast(Item harness) {
206163
.data(compound)
207164
.build();
208165
}
209-
210-
private static SelectorLuckyEvent basicPool(int[] distribution, RegistryEntryLookup<LuckyEvent> lookup) {
211-
return WeightedListSelectorLuckyEvent.builder(lookup)
212-
.add(distribution[0], 0, LuckyEventTags.VERY_UNLUCKY)
213-
.add(distribution[1], 2, LuckyEventTags.UNLUCKY)
214-
.add(distribution[2], 5, LuckyEventTags.NORMAL)
215-
.add(distribution[3], 7, LuckyEventTags.LUCKY)
216-
.add(distribution[4], 12, LuckyEventTags.VERY_LUCKY)
217-
.build();
218-
}
219166
}

src/datagen/java/fr/hugman/lucky_block/api/datagen/provider/LuckyBlockEventTagProvider.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,21 +43,24 @@ protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
4343

4444
builder(NORMAL).add(
4545
SUMMON_RAINBOW_SHEEP,
46-
LOOT_ALL_DYES,
4746
SET_BEDROCK,
48-
SET_RANDOM_LUCKY_BLOCK,
4947
SET_WOOL_PILLAR,
5048
SUMMON_GIANT,
49+
LOOT_ALL_DYES,
5150
LOOT_BUCKETS,
52-
LOOT_FISH_BUCKET
51+
LOOT_FISH_BUCKET,
52+
LOOT_EGGS,
53+
LOOT_PUMPKINS,
54+
LOOT_POTATOES
5355
);
5456

5557
builder(LUCKY).add(
5658
SUMMON_HAPPY_GHAST,
5759
SUMMON_TAMED_WOLF,
5860
SUMMON_TAMED_CAT,
5961
LOOT_LUCKY_SWORD,
60-
LOOT_LUCKY_BOW
62+
LOOT_LUCKY_BOW,
63+
SET_RANDOM_LUCKY_BLOCK
6164
);
6265

6366
builder(VERY_LUCKY).add(

src/datagen/java/fr/hugman/lucky_block/api/datagen/provider/LuckyBlockLootTableProvider.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,24 @@ public void accept(BiConsumer<RegistryKey<LootTable>, LootTable.Builder> lootTab
7474
.with(ItemEntry.builder(Items.TADPOLE_BUCKET))
7575
));
7676
consumer.accept(ROTTEN_FLESH, LootTable.builder().pool(LootPool.builder()
77-
.with(ItemEntry.builder(Items.PUFFERFISH_BUCKET))
78-
.with(ItemEntry.builder(Items.SALMON_BUCKET))
79-
.with(ItemEntry.builder(Items.COD_BUCKET))
80-
.with(ItemEntry.builder(Items.TROPICAL_FISH_BUCKET))
81-
.with(ItemEntry.builder(Items.AXOLOTL_BUCKET))
82-
.with(ItemEntry.builder(Items.TADPOLE_BUCKET))
77+
.with(ItemEntry.builder(Items.ROTTEN_FLESH))
78+
));
79+
consumer.accept(EGGS, LootTable.builder().pool(LootPool.builder()
80+
.rolls(UniformLootNumberProvider.create(1, 20))
81+
.with(ItemEntry.builder(Items.EGG))
82+
.with(ItemEntry.builder(Items.BROWN_EGG))
83+
.with(ItemEntry.builder(Items.BLUE_EGG))
84+
));
85+
consumer.accept(POTATOES, LootTable.builder().pool(LootPool.builder()
86+
.rolls(UniformLootNumberProvider.create(1, 20))
87+
.with(ItemEntry.builder(Items.POTATO))
88+
.with(ItemEntry.builder(Items.POISONOUS_POTATO))
89+
.with(ItemEntry.builder(Items.BAKED_POTATO))
90+
));
91+
consumer.accept(PUMPKINS, LootTable.builder().pool(LootPool.builder()
92+
.rolls(UniformLootNumberProvider.create(1, 20))
93+
.with(ItemEntry.builder(Items.PUMPKIN))
94+
.with(ItemEntry.builder(Items.CARVED_PUMPKIN))
8395
));
8496
}
8597
}

src/datagen/java/fr/hugman/lucky_block/api/datagen/provider/LuckyBlockPoolEventProvider.java

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import fr.hugman.lucky_block.api.lucky_event.LuckyEvent;
44
import fr.hugman.lucky_block.api.lucky_event.LuckyEventTags;
55
import fr.hugman.lucky_block.api.lucky_event.LuckyPoolEvents;
6+
import fr.hugman.lucky_block.api.lucky_event.selector.RepeatSelectorLuckyEvent;
67
import fr.hugman.lucky_block.api.lucky_event.selector.WeightedListSelectorLuckyEvent;
78
import fr.hugman.lucky_block.api.registry.LuckyBlockRegistryKeys;
89
import fr.hugman.lucky_block.impl.LuckyBlockMod;
@@ -18,6 +19,12 @@
1819
* @since 1.0.0
1920
*/
2021
public class LuckyBlockPoolEventProvider extends FabricDynamicRegistryProvider {
22+
private static final int[] LUCK_DISTRIBUTION = {3, 15, 10, 15, 3};
23+
private static final int[] LUCKY_LUCK_DISTRIBUTION = {1, 3, 10, 20, 5};
24+
private static final int[] VERY_LUCKY_LUCK_DISTRIBUTION = {1, 5, 15, 20};
25+
private static final int[] UNLUCKY_LUCK_DISTRIBUTION = {5, 20, 10, 3, 1};
26+
private static final int[] VERY_UNLUCKY_LUCK_DISTRIBUTION = {20, 15, 5, 3};
27+
2128
public LuckyBlockPoolEventProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
2229
super(output, registriesFuture);
2330
}
@@ -40,14 +47,45 @@ public String getName() {
4047
public static void register(Registerable<LuckyEvent> registerable) {
4148
var events = registerable.getRegistryLookup(LuckyBlockRegistryKeys.LUCKY_EVENT);
4249

43-
// Pools
4450
registerable.register(LuckyPoolEvents.NORMAL, WeightedListSelectorLuckyEvent.builder(events)
45-
.add(3, 0, LuckyEventTags.VERY_UNLUCKY)
46-
.add(15, 2, LuckyEventTags.UNLUCKY)
47-
.add(20, 5, LuckyEventTags.NORMAL)
48-
.add(15, 7, LuckyEventTags.LUCKY)
49-
.add(3, 12, LuckyEventTags.VERY_LUCKY)
51+
.add(LUCK_DISTRIBUTION[0], 0, LuckyEventTags.VERY_UNLUCKY)
52+
.add(LUCK_DISTRIBUTION[1], 2, LuckyEventTags.UNLUCKY)
53+
.add(LUCK_DISTRIBUTION[2], 5, LuckyEventTags.NORMAL)
54+
.add(LUCK_DISTRIBUTION[3], 7, LuckyEventTags.LUCKY)
55+
.add(LUCK_DISTRIBUTION[4], 12, LuckyEventTags.VERY_LUCKY)
56+
.build()
57+
);
58+
registerable.register(LuckyPoolEvents.LUCKY, WeightedListSelectorLuckyEvent.builder(events)
59+
.add(LUCKY_LUCK_DISTRIBUTION[0], 0, LuckyEventTags.VERY_UNLUCKY)
60+
.add(LUCKY_LUCK_DISTRIBUTION[1], 2, LuckyEventTags.UNLUCKY)
61+
.add(LUCKY_LUCK_DISTRIBUTION[2], 5, LuckyEventTags.NORMAL)
62+
.add(LUCKY_LUCK_DISTRIBUTION[3], 7, LuckyEventTags.LUCKY)
63+
.add(LUCKY_LUCK_DISTRIBUTION[4], 12, LuckyEventTags.VERY_LUCKY)
64+
.build()
65+
);
66+
registerable.register(LuckyPoolEvents.VERY_LUCKY, WeightedListSelectorLuckyEvent.builder(events)
67+
.add(VERY_LUCKY_LUCK_DISTRIBUTION[0], 2, LuckyEventTags.UNLUCKY)
68+
.add(VERY_LUCKY_LUCK_DISTRIBUTION[1], 5, LuckyEventTags.NORMAL)
69+
.add(VERY_LUCKY_LUCK_DISTRIBUTION[2], 7, LuckyEventTags.LUCKY)
70+
.add(VERY_LUCKY_LUCK_DISTRIBUTION[3], 12, LuckyEventTags.VERY_LUCKY)
71+
.build()
72+
);
73+
registerable.register(LuckyPoolEvents.UNLUCKY, WeightedListSelectorLuckyEvent.builder(events)
74+
.add(UNLUCKY_LUCK_DISTRIBUTION[0], 0, LuckyEventTags.VERY_UNLUCKY)
75+
.add(UNLUCKY_LUCK_DISTRIBUTION[1], 2, LuckyEventTags.UNLUCKY)
76+
.add(UNLUCKY_LUCK_DISTRIBUTION[2], 5, LuckyEventTags.NORMAL)
77+
.add(UNLUCKY_LUCK_DISTRIBUTION[3], 7, LuckyEventTags.LUCKY)
78+
.add(UNLUCKY_LUCK_DISTRIBUTION[4], 12, LuckyEventTags.VERY_LUCKY)
79+
.build()
80+
);
81+
registerable.register(LuckyPoolEvents.VERY_UNLUCKY, WeightedListSelectorLuckyEvent.builder(events)
82+
.add(VERY_UNLUCKY_LUCK_DISTRIBUTION[0], 0, LuckyEventTags.VERY_UNLUCKY)
83+
.add(VERY_UNLUCKY_LUCK_DISTRIBUTION[1], 2, LuckyEventTags.UNLUCKY)
84+
.add(VERY_UNLUCKY_LUCK_DISTRIBUTION[2], 5, LuckyEventTags.NORMAL)
85+
.add(VERY_UNLUCKY_LUCK_DISTRIBUTION[3], 7, LuckyEventTags.LUCKY)
5086
.build()
5187
);
88+
registerable.register(LuckyPoolEvents.DOUBLE, RepeatSelectorLuckyEvent.builder().count(2).add(events.getOrThrow(LuckyPoolEvents.NORMAL)).build());
89+
registerable.register(LuckyPoolEvents.TRIPLE, RepeatSelectorLuckyEvent.builder().count(3).add(events.getOrThrow(LuckyPoolEvents.NORMAL)).build());
5290
}
5391
}

src/datagen/java/fr/hugman/lucky_block/api/loot/LuckyBlockLootTables.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ public class LuckyBlockLootTables {
1818
public static final RegistryKey<LootTable> BUCKETS = of("buckets");
1919
public static final RegistryKey<LootTable> FISH_BUCKET = of("fish_bucket");
2020
public static final RegistryKey<LootTable> ROTTEN_FLESH = of("rotten_flesh");
21+
public static final RegistryKey<LootTable> EGGS = of("eggs");
22+
public static final RegistryKey<LootTable> POTATOES = of("potatoes");
23+
public static final RegistryKey<LootTable> PUMPKINS = of("pumpkins");
2124

2225
private static RegistryKey<LootTable> of(String path) {
2326
return RegistryKey.of(RegistryKeys.LOOT_TABLE, LuckyBlockMod.id(path));

src/datagen/java/fr/hugman/lucky_block/api/lucky_event/LuckyEvents.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ public class LuckyEvents {
4545
public static final RegistryKey<LuckyEvent> LOOT_ELYTRA = of("loot_elytra");
4646
public static final RegistryKey<LuckyEvent> LOOT_BUCKETS = of("loot_buckets");
4747
public static final RegistryKey<LuckyEvent> LOOT_FISH_BUCKET = of("loot_fish_bucket");
48+
public static final RegistryKey<LuckyEvent> LOOT_EGGS = of("loot_eggs");
49+
public static final RegistryKey<LuckyEvent> LOOT_POTATOES = of("loot_potatoes");
50+
public static final RegistryKey<LuckyEvent> LOOT_PUMPKINS = of("loot_pumpkins");
4851

4952
private static RegistryKey<LuckyEvent> of(String path) {
5053
return RegistryKey.of(LuckyBlockRegistryKeys.LUCKY_EVENT, LuckyBlockMod.id(path));

src/datagen/java/fr/hugman/uhc/impl/data/UHCDataGenerator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public void buildRegistry(RegistryBuilder registryBuilder) {
6666

6767
// - Lucky Block
6868
registryBuilder.addRegistry(LuckyBlockRegistryKeys.LUCKY_EVENT, LuckyBlockEventProvider::register);
69+
registryBuilder.addRegistry(LuckyBlockRegistryKeys.LUCKY_EVENT, LuckyBlockPoolEventProvider::register);
6970

7071
// - UHC
7172
registryBuilder.addRegistry(GameConfigs.REGISTRY_KEY, LuckyBlockGameProvider::register);

src/main/java/fr/hugman/lucky_block/api/block/LuckyBlock.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@
66
import eu.pb4.polymer.blocks.api.PolymerTexturedBlock;
77
import fr.hugman.lucky_block.api.lucky_event.LuckyEvent;
88
import fr.hugman.lucky_block.api.registry.LuckyBlockRegistryKeys;
9-
import fr.hugman.lucky_block.impl.LuckyBlockMod;
109
import net.minecraft.block.Block;
1110
import net.minecraft.block.BlockState;
1211
import net.minecraft.block.entity.BlockEntity;
1312
import net.minecraft.entity.player.PlayerEntity;
1413
import net.minecraft.registry.RegistryKey;
1514
import net.minecraft.server.world.ServerWorld;
16-
import net.minecraft.util.Identifier;
1715
import net.minecraft.util.math.BlockPos;
16+
import net.minecraft.world.World;
17+
import net.minecraft.world.block.WireOrientation;
1818
import org.jetbrains.annotations.Nullable;
1919
import xyz.nucleoid.packettweaker.PacketContext;
2020

@@ -39,11 +39,32 @@ public BlockState getPolymerBlockState(BlockState state, PacketContext context)
3939
}
4040

4141
@Override
42-
public void onLuckyBlockBreak(ServerWorld world, PlayerEntity player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity) {
42+
public void onLuckyBlockTrigger(ServerWorld world, @Nullable PlayerEntity player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity) {
4343
world.getRegistryManager()
4444
.getOrThrow(LuckyBlockRegistryKeys.LUCKY_EVENT)
4545
.getOrThrow(this.event).value()
4646
.trigger(world, player, pos, state, blockEntity);
4747
//TODO: add particles and sounds
4848
}
49+
50+
@Override
51+
protected void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean notify) {
52+
if (oldState.getBlock() != state.getBlock() && world instanceof ServerWorld serverWorld) {
53+
this.update(state, serverWorld, pos);
54+
}
55+
}
56+
57+
@Override
58+
protected void neighborUpdate(BlockState state, World world, BlockPos pos, Block sourceBlock, @Nullable WireOrientation wireOrientation, boolean notify) {
59+
if (world instanceof ServerWorld serverWorld) {
60+
this.update(state, serverWorld, pos);
61+
}
62+
}
63+
64+
public void update(BlockState state, ServerWorld world, BlockPos pos) {
65+
if (world.isReceivingRedstonePower(pos)) {
66+
world.removeBlock(pos, false);
67+
this.onLuckyBlockTrigger(world, null, pos, state, world.getBlockEntity(pos));
68+
}
69+
}
4970
}

src/main/java/fr/hugman/lucky_block/api/block/LuckyBlockInterface.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212
* @since 1.0.0
1313
*/
1414
public interface LuckyBlockInterface {
15-
void onLuckyBlockBreak(ServerWorld world, PlayerEntity player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity);
15+
void onLuckyBlockTrigger(ServerWorld world, @Nullable PlayerEntity player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity);
1616
}

src/main/java/fr/hugman/lucky_block/api/lucky_event/LootLuckyEvent.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,16 @@ public record LootLuckyEvent(RegistryKey<LootTable> lootTable) implements LuckyE
3232
RegistryKey.createCodec(RegistryKeys.LOOT_TABLE).fieldOf("loot_table").forGetter(LootLuckyEvent::lootTable)
3333
).apply(instance, LootLuckyEvent::new));
3434

35-
public void trigger(ServerWorld world, PlayerEntity player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity) {
36-
getLoots(world, pos, player, player.getMainHandStack()).forEach((stack) -> Block.dropStack(world, pos, stack));
35+
public void trigger(ServerWorld world, @Nullable PlayerEntity player, BlockPos pos, BlockState state, @Nullable BlockEntity blockEntity) {
36+
var heldStack = player != null ? player.getMainHandStack() : ItemStack.EMPTY;
37+
getLoots(world, pos, player, heldStack).forEach((stack) -> Block.dropStack(world, pos, stack));
3738
}
3839

39-
public List<ItemStack> getLoots(ServerWorld world, BlockPos pos, @Nullable Entity entity, ItemStack stack) {
40+
public List<ItemStack> getLoots(ServerWorld world, BlockPos pos, @Nullable Entity entity, ItemStack heldStack) {
4041
return world.getServer().getReloadableRegistries().getLootTable(this.lootTable)
4142
.generateLoot(new LootWorldContext.Builder(world)
4243
.add(LootContextParameters.ORIGIN, Vec3d.ofCenter(pos))
43-
.add(LootContextParameters.TOOL, stack)
44+
.add(LootContextParameters.TOOL, heldStack)
4445
.add(LootContextParameters.BLOCK_STATE, world.getBlockState(pos))
4546
.addOptional(LootContextParameters.BLOCK_ENTITY, world.getBlockEntity(pos))
4647
.addOptional(LootContextParameters.THIS_ENTITY, entity)

0 commit comments

Comments
 (0)