@Override
  public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) {
    if (world.isRemote || !(entity instanceof EntityMinecartEmpty)) {
      return;
    }
    EntityMinecart minecart = (EntityMinecart) entity;
    if (minecart.riddenByEntity != null) {
      return;
    }

    AxisAlignedBB bb =
        AxisAlignedBB.getBoundingBox(
            x - MFRConfig.getInstance().passengerRailSearchMaxHorizontal,
            y - MFRConfig.getInstance().passengerRailSearchMaxVertical,
            z - MFRConfig.getInstance().passengerRailSearchMaxHorizontal,
            x + MFRConfig.getInstance().passengerRailSearchMaxHorizontal + 1,
            y + MFRConfig.getInstance().passengerRailSearchMaxVertical + 1,
            z + MFRConfig.getInstance().passengerRailSearchMaxHorizontal + 1);

    @SuppressWarnings("rawtypes")
    List entities = world.getEntitiesWithinAABB(EntityPlayer.class, bb);

    for (Object o : entities) {
      if (!(o instanceof EntityPlayer)) {
        continue;
      }
      ((EntityPlayer) o).mountEntity(minecart);
      return;
    }
  }
  private void func_110237_h(EntityPlayer p_110237_1_) {
    p_110237_1_.rotationYaw = this.rotationYaw;
    p_110237_1_.rotationPitch = this.rotationPitch;
    this.setEatingHaystack(false);
    this.setRearing(false);

    if (!this.worldObj.isRemote) {
      p_110237_1_.mountEntity(this);
    }
  }
 @Override
 public void updateTask() {
   super.updateTask();
   World world = minime.worldObj;
   if (!world.isRemote && canRidePlayer(targetPlayer)) {
     if (minime.getDistanceToEntity(targetPlayer) < 1.0) {
       targetPlayer.mountEntity(minime);
     }
   }
 }
  @Override
  public boolean interactFirst(EntityPlayer var1) {
    if (this.worldObj.isRemote) {
      if (this.riddenByEntity == null) {
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCKeyHandler.leftKey.keyCode)
                    + " / "
                    + Keyboard.getKeyName(GCKeyHandler.rightKey.keyCode)
                    + "  - "
                    + LanguageRegistry.instance().getStringLocalization("gui.buggy.turn.name")));
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCKeyHandler.accelerateKey.keyCode)
                    + "       - "
                    + LanguageRegistry.instance().getStringLocalization("gui.buggy.accel.name")));
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCKeyHandler.decelerateKey.keyCode)
                    + "       - "
                    + LanguageRegistry.instance().getStringLocalization("gui.buggy.decel.name")));
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCKeyHandler.openSpaceshipInv.keyCode)
                    + "       - "
                    + LanguageRegistry.instance().getStringLocalization("gui.buggy.inv.name")));
      }

      return true;
    } else {
      if (this.riddenByEntity != null) {
        var1.mountEntity(null);
        return true;
      } else {
        var1.mountEntity(this);
        return true;
      }
    }
  }
  @Override
  public boolean interactFirst(EntityPlayer var1) {
    if (this.worldObj.isRemote) {
      if (this.riddenByEntity == null) {
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCCoreKeyHandlerClient.leftKey.keyCode)
                    + " / "
                    + Keyboard.getKeyName(GCCoreKeyHandlerClient.rightKey.keyCode)
                    + "  - "
                    + StatCollector.translateToLocal("gui.buggy.turn.name")));
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCCoreKeyHandlerClient.accelerateKey.keyCode)
                    + "       - "
                    + StatCollector.translateToLocal("gui.buggy.accel.name")));
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCCoreKeyHandlerClient.decelerateKey.keyCode)
                    + "       - "
                    + StatCollector.translateToLocal("gui.buggy.decel.name")));
        var1.sendChatToPlayer(
            ChatMessageComponent.createFromText(
                Keyboard.getKeyName(GCCoreKeyHandlerClient.openSpaceshipInv.keyCode)
                    + "       - "
                    + StatCollector.translateToLocal("gui.buggy.inv.name")));
      }

      return true;
    } else {
      if (this.riddenByEntity != null) {
        var1.mountEntity(null);
        return true;
      } else {
        var1.mountEntity(this);
        return true;
      }
    }
  }
  @Override
  public boolean interact(EntityPlayer entityPlayer) {
    // Only the owner can interact with extended spiders.
    if (owner.equals(entityPlayer.getUniqueID())) {
      // Pack spider displays its inventory.
      if (spiderType == EnumSpiderType.PACK) {
        entityPlayer.displayGUIChest(inventory);
      }

      // Rider spider causes the player to mount it.
      else if (spiderType == EnumSpiderType.RIDER) {
        entityPlayer.rotationYaw = rotationYaw;
        entityPlayer.rotationPitch = rotationPitch;

        if (!worldObj.isRemote) {
          entityPlayer.mountEntity(this);
        }
      }
    }

    return true;
  }
Exemple #7
0
    @Override
    public IMessage onMessage(ChocoboMount message, MessageContext ctx) {

      EntityAnimalChocobo chocobo =
          PacketHelper.getChocoboByID(message.entityID, message.dimensionId);
      if (chocobo != null && chocobo instanceof EntityChocoboRideable) {
        EntityChocoboRideable chocoboRideable = (EntityChocoboRideable) chocobo;
        if (message.playerName.isEmpty()) {
          chocoboRideable.riddenByEntity = null;
          chocoboRideable.setJumping(false);
          chocoboRideable.setStepHeight(false);
          chocoboRideable.setLandSpeedFactor(false);
          chocoboRideable.setJumpHigh(false);
        } else {
          EntityPlayer rider = PacketHelper.getPlayer(message.playerName, message.dimensionId);
          rider.setSprinting(false);
          rider.mountEntity(chocoboRideable);
          chocoboRideable.setStepHeight(true);
          chocoboRideable.setLandSpeedFactor(true);
          chocoboRideable.setJumpHigh(true);
        }
      }
      return null;
    }
  @SubscribeEvent
  public void sleepInBed(PlayerSleepInBedEvent event) {
    SettingEntry se = null;
    if (event.entityPlayer.worldObj.isRemote) {
      se = PerfectSpawnClientHandler.currentServerSettings;
    } else {
      se = PerfectSpawn.settings.getValidSettingEntry();
    }

    if (se != null && se.forceBed) {
      WorldProvider provider = event.entityPlayer.worldObj.provider;
      EntityPlayer player = event.entityPlayer;
      World worldObj = player.worldObj;

      if (provider.dimensionId == se.spawnDimension) {
        event.result = EntityPlayer.EnumStatus.OK;
        if (player.isPlayerSleeping() || !player.isEntityAlive()) {
          event.result = EntityPlayer.EnumStatus.OTHER_PROBLEM;
        }

        if (!player.worldObj.isDaytime() && provider.isSurfaceWorld()) {
          event.result = EntityPlayer.EnumStatus.NOT_POSSIBLE_NOW;
        }

        if (Math.abs(player.posX - (double) event.x) > 3.0D
            || Math.abs(player.posY - (double) event.y) > 2.0D
            || Math.abs(player.posZ - (double) event.z) > 3.0D) {
          event.result = EntityPlayer.EnumStatus.TOO_FAR_AWAY;
        }

        double d0 = 8.0D;
        double d1 = 5.0D;
        List list =
            player.worldObj.getEntitiesWithinAABB(
                EntityMob.class,
                AxisAlignedBB.getBoundingBox(
                    (double) event.x - d0,
                    (double) event.y - d1,
                    (double) event.z - d0,
                    (double) event.x + d0,
                    (double) event.y + d1,
                    (double) event.z + d0));

        if (!list.isEmpty()) {
          event.result = EntityPlayer.EnumStatus.NOT_SAFE;
        }
      }

      if (player.isRiding()) {
        player.mountEntity((Entity) null);
      }

      this.setSize(player, 0.2F, 0.2F);
      player.yOffset = 0.2F;

      if (player.worldObj.blockExists(event.x, event.y, event.z)) {
        int l =
            worldObj
                .getBlock(event.x, event.y, event.z)
                .getBedDirection(worldObj, event.x, event.y, event.z);
        float f1 = 0.5F;
        float f = 0.5F;

        switch (l) {
          case 0:
            f = 0.9F;
            break;
          case 1:
            f1 = 0.1F;
            break;
          case 2:
            f = 0.1F;
            break;
          case 3:
            f1 = 0.9F;
        }

        this.func_71013_b(player, l);
        player.setPosition(
            (double) ((float) event.x + f1),
            (double) ((float) event.y + 0.9375F),
            (double) ((float) event.z + f));
      } else {
        player.setPosition(
            (double) ((float) event.x + 0.5F),
            (double) ((float) event.y + 0.9375F),
            (double) ((float) event.z + 0.5F));
      }

      try {
        sleepTimer.set(player, 0);
        sleeping.set(player, true);
      } catch (Exception e) {
        PerfectSpawn.instance.logger.log(Level.ERROR, "Couldn't reflect on player bed data");
        e.printStackTrace();
      }

      player.playerLocation = new ChunkCoordinates(event.x, event.y, event.z);
      player.motionX = player.motionZ = player.motionY = 0.0D;

      if (!player.worldObj.isRemote) {
        player.worldObj.updateAllPlayersSleepingFlag();
      }
    }
  }
  @Override
  public ItemStack onItemRightClick(
      ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) {
    PropertyDoom doom = PropertyDoom.get(par3EntityPlayer);

    if (!par3EntityPlayer.isSneaking()
        || !TragicWeapon.canUseAbility(doom, TragicConfig.doomAbilityCost[5])) {
      ArrowNockEvent event = new ArrowNockEvent(par3EntityPlayer, par1ItemStack);
      MinecraftForge.EVENT_BUS.post(event);
      if (event.isCanceled()) return event.result;

      if (par3EntityPlayer.capabilities.isCreativeMode
          || par3EntityPlayer.inventory.hasItem(Items.arrow)) {
        par3EntityPlayer.setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack));
      }
    } else {
      if (TragicWeapon.getStackCooldown(par1ItemStack) == 0 && TragicConfig.doomAbility[8]) {
        float f = 1.0F;
        float f1 =
            par3EntityPlayer.prevRotationPitch
                + (par3EntityPlayer.rotationPitch - par3EntityPlayer.prevRotationPitch) * f;
        float f2 =
            par3EntityPlayer.prevRotationYaw
                + (par3EntityPlayer.rotationYaw - par3EntityPlayer.prevRotationYaw) * f;
        double d0 =
            par3EntityPlayer.prevPosX + (par3EntityPlayer.posX - par3EntityPlayer.prevPosX) * f;
        double d1 =
            par3EntityPlayer.prevPosY
                + (par3EntityPlayer.posY - par3EntityPlayer.prevPosY) * f
                + (par3EntityPlayer.worldObj.isRemote
                    ? par3EntityPlayer.getEyeHeight() - par3EntityPlayer.getDefaultEyeHeight()
                    : par3EntityPlayer
                        .getEyeHeight()); // isRemote check to revert changes to ray trace position
        // due to adding the eye height clientside and player
        // yOffset differences
        double d2 =
            par3EntityPlayer.prevPosZ + (par3EntityPlayer.posZ - par3EntityPlayer.prevPosZ) * f;
        Vec3 vec3 = Vec3.createVectorHelper(d0, d1, d2);
        float f3 = MathHelper.cos(-f2 * 0.017453292F - (float) Math.PI);
        float f4 = MathHelper.sin(-f2 * 0.017453292F - (float) Math.PI);
        float f5 = -MathHelper.cos(-f1 * 0.017453292F);
        float f6 = MathHelper.sin(-f1 * 0.017453292F);
        float f7 = f4 * f5;
        float f8 = f3 * f5;
        double d3 = 50.0D;

        if (par3EntityPlayer instanceof EntityPlayerMP) {
          d3 =
              ((EntityPlayerMP) par3EntityPlayer).theItemInWorldManager.getBlockReachDistance()
                  + 46.0;
        }

        Vec3 vec31 = vec3.addVector(f7 * d3, f6 * d3, f8 * d3);
        MovingObjectPosition mop =
            par3EntityPlayer.worldObj.func_147447_a(vec3, vec31, true, false, true);

        if (mop == null) {
          if (!par2World.isRemote)
            par3EntityPlayer.addChatMessage(new ChatComponentText("Out of range to teleport to!"));
          return par1ItemStack;
        }

        if (mop.typeOfHit == MovingObjectType.BLOCK
            && par3EntityPlayer instanceof EntityPlayerMP
            && ((EntityPlayerMP) par3EntityPlayer)
                .playerNetServerHandler
                .func_147362_b()
                .isChannelOpen()) {
          if (par3EntityPlayer.isRiding()) par3EntityPlayer.mountEntity((Entity) null);

          double d4 = WorldHelper.getXPositionFromSide(mop.sideHit, mop.hitVec.xCoord);
          double d5 = WorldHelper.getYPositionFromSide(mop.sideHit, mop.hitVec.yCoord);
          double d6 = WorldHelper.getZPositionFromSide(mop.sideHit, mop.hitVec.zCoord);

          par3EntityPlayer.setPositionAndUpdate(d4, d5, d6);
          par3EntityPlayer.fallDistance = 0.0F;
          if (!par3EntityPlayer.capabilities.isCreativeMode)
            doom.increaseDoom(-TragicConfig.doomAbilityCost[8]);
          TragicWeapon.setStackCooldown(par1ItemStack, 5);
        }
      }
    }
    return par1ItemStack;
  }