hammer
This commit is contained in:
parent
3d4291cf58
commit
34fc80ff5e
@ -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);
|
||||
}
|
||||
}
|
||||
|
50
src/main/java/net/serenas/shitmod/testHammer.java
Normal file
50
src/main/java/net/serenas/shitmod/testHammer.java
Normal 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;
|
||||
|
||||
}}
|
Loading…
x
Reference in New Issue
Block a user