Skip to content

Commit

Permalink
remove some unnecessary code from TaserItem
Browse files Browse the repository at this point in the history
  • Loading branch information
bl4ckscor3 committed Oct 20, 2021
1 parent c23c9af commit c183c9b
Showing 1 changed file with 9 additions and 71 deletions.
80 changes: 9 additions & 71 deletions src/main/java/net/geforcemods/securitycraft/items/TaserItem.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package net.geforcemods.securitycraft.items;

import java.util.Optional;
import java.util.function.Predicate;

import net.geforcemods.securitycraft.SCContent;
import net.geforcemods.securitycraft.SecurityCraft;
import net.geforcemods.securitycraft.misc.CustomDamageSources;
Expand All @@ -14,9 +11,9 @@
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.projectile.ProjectileUtil;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
Expand Down Expand Up @@ -62,9 +59,9 @@ public InteractionResultHolder<ItemStack> use(Level world, Player player, Intera
if(player.isCreative())
{
if(player.getItemInHand(hand).getItem() == SCContent.TASER.get())
setSlotBasedOnHand(player, hand, new ItemStack(SCContent.TASER_POWERED.get(), 1));
player.setItemInHand(hand, new ItemStack(SCContent.TASER_POWERED.get(), 1));
else
setSlotBasedOnHand(player, hand, new ItemStack(SCContent.TASER.get(), 1));
player.setItemInHand(hand, new ItemStack(SCContent.TASER.get(), 1));

return InteractionResultHolder.success(stack);
}
Expand All @@ -90,7 +87,7 @@ else if(player.getInventory().contains(oneRedstone))
else
player.getInventory().setItem(redstoneSlot, redstoneStack);

setSlotBasedOnHand(player, hand, new ItemStack(SCContent.TASER_POWERED.get(), 1));
player.setItemInHand(hand, new ItemStack(SCContent.TASER_POWERED.get(), 1));
return InteractionResultHolder.success(stack);
}

Expand All @@ -102,7 +99,7 @@ else if(player.getInventory().contains(oneRedstone))
Vec3 lookVec = player.getViewVector(1.0F).scale(range);
Vec3 endVec = startVec.add(lookVec);
AABB boundingBox = player.getBoundingBox().expandTowards(lookVec).inflate(1, 1, 1);
EntityHitResult entityRayTraceResult = rayTraceEntities(player, startVec, endVec, boundingBox, s -> s instanceof LivingEntity, range * range);
EntityHitResult entityRayTraceResult = ProjectileUtil.getEntityHitResult(player, startVec, endVec, boundingBox, s -> s instanceof LivingEntity, range * range);

if (!world.isClientSide)
SecurityCraft.channel.send(PacketDistributor.ALL.noArg(), new PlaySoundAtPos(player.getX(), player.getY(), player.getZ(), SCSounds.TASERFIRED.path, 1.0F, "players"));
Expand All @@ -129,7 +126,7 @@ else if(player.getInventory().contains(oneRedstone))
ItemStack taser = new ItemStack(SCContent.TASER.get(), 1);

taser.hurtAndBreak(150, player, p -> p.broadcastBreakEvent(hand));
setSlotBasedOnHand(player, hand, taser);
player.setItemInHand(hand, taser);
}
else
stack.hurtAndBreak(150, player, p -> p.broadcastBreakEvent(hand));
Expand All @@ -141,69 +138,10 @@ else if(player.getInventory().contains(oneRedstone))
return InteractionResultHolder.pass(stack);
}

//Copied from ProjectileHelper to get rid of the @OnlyIn(Dist.CLIENT) annotation
private static EntityHitResult rayTraceEntities(Entity shooter, Vec3 startVec, Vec3 endVec, AABB boundingBox, Predicate<Entity> filter, double dist)
{
Level world = shooter.level;
double distance = dist;
Entity rayTracedEntity = null;
Vec3 hitVec = null;

for(Entity entity : world.getEntities(shooter, boundingBox, filter))
{
AABB boxToCheck = entity.getBoundingBox().inflate(entity.getPickRadius());
Optional<Vec3> optional = boxToCheck.clip(startVec, endVec);

if(boxToCheck.contains(startVec))
{
if(distance >= 0.0D)
{
rayTracedEntity = entity;
hitVec = optional.orElse(startVec);
distance = 0.0D;
}
}
else if(optional.isPresent())
{
Vec3 vector = optional.get();
double sqDist = startVec.distanceToSqr(vector);

if(sqDist < distance || distance == 0.0D)
{
if(entity.getRootVehicle() == shooter.getRootVehicle() && !entity.canRiderInteract())
{
if(distance == 0.0D)
{
rayTracedEntity = entity;
hitVec = vector;
}
}
else
{
rayTracedEntity = entity;
hitVec = vector;
distance = sqDist;
}
}
}
}

return rayTracedEntity == null ? null : new EntityHitResult(rayTracedEntity, hitVec);
}

private void setSlotBasedOnHand(Player player, InteractionHand hand, ItemStack taser)
{
if(hand == InteractionHand.MAIN_HAND)
player.setItemSlot(EquipmentSlot.MAINHAND, taser);
else
player.setItemSlot(EquipmentSlot.OFFHAND, taser);
}

@Override
public void inventoryTick(ItemStack par1ItemStack, Level world, Entity entity, int slotIndex, boolean isSelected){
if(!world.isClientSide)
if(par1ItemStack.getDamageValue() >= 1)
par1ItemStack.setDamageValue(par1ItemStack.getDamageValue() - 1);
public void inventoryTick(ItemStack stack, Level world, Entity entity, int slotIndex, boolean isSelected){
if(!world.isClientSide && stack.getDamageValue() >= 1)
stack.setDamageValue(stack.getDamageValue() - 1);
}

@Override
Expand Down

0 comments on commit c183c9b

Please sign in to comment.