Merge remote-tracking branch 'origin/main'

This commit is contained in:
paulevsGitch 2021-11-19 17:52:54 +03:00
commit b2ba2976dd
2 changed files with 36 additions and 13 deletions

View file

@ -0,0 +1,22 @@
package ru.bclib.api;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Block;
import ru.bclib.mixin.common.ComposterBlockAccessor;
public class ComposterAPI {
public static Block allowCompost(float chance, Block block){
if (block!=null){
allowCompost(chance, block.asItem());
}
return block;
}
public static Item allowCompost(float chance, Item item){
if (item!=null && item != Items.AIR) {
ComposterBlockAccessor.callAdd(chance, item);
}
return item;
}
}

View file

@ -81,22 +81,23 @@ public abstract class AnvilMenuMixin extends ItemCombinerMenu implements AnvilSc
stack = be_currentRecipe.craft(inputSlots, player);
slotsChanged(inputSlots);
access.execute((world, blockPos) -> {
BlockState anvilState = world.getBlockState(blockPos);
BaseAnvilBlock anvil = (BaseAnvilBlock) anvilState.getBlock();
if (!player.getAbilities().instabuild && anvilState.is(BlockTags.ANVIL) && player.getRandom().nextDouble() < 0.1) {
BlockState damagedState = anvil.damageAnvilUse(anvilState, player.getRandom());
if (damagedState == null) {
world.removeBlock(blockPos, false);
world.levelEvent(1029, blockPos, 0);
}
else {
world.setBlock(blockPos, damagedState, 2);
final BlockState anvilState = world.getBlockState(blockPos);
final Block anvilBlock = anvilState.getBlock();
if (anvilBlock instanceof BaseAnvilBlock) {
final BaseAnvilBlock anvil = (BaseAnvilBlock) anvilBlock;
if (!player.getAbilities().instabuild && anvilState.is(BlockTags.ANVIL) && player.getRandom().nextDouble() < 0.1) {
BlockState damagedState = anvil.damageAnvilUse(anvilState, player.getRandom());
if (damagedState == null) {
world.removeBlock(blockPos, false);
world.levelEvent(1029, blockPos, 0);
} else {
world.setBlock(blockPos, damagedState, 2);
world.levelEvent(1030, blockPos, 0);
}
} else {
world.levelEvent(1030, blockPos, 0);
}
}
else {
world.levelEvent(1030, blockPos, 0);
}
});
info.cancel();
return;