/** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn) { if (playerIn.fishEntity != null) { int i = playerIn.fishEntity.handleHookRetraction(); itemStackIn.damageItem(i, playerIn); playerIn.swingItem(); } else { worldIn.playSoundAtEntity(playerIn, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!worldIn.isRemote) { worldIn.spawnEntityInWorld(new EntityFishHook(worldIn, playerIn)); } playerIn.swingItem(); playerIn.triggerAchievement(StatList.objectUseStats[Item.getIdFromItem(this)]); } return itemStackIn; }
public ActionResult<ItemStack> onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn, EnumHand hand) { if (playerIn.fishEntity != null) { int i = playerIn.fishEntity.handleHookRetraction(); itemStackIn.damageItem(i, playerIn); playerIn.swingArm(hand); } else { worldIn.playSound((EntityPlayer)null, playerIn.posX, playerIn.posY, playerIn.posZ, SoundEvents.ENTITY_BOBBER_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!worldIn.isRemote) { worldIn.spawnEntityInWorld(new EntityFishHook(worldIn, playerIn)); } playerIn.swingArm(hand); playerIn.addStat(StatList.getObjectUseStats(this)); } return new ActionResult(EnumActionResult.SUCCESS, itemStackIn); }
@SubscribeEvent public void onEntitySpawn(EntityJoinWorldEvent event) { if(event.getEntity().world.isRemote) { Minecraft mc = Minecraft.getMinecraft(); if(event.getEntity() instanceof EntityFishHook) { fishHooks.add((EntityFishHook)event.getEntity()); } if(event.getEntity() instanceof EntityZombie && !(event.getEntity() instanceof EntityZombieVillager) || event.getEntity() instanceof EntitySkeleton || MobAmputation.config.playerGibs == 1 && event.getEntity() instanceof EntityPlayer && event.getEntity() != mc.player) { EntityLivingBase living = (EntityLivingBase)event.getEntity(); if(!amputationMap.containsKey(living) && !living.isChild()) { attachGibs(event.getEntity().world, living); } } } }
@SideOnly( Side.CLIENT ) public ItemStack onItemRightClick( ItemStack stack, World world, EntityPlayer player ) { ItemStack ret = super.onItemRightClick( stack, world, player ); if ( world.isRemote ) { Minecraft mc = FMLClientHandler.instance().getClient(); EntityFishHook hook = player.fishEntity; if ( player == mc.thePlayer && hook != null ) { stagnated = false; prevMotionY = 0; timeSinceCasted = 0; } } return ret; }
/** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { if (par3EntityPlayer.fishEntity != null) { int var4 = par3EntityPlayer.fishEntity.func_146034_e(); par1ItemStack.damageItem(var4, par3EntityPlayer); par3EntityPlayer.swingItem(); } else { par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!par2World.isClient) { par2World.spawnEntityInWorld(new EntityFishHook(par2World, par3EntityPlayer)); } par3EntityPlayer.swingItem(); } return par1ItemStack; }
public void onBobberSplashDetected(float x, float y, float z) { if (playerHookInWater(this.player)) { EntityFishHook hook = this.player.fishEntity; // double yDifference = Math.abs(hook.posY - y); // Ignore Y component when calculating distance from hook double xzDistanceFromHook = hook.getDistanceSq(x, hook.posY, z); if (xzDistanceFromHook <= CLOSE_BOBBER_SPLASH_THRESHOLD) { // AutoFishLogger.info("[%d] Close bobber splash at %f / %f", this.minecraft.world.getTotalWorldTime(), xzDistanceFromHook, yDifference); this.closeBobberSplashDetectedAt = this.minecraftClient.world.getTotalWorldTime(); // if (xzDistanceFromHook <= EXACT_BOBBER_SPLASH_THRESHOLD) { // // AutoFishLogger.info("[%d] Exact bobber splash at %f / %f", this.minecraft.world.getTotalWorldTime(), xzDistanceFromHook, yDifference); // this.exactBobberSplashDetectedAt = this.minecraft.world.getTotalWorldTime(); // } } } }
/** * Callback from the WorldEventListener to tell us whenever a WATER_WAKE particle * is spawned in the world. * * @param x * @param y * @param z */ public void onWaterWakeDetected(double x, double y, double z) { if (this.minecraftClient != null && this.minecraftClient.player != null && playerHookInWater(this.minecraftClient.player)) { EntityFishHook hook = this.minecraftClient.player.fishEntity; double distanceFromHook = new BlockPos(x, y, z).distanceSq(hook.posX, hook.posY, hook.posZ); if (distanceFromHook <= CLOSE_WATER_WAKE_THRESHOLD) { if (this.closeWaterWakeDetectedAt <= 0) { // AutoFishLogger.info("[%d] Close water wake at %f", this.minecraft.world.getTotalWorldTime(), distanceFromHook); this.closeWaterWakeDetectedAt = this.minecraftClient.world.getTotalWorldTime(); } // if (distanceFromHook <= EXACT_WATER_WAKE_THRESHOLD) { // if (this.exactWaterWakeDetectedAt <=0) { //// AutoFishLogger.info("[%d] Exact water wake at %f", this.minecraft.world.getTotalWorldTime(), distanceFromHook); // this.exactWaterWakeDetectedAt = this.minecraft.world.getTotalWorldTime(); // } // } } } }
private boolean isFishBiting_fromAll() { /** Assume a bit if the following conditions are true: * (1) There is at least a little Y motion of the fish hook * (2) Either (a) There has been a "close" bobber splash very recently; OR * (b) A "close" water wake was detected long enough ago */ EntityFishHook fishEntity = this.player.fishEntity; if (fishEntity != null // Checking for no X and Z motion prevents a false alarm when the hook is moving through the air && fishEntity.motionX == 0 && fishEntity.motionZ == 0 && fishEntity.motionY < MOTION_Y_MAYBE_THRESHOLD) { // long totalWorldTime = this.minecraft.world.getTotalWorldTime(); if (recentCloseBobberSplash() || recentCloseWaterWake()) { Logger.debug("[%d] Detected bite by ALL", this.minecraftClient.world.getTotalWorldTime()); return true; } } return false; }
/** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { if (par3EntityPlayer.fishEntity != null) { int i = par3EntityPlayer.fishEntity.func_146034_e(); par1ItemStack.damageItem(i, par3EntityPlayer); par3EntityPlayer.swingItem(); } else { par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!par2World.isRemote) { par2World.spawnEntityInWorld(new EntityFishHook(par2World, par3EntityPlayer)); } par3EntityPlayer.swingItem(); } return par1ItemStack; }
public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { if (p_77659_3_.fishEntity != null) { int i = p_77659_3_.fishEntity.func_146034_e(); p_77659_1_.damageItem(i, p_77659_3_); p_77659_3_.swingItem(); } else { p_77659_2_.playSoundAtEntity(p_77659_3_, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!p_77659_2_.isRemote) { p_77659_2_.spawnEntityInWorld(new EntityFishHook(p_77659_2_, p_77659_3_)); } p_77659_3_.swingItem(); } return p_77659_1_; }
public ItemStack func_77659_a(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { if(p_77659_3_.field_71104_cf != null) { int var4 = p_77659_3_.field_71104_cf.func_70198_d(); p_77659_1_.func_77972_a(var4, p_77659_3_); p_77659_3_.func_71038_i(); } else { p_77659_2_.func_72956_a(p_77659_3_, "random.bow", 0.5F, 0.4F / (field_77697_d.nextFloat() * 0.4F + 0.8F)); if(!p_77659_2_.field_72995_K) { p_77659_2_.func_72838_d(new EntityFishHook(p_77659_2_, p_77659_3_)); } p_77659_3_.func_71038_i(); } return p_77659_1_; }
/** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { if (par3EntityPlayer.fishEntity != null) { int i = par3EntityPlayer.fishEntity.catchFish(); par1ItemStack.damageItem(i, par3EntityPlayer); par3EntityPlayer.swingItem(); } else { par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!par2World.isRemote) { par2World.spawnEntityInWorld(new EntityFishHook(par2World, par3EntityPlayer)); } par3EntityPlayer.swingItem(); } return par1ItemStack; }
@Override public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { ///LoggerHelper.log(Level.INFO, "Right Clicked"); if (par3EntityPlayer.fishEntity != null) { int i = par3EntityPlayer.fishEntity.catchFish(); par1ItemStack.damageItem(i, par3EntityPlayer); par3EntityPlayer.swingItem(); //LoggerHelper.log(Level.INFO, "Entity!=null"); } else { par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); // LoggerHelper.log(Level.INFO, "Entity=null"); if (!par2World.isRemote) { par2World.spawnEntityInWorld(new EntityFishHook(par2World, par3EntityPlayer)); } par3EntityPlayer.swingItem(); } return par1ItemStack; }
public double getBiteChance() { EntityFishHook hook = getHandle(); if (this.biteChance == -1) { if (hook.worldObj.canLightningStrikeAt(MathHelper.floor_double(hook.posX), net.minecraft.util.MathHelper.floor_double(hook.posY) + 1, net.minecraft.util.MathHelper.floor_double(hook.posZ))) { return 1/300.0; } return 1/500.0; } return this.biteChance; }
public ActionResult<ItemStack> onItemRightClick(World itemStackIn, EntityPlayer worldIn, EnumHand playerIn) { ItemStack itemstack = worldIn.getHeldItem(playerIn); if (worldIn.fishEntity != null) { int i = worldIn.fishEntity.handleHookRetraction(); itemstack.damageItem(i, worldIn); worldIn.swingArm(playerIn); } else { itemStackIn.playSound((EntityPlayer)null, worldIn.posX, worldIn.posY, worldIn.posZ, SoundEvents.ENTITY_BOBBER_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!itemStackIn.isRemote) { EntityFishHook entityfishhook = new EntityFishHook(itemStackIn, worldIn); int j = EnchantmentHelper.func_191528_c(itemstack); if (j > 0) { entityfishhook.func_191516_a(j); } int k = EnchantmentHelper.func_191529_b(itemstack); if (k > 0) { entityfishhook.func_191517_b(k); } itemStackIn.spawnEntityInWorld(entityfishhook); } worldIn.swingArm(playerIn); worldIn.addStat(StatList.getObjectUseStats(this)); } return new ActionResult(EnumActionResult.SUCCESS, itemstack); }
@SubscribeEvent(priority = EventPriority.HIGHEST) public void entityJoinWorldEvent(EntityJoinWorldEvent event) { Entity entity = event.getEntity(); if (ExtendedConfig.overrideVanillaFishing && entity instanceof EntityFishHook && entity.getClass().equals(EntityFishHook.class)) { World world = event.getWorld(); if (!world.isRemote) { EntityPlayer player = ((EntityFishHook) entity).getAngler(); ItemStack stack = player.getHeldItem(EnumHand.MAIN_HAND); if (stack.getItem() != Items.FISHING_ROD) { stack = player.getHeldItem(EnumHand.OFF_HAND); } entity.setDead(); EntityCustomFishHook hook = new EntityCustomFishHook(world, player); int speed = EnchantmentHelper.getFishingSpeedBonus(stack); if (speed > 0) { hook.setLureSpeed(speed); } int luck = EnchantmentHelper.getFishingLuckBonus(stack); if (luck > 0) { hook.setLuck(luck); } world.spawnEntity(hook); } event.setCanceled(true); } }
/** * Determine whether a fish is biting the player's hook, using the server-side player entity. * This only works in Single Player, but is 100% accurate. * * @param serverPlayerEntity * @return * @throws NumberFormatException * @throws NoSuchFieldException * @throws SecurityException * @throws IllegalArgumentException * @throws IllegalAccessException */ private boolean isFishBiting_fromServerEntity(EntityPlayer serverPlayerEntity) throws NumberFormatException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { /* * The fish hook entity on the server side knows whether a fish is catchable at any given time. However, * that field is private and not exposed in any way. So we must use reflection to access that field. */ EntityFishHook serverFishEntity = serverPlayerEntity.fishEntity; int ticksCatchable = ReflectionUtils.getPrivateIntFieldFromObject(serverFishEntity, "ticksCatchable", "field_146045_ax"); if (ticksCatchable > 0) { return true; } return false; }
private boolean isFishBiting_fromMovement() { EntityFishHook fishEntity = this.player.fishEntity; if (fishEntity != null // Checking for no X and Z motion prevents a false alarm when the hook is moving through the air && fishEntity.motionX == 0 && fishEntity.motionZ == 0 && fishEntity.motionY < MOTION_Y_THRESHOLD) { Logger.debug("[%d] Detected bite by MOVEMENT", this.minecraftClient.world.getTotalWorldTime()); return true; } return false; }
/** * For the current player, trigger a bite on the fish hook. */ @SuppressWarnings("unused") private void triggerBite() { EntityPlayer serverPlayerEntity = getServerPlayerEntity(); if (serverPlayerEntity != null) { /* * If we are single player and have access to the server player entity, try to hack the fish hook entity * to make fish bite sooner. */ EntityFishHook serverFishEntity = serverPlayerEntity.fishEntity; int ticks = FAST_FISH_CATCHABLE_DELAY_TICKS + MathHelper.getInt(this.rand, 0, FAST_FISH_DELAY_VARIANCE); setTicksCatchableDelay(serverFishEntity, ticks); } }
public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { if (p_77659_3_.fishEntity != null) { int i = p_77659_3_.fishEntity.func_146034_e(); p_77659_1_.damageItem(i, p_77659_3_); p_77659_3_.swingItem(); } else { // CraftBukkit start EntityFishHook hook = new EntityFishHook(p_77659_2_, p_77659_3_); PlayerFishEvent playerFishEvent = new PlayerFishEvent((org.bukkit.entity.Player) p_77659_3_.getBukkitEntity(), null, (org.bukkit.entity.Fish) hook.getBukkitEntity(), PlayerFishEvent.State.FISHING); p_77659_2_.getServer().getPluginManager().callEvent(playerFishEvent); if (playerFishEvent.isCancelled()) { return p_77659_1_; } // CraftBukkit end p_77659_2_.playSoundAtEntity(p_77659_3_, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!p_77659_2_.isRemote) { p_77659_2_.spawnEntityInWorld(hook); // CraftBukkit - moved creation up } p_77659_3_.swingItem(); } return p_77659_1_; }
public static void RenderEntityInfoInWorld(EntityFishHook entity, float partialTickTime) { ItemStack itemstack = entity.angler.getCurrentEquippedItem(); if (((mc.inGameHasFocus) || (mc.currentScreen == null) || (mc.currentScreen instanceof GuiChat) && (!mc.gameSettings.showDebugInfo)) && (itemstack.getItem() instanceof ItemInfusedFishingPole)) { EntityFishHook fishhook = (EntityFishHook)entity; double distanceFromMe = mc.thePlayer.getDistanceToEntity(fishhook); if (distanceFromMe > 32) { return; } RenderCountdownOverlay(fishhook, partialTickTime); } }
protected static void RenderCountdownOverlay(EntityFishHook entityfishhook, float partialTickTime) { float x = (float)entityfishhook.posX; float y = (float)entityfishhook.posY; float z = (float)entityfishhook.posZ; String countdown = Integer.toString((entityfishhook.hookedTimer/20)+1); if (countdown != null && entityfishhook.hookedTimer != 1000) { RenderFloatingText(countdown, x, y, z, 16777215, true, partialTickTime);} }
public static void RenderEntityInfo(float partialTickTime) { if (mc.inGameHasFocus) { for (Object object : mc.theWorld.loadedEntityList) { if (object instanceof EntityFishHook) { RenderEntityInfoInWorld((EntityFishHook)object, partialTickTime); ItemStack itemstack = mc.thePlayer.getCurrentEquippedItem(); if (itemstack.getItem() instanceof IFishingPole) if (itemstack.getItem() == ThaumicTools.thaumiumFishingPoleItem) { } } } } }
public CraftFish(CraftServer server, EntityFishHook entity) { super(server, entity); }
@Override public EntityFishHook getHandle() { return (EntityFishHook) entity; }
/** * Causes this Entity to drop a random item. */ protected void addRandomDrop() { ItemStack itemstack = ((WeightedRandomFishable)WeightedRandom.getRandomItem(this.rand, EntityFishHook.func_174855_j())).getItemStack(this.rand); this.entityDropItem(itemstack, 1.0F); }