This commit is contained in:
Sunskimmer822 2022-07-19 15:14:06 -07:00
parent 3d4291cf58
commit 34fc80ff5e
2 changed files with 56 additions and 0 deletions

View File

@ -15,8 +15,10 @@ import net.minecraft.item.FoodComponent;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.item.PickaxeItem;
import net.minecraft.item.ShovelItem;
import net.minecraft.item.ToolItem;
import net.minecraft.item.ToolMaterials;
import net.minecraft.sound.SoundEvent;
import net.minecraft.util.Identifier;
import net.minecraft.util.Rarity;
@ -122,6 +124,8 @@ public class Shitmod implements ModInitializer {
public static final Enchantment LIFESTEAL = new lifeStealEnchantment(Enchantment.Rarity.RARE, EnchantmentTarget.WEAPON, new EquipmentSlot[] {EquipmentSlot.MAINHAND});
public static final PickaxeItem HAMMER = new testHammer(ToolMaterials.NETHERITE, 3, 2, new Item.Settings().group(Shitmod.TOOLS_GROUP).fireproof().maxDamage(800));
@Override
public void onInitialize() {
@ -211,5 +215,7 @@ public class Shitmod implements ModInitializer {
Registry.register(Registry.SOUND_EVENT, new Identifier("shitmod", "glock_noise"), GLOCK_NOISE);
Registry.register(Registry.ENCHANTMENT, new Identifier("shitmod", "lifesteal"), LIFESTEAL);
Registry.register(Registry.ITEM, new Identifier("shitmod", "Hammer"), HAMMER);
}
}

View File

@ -0,0 +1,50 @@
package net.serenas.shitmod;
import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.PickaxeItem;
import net.minecraft.item.ToolMaterial;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Vec3d;
import net.minecraft.util.math.Direction.Axis;
import net.minecraft.world.RaycastContext;
import net.minecraft.world.World;
public class testHammer extends PickaxeItem {
protected testHammer(ToolMaterial material, int attackDamage, float attackSpeed, Settings settings) {
super(material, attackDamage, attackSpeed, settings);
}
@Override
public boolean canMine(BlockState blockState, World world, BlockPos pos, PlayerEntity player) {
if (world.isClient){
return true;
}
ItemStack mainHandStack = player.getMainHandStack();
// Taken from Entity#rayTrace
Vec3d vec3d_1 = player.getCameraPosVec(1);
Vec3d vec3d_2 = player.getRotationVec(1);
int range = 4;
Vec3d vec3d_3 = vec3d_1.add(vec3d_2.x * range, vec3d_2.y * range, vec3d_2.z * range);
BlockHitResult hitResult = world.raycast(new RaycastContext(vec3d_1, vec3d_3, RaycastContext.ShapeType.OUTLINE, RaycastContext.FluidHandling.ANY, player));
Direction.Axis axis = hitResult.getSide().getAxis();
for (int i = -1; i <= 1; i++)
for (int j = -1; j <= 1; j++) {
if (i != 0 || j != 0) {
BlockPos newPos = new BlockPos(axis == Axis.X ? pos.getX() : pos.getX() + i, axis == Axis.X ? pos.getY() + i : axis == Axis.Y ? pos.getY() : pos.getY() + j, axis != Axis.Z ? pos.getZ() + j : pos.getZ());
BlockState newState = world.getBlockState(newPos);
boolean canBreak = newState.getHardness(world, newPos) >= 0 || (!newState.isToolRequired() && mainHandStack.getMiningSpeedMultiplier(newState) > 1);
if (!canBreak)
continue;
// Let's break the block!
world.breakBlock(newPos, true, player);
}
}
return true;
}}