mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-19 23:19:15 +00:00
修复掉落物处理
This commit is contained in:
@@ -182,7 +182,6 @@ public final class BukkitCustomBlock extends AbstractCustomBlock {
|
|||||||
if (settings.burnable()) {
|
if (settings.burnable()) {
|
||||||
CoreReflections.method$FireBlock$setFlammable.invoke(MBlocks.FIRE, nmsBlock, settings.burnChance(), settings.fireSpreadChance());
|
CoreReflections.method$FireBlock$setFlammable.invoke(MBlocks.FIRE, nmsBlock, settings.burnChance(), settings.fireSpreadChance());
|
||||||
}
|
}
|
||||||
CoreReflections.field$BlockStateBase$requiresCorrectToolForDrops.set(nmsState, settings.requireCorrectTool());
|
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
CraftEngine.instance().logger().warn("Failed to init block settings", e);
|
CraftEngine.instance().logger().warn("Failed to init block settings", e);
|
||||||
|
|||||||
@@ -98,13 +98,13 @@ public final class BlockStateGenerator {
|
|||||||
if (vec3 == null) return List.of();
|
if (vec3 == null) return List.of();
|
||||||
|
|
||||||
Object tool = FastNMS.INSTANCE.method$LootParams$Builder$getOptionalParameter(builder, MLootContextParams.TOOL);
|
Object tool = FastNMS.INSTANCE.method$LootParams$Builder$getOptionalParameter(builder, MLootContextParams.TOOL);
|
||||||
|
|
||||||
Item<ItemStack> item = BukkitItemManager.instance().wrap(tool == null || FastNMS.INSTANCE.method$ItemStack$isEmpty(tool) ? null : FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(tool));
|
Item<ItemStack> item = BukkitItemManager.instance().wrap(tool == null || FastNMS.INSTANCE.method$ItemStack$isEmpty(tool) ? null : FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(tool));
|
||||||
|
Object optionalPlayer = FastNMS.INSTANCE.method$LootParams$Builder$getOptionalParameter(builder, MLootContextParams.THIS_ENTITY);
|
||||||
|
|
||||||
// do not drop if it's not the correct tool
|
// do not drop if it's not the correct tool
|
||||||
BlockSettings settings = state.settings();
|
BlockSettings settings = state.settings();
|
||||||
if (settings.requireCorrectTool()) {
|
if (optionalPlayer != null && settings.requireCorrectTool()) {
|
||||||
if (tool == null) return List.of();
|
if (item == null) return List.of();
|
||||||
if (!settings.isCorrectTool(item.id()) &&
|
if (!settings.isCorrectTool(item.id()) &&
|
||||||
(!settings.respectToolComponent() || !FastNMS.INSTANCE.method$ItemStack$isCorrectToolForDrops(tool, state.customBlockState().handle()))) {
|
(!settings.respectToolComponent() || !FastNMS.INSTANCE.method$ItemStack$isCorrectToolForDrops(tool, state.customBlockState().handle()))) {
|
||||||
return List.of();
|
return List.of();
|
||||||
@@ -118,7 +118,7 @@ public final class BlockStateGenerator {
|
|||||||
if (item != null) {
|
if (item != null) {
|
||||||
lootBuilder.withParameter(DirectContextParameters.ITEM_IN_HAND, item);
|
lootBuilder.withParameter(DirectContextParameters.ITEM_IN_HAND, item);
|
||||||
}
|
}
|
||||||
Object optionalPlayer = FastNMS.INSTANCE.method$LootParams$Builder$getOptionalParameter(builder, MLootContextParams.THIS_ENTITY);
|
|
||||||
BukkitServerPlayer player = optionalPlayer != null ? BukkitCraftEngine.instance().adapt(FastNMS.INSTANCE.method$ServerPlayer$getBukkitEntity(optionalPlayer)) : null;
|
BukkitServerPlayer player = optionalPlayer != null ? BukkitCraftEngine.instance().adapt(FastNMS.INSTANCE.method$ServerPlayer$getBukkitEntity(optionalPlayer)) : null;
|
||||||
Float radius = (Float) FastNMS.INSTANCE.method$LootParams$Builder$getOptionalParameter(builder, MLootContextParams.EXPLOSION_RADIUS);
|
Float radius = (Float) FastNMS.INSTANCE.method$LootParams$Builder$getOptionalParameter(builder, MLootContextParams.EXPLOSION_RADIUS);
|
||||||
if (radius != null) {
|
if (radius != null) {
|
||||||
|
|||||||
@@ -67,6 +67,9 @@ items#misc:
|
|||||||
template:
|
template:
|
||||||
- default:pickaxe_power/level_4
|
- default:pickaxe_power/level_4
|
||||||
overrides:
|
overrides:
|
||||||
|
tags:
|
||||||
|
- minecraft:mineable/pickaxe
|
||||||
|
- minecraft:anvil
|
||||||
sounds:
|
sounds:
|
||||||
break: minecraft:block.anvil.break
|
break: minecraft:block.anvil.break
|
||||||
step: minecraft:block.anvil.step
|
step: minecraft:block.anvil.step
|
||||||
|
|||||||
Reference in New Issue
Block a user