mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-02-01 03:26:44 +01:00
Fixed raytracing in several places.
This commit is contained in:
parent
ec1a1e8583
commit
021a7f0b3c
7 changed files with 6 additions and 15 deletions
|
@ -45,15 +45,6 @@ public class BatPonyHangAbility implements Ability<Multi> {
|
|||
return new Multi(BlockPos.ZERO, 0);
|
||||
}
|
||||
|
||||
BlockPos poss = RayTraceHelper.doTrace(player.getMaster(), 3, 1, EntityPredicates.CAN_COLLIDE).getBlockPos().orElse(null);
|
||||
if (poss != null) {
|
||||
boolean air = player.getReferenceWorld().isAir(poss.down()) && player.getReferenceWorld().isAir(poss.down(2));
|
||||
|
||||
if (air && player.canHangAt(poss)) {
|
||||
return new Multi(poss, 1);
|
||||
}
|
||||
}
|
||||
|
||||
return RayTraceHelper.doTrace(player.getMaster(), 5, 1, EntityPredicates.EXCEPT_SPECTATOR).getBlockPos()
|
||||
.map(BlockPos::down)
|
||||
.filter(pos -> player.getReferenceWorld().isAir(pos) && player.getReferenceWorld().isAir(pos.down()) && player.canHangAt(pos))
|
||||
|
|
|
@ -42,7 +42,7 @@ public class ChangelingDisguiseAbility extends ChangelingFeedAbility {
|
|||
return;
|
||||
}
|
||||
|
||||
RayTraceHelper.Trace trace = RayTraceHelper.doTrace(player, 10, 1, EntityPredicates.CAN_COLLIDE.and(e -> !(e instanceof LightningEntity)));
|
||||
RayTraceHelper.Trace trace = RayTraceHelper.doTrace(player, 10, 1, EntityPredicates.EXCEPT_SPECTATOR.and(e -> !(e instanceof LightningEntity)));
|
||||
|
||||
Entity looked = trace.getEntity().filter(e -> !(e instanceof AbstractDecorationEntity)).map(e -> {
|
||||
return e instanceof PlayerEntity ? Pony.of((PlayerEntity)e)
|
||||
|
|
|
@ -94,7 +94,7 @@ public class UnicornProjectileAbility implements Ability<Hit> {
|
|||
projectile.setHydrophobic();
|
||||
|
||||
if (spell instanceof HomingSpell) {
|
||||
RayTraceHelper.doTrace(player.getMaster(), 600, 1, EntityPredicates.CAN_COLLIDE).getEntity().filter(((HomingSpell)spell)::setTarget).ifPresent(target -> {
|
||||
RayTraceHelper.doTrace(player.getMaster(), 600, 1, EntityPredicates.EXCEPT_SPECTATOR).getEntity().filter(((HomingSpell)spell)::setTarget).ifPresent(target -> {
|
||||
projectile.setHomingTarget(target);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ public class UnicornTeleportAbility implements Ability<Pos> {
|
|||
@Override
|
||||
public Pos tryActivate(Pony player) {
|
||||
int maxDistance = player.getMaster().isCreative() ? 1000 : 100;
|
||||
HitResult ray = RayTraceHelper.doTrace(player.getMaster(), maxDistance, 1, EntityPredicates.CAN_COLLIDE).getResult();
|
||||
HitResult ray = RayTraceHelper.doTrace(player.getMaster(), maxDistance, 1, EntityPredicates.EXCEPT_CREATIVE_OR_SPECTATOR).getResult();
|
||||
|
||||
World w = player.getReferenceWorld();
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@ public class CatapultSpell extends AbstractSpell implements ProjectileSpell {
|
|||
|
||||
double maxDistance = 2 + (getTraits().get(Trait.FOCUS) - 50) * 8;
|
||||
|
||||
HitResult ray = RayTraceHelper.doTrace(caster.getEntity(), maxDistance, 1, EntityPredicates.CAN_COLLIDE).getResult();
|
||||
HitResult ray = RayTraceHelper.doTrace(caster.getEntity(), maxDistance, 1, EntityPredicates.EXCEPT_SPECTATOR).getResult();
|
||||
|
||||
if (ray.getType() == HitResult.Type.ENTITY) {
|
||||
EntityHitResult result = (EntityHitResult)ray;
|
||||
|
|
|
@ -55,7 +55,7 @@ public class ZapAppleItem extends Item implements ChameleonItem, ToxicHolder {
|
|||
public TypedActionResult<ItemStack> use(World world, PlayerEntity player, Hand hand) {
|
||||
ItemStack stack = player.getStackInHand(hand);
|
||||
|
||||
Optional<Entity> entity = RayTraceHelper.doTrace(player, 5, 1, EntityPredicates.CAN_COLLIDE.and(e -> canFeedTo(stack, e))).getEntity();
|
||||
Optional<Entity> entity = RayTraceHelper.doTrace(player, 5, 1, EntityPredicates.EXCEPT_CREATIVE_OR_SPECTATOR.and(e -> canFeedTo(stack, e))).getEntity();
|
||||
|
||||
if (entity.isPresent()) {
|
||||
return onFedTo(stack, player, entity.get());
|
||||
|
|
|
@ -33,7 +33,7 @@ public class RayTraceHelper {
|
|||
* @return A Trace describing what was found.
|
||||
*/
|
||||
public static Trace doTrace(Entity e, double distance, float tickDelta) {
|
||||
return doTrace(e, distance, tickDelta, EntityPredicates.CAN_COLLIDE);
|
||||
return doTrace(e, distance, tickDelta, EntityPredicates.EXCEPT_SPECTATOR);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue