Prevent anvil damage restore

This commit is contained in:
paulevsGitch 2021-04-21 21:41:52 +03:00
parent 5e2335b255
commit 38a09c0aef
5 changed files with 60 additions and 4 deletions

View file

@ -48,7 +48,10 @@ public class EndAnvilBlock extends AnvilBlock implements BlockPatterned {
@Override @Override
public List<ItemStack> getDrops(BlockState state, LootContext.Builder builder) { public List<ItemStack> getDrops(BlockState state, LootContext.Builder builder) {
return Collections.singletonList(new ItemStack(this)); ItemStack stack = new ItemStack(this);
int level = state.getValue(getDestructionProperty());
stack.getOrCreateTag().putInt("level", level);
return Collections.singletonList(stack);
} }
@Override @Override

View file

@ -0,0 +1,44 @@
package ru.betterend.item;
import java.util.List;
import org.jetbrains.annotations.Nullable;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import ru.betterend.blocks.basis.EndAnvilBlock;
import ru.betterend.registry.EndItems;
public class EndAnvilItem extends BlockItem {
public EndAnvilItem(Block block) {
super(block, EndItems.makeBlockItemSettings());
}
@Override
protected BlockState getPlacementState(BlockPlaceContext blockPlaceContext) {
BlockState blockState = super.getPlacementState(blockPlaceContext);
ItemStack stack = blockPlaceContext.getItemInHand();
int level = stack.getOrCreateTag().getInt("level");
blockState = blockState.setValue(((EndAnvilBlock) blockState.getBlock()).getDestructionProperty(), level);
return blockState;
}
@Override
@Environment(EnvType.CLIENT)
public void appendHoverText(ItemStack itemStack, @Nullable Level level, List<Component> list, TooltipFlag tooltipFlag) {
super.appendHoverText(itemStack, level, list, tooltipFlag);
int l = itemStack.getOrCreateTag().getInt("level");
if (l > 0) {
list.add(new TranslatableComponent("message.betterend.anvil_damage").append(": " + l));
}
}
}

View file

@ -11,6 +11,7 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.material.MaterialColor;
import ru.betterend.BetterEnd; import ru.betterend.BetterEnd;
import ru.betterend.blocks.*; import ru.betterend.blocks.*;
import ru.betterend.blocks.basis.EndAnvilBlock;
import ru.betterend.blocks.basis.EndCropBlock; import ru.betterend.blocks.basis.EndCropBlock;
import ru.betterend.blocks.basis.EndFurnaceBlock; import ru.betterend.blocks.basis.EndFurnaceBlock;
import ru.betterend.blocks.basis.EndLeavesBlock; import ru.betterend.blocks.basis.EndLeavesBlock;
@ -34,6 +35,7 @@ import ru.betterend.blocks.complex.StoneMaterial;
import ru.betterend.blocks.complex.WoodenMaterial; import ru.betterend.blocks.complex.WoodenMaterial;
import ru.betterend.config.Configs; import ru.betterend.config.Configs;
import ru.betterend.interfaces.ISpetialItem; import ru.betterend.interfaces.ISpetialItem;
import ru.betterend.item.EndAnvilItem;
import ru.betterend.item.material.EndArmorMaterial; import ru.betterend.item.material.EndArmorMaterial;
import ru.betterend.item.material.EndToolMaterial; import ru.betterend.item.material.EndToolMaterial;
@ -332,7 +334,12 @@ public class EndBlocks {
EndItems.registerBlockItem(id, new WaterLilyBlockItem(block, item)); EndItems.registerBlockItem(id, new WaterLilyBlockItem(block, item));
} }
else { else {
EndItems.registerBlockItem(id, new BlockItem(block, item)); if (block instanceof EndAnvilBlock) {
EndItems.registerBlockItem(id, new EndAnvilItem(block));
}
else {
EndItems.registerBlockItem(id, new BlockItem(block, item));
}
} }
if (block.defaultBlockState().getMaterial().isFlammable() && FlammableBlockRegistry.getDefaultInstance().get(block).getBurnChance() == 0) { if (block.defaultBlockState().getMaterial().isFlammable() && FlammableBlockRegistry.getDefaultInstance().get(block).getBurnChance() == 0) {
FlammableBlockRegistry.getDefaultInstance().add(block, 5, 5); FlammableBlockRegistry.getDefaultInstance().add(block, 5, 5);

View file

@ -848,5 +848,6 @@
"block.betterend.smaragdant_crystal_slab": "Smaragdant Slab", "block.betterend.smaragdant_crystal_slab": "Smaragdant Slab",
"block.betterend.smaragdant_crystal_stairs": "Smaragdant Stairs", "block.betterend.smaragdant_crystal_stairs": "Smaragdant Stairs",
"block.betterend.smaragdant_crystal_tiles": "Smaragdant Tiles", "block.betterend.smaragdant_crystal_tiles": "Smaragdant Tiles",
"block.betterend.smaragdant_crystal_wall": "Smaragdant Wall" "block.betterend.smaragdant_crystal_wall": "Smaragdant Wall",
"message.betterend.anvil_damage": "§cDamage"
} }

View file

@ -867,5 +867,6 @@
"block.betterend.smaragdant_crystal_slab": "Смарагдантовая плита", "block.betterend.smaragdant_crystal_slab": "Смарагдантовая плита",
"block.betterend.smaragdant_crystal_stairs": "Смарагдантовые ступени", "block.betterend.smaragdant_crystal_stairs": "Смарагдантовые ступени",
"block.betterend.smaragdant_crystal_tiles": "Смарагдантовая плитка", "block.betterend.smaragdant_crystal_tiles": "Смарагдантовая плитка",
"block.betterend.smaragdant_crystal_wall": "Смарагдантовая стена" "block.betterend.smaragdant_crystal_wall": "Смарагдантовая стена",
"message.betterend.anvil_damage": "§cПовреждение"
} }