@SubscribeEvent public void mineSpeed(PlayerEvent.BreakSpeed event) { ItemStack tool = event.getEntityPlayer().inventory.getCurrentItem(); if(isTool(tool) && !ToolHelper.isBroken(tool)) { TinkerUtil.getTraitsOrdered(tool).forEach(trait -> trait.miningSpeed(tool, event)); } }
@SubscribeEvent public static void onMiningSpeedCheck(PlayerEvent.BreakSpeed event) { EntityPlayer player = event.getEntityPlayer(); if (LivingArmour.hasFullSet(player)) { ItemStack chestStack = player.getItemStackFromSlot(EntityEquipmentSlot.CHEST); LivingArmour armour = ItemLivingArmour.getLivingArmour(chestStack); if (armour != null) { double modifier = 1; for (LivingArmourUpgrade upgrade : armour.upgradeMap.values()) { modifier *= upgrade.getMiningSpeedModifier(player); } if (modifier != 1) { event.setNewSpeed((float) (event.getOriginalSpeed() * modifier)); } } } }
@SubscribeEvent public void onBreakSpeed(PlayerEvent.BreakSpeed event) { VampirePlayer vampire = VampirePlayer.get(event.getEntityPlayer()); HunterPlayer hunter = HunterPlayer.get(event.getEntityPlayer()); if (vampire.getSpecialAttributes().bat || hunter.getSpecialAttributes().isDisguised()) { event.setCanceled(true); } else if (ModBlocks.garlic_beacon.equals(event.getState().getBlock()) && vampire.getLevel() > 0) { event.setNewSpeed(event.getOriginalSpeed() * 0.1F); } }
&& event.getEntityPlayer().world instanceof WorldServer) final World world = event.getEntityPlayer().world; final double localProgress = breakProgressOnTownHall; final double hardness = event.getState().getBlockHardness(world, event.getPos()) * 20.0 * 1.5 / event.getNewSpeed(); LanguageHandler.sendPlayersMessage(colony.getMessageEntityPlayers(), TOWNHALL_BREAKING_MESSAGE, event.getEntityPlayer().getName(), 90); LanguageHandler.sendPlayersMessage(colony.getMessageEntityPlayers(), TOWNHALL_BREAKING_MESSAGE, event.getEntityPlayer().getName(), 75); LanguageHandler.sendPlayersMessage(colony.getMessageEntityPlayers(), TOWNHALL_BREAKING_MESSAGE, event.getEntityPlayer().getName(), 50); LanguageHandler.sendPlayersMessage(colony.getMessageEntityPlayers(), TOWNHALL_BREAKING_MESSAGE, event.getEntityPlayer().getName(), 25); LanguageHandler.sendPlayersMessage(colony.getMessageEntityPlayers(), "com.minecolonies.coremod.pvp.townhall.break.start", event.getEntityPlayer().getName()); breakProgressOnTownHall = 0; validTownHallBreak = false;
@SubscribeEvent public static void onBreakSpeed(BreakSpeed event) { if (event.getState().getBlock() instanceof BlockConduitBundle) { ItemStack held = event.getEntityPlayer().getHeldItemMainhand(); if (held.getItem().getHarvestLevel(held, "pickaxe", event.getEntityPlayer(), event.getState()) == -1) { event.setNewSpeed(event.getNewSpeed() + 2); } IConduitBundle te = BlockConduitBundle.getAnyTileEntity(event.getEntity().world, NullHelper.notnullF(event.getPos(), "BreakSpeed#getPos"), IConduitBundle.class); if (te != null && te.getFacadeType().isHardened()) { if (!YetaUtil.isSolidFacadeRendered(te, event.getEntityPlayer())) { event.setNewSpeed(event.getNewSpeed() * 6); } else { event.setNewSpeed(event.getNewSpeed() * 2); } } } }
@SubscribeEvent public void onBreaking(BreakSpeed event) { EntityPlayer player = event.getEntityPlayer(); if (ForgeHooks.canHarvestBlock(event.getState().getBlock(), player, player.worldObj, event.getPos())) { if (player.isInsideOfMaterial(Material.WATER)) { if (EntityHelper.hasArmor(player, EntityEquipmentSlot.LEGS, this)) { event.setNewSpeed(event.getOriginalSpeed() * 2F); } } } } }
@SubscribeEvent public void breakSpeed(PlayerEvent.BreakSpeed event) { // only show event if either the test block or the test item is involved if ( (event.getState() == null || event.getState().getBlock() != StartupCommon.blockToolTest) && (event.getEntityPlayer() == null || event.getEntityPlayer().getItemStackFromSlot(EntityEquipmentSlot.MAINHAND).getItem() != StartupCommon.itemToolsTest)) { return; } StartupCommon.methodCallLogger.enterMethod("Event.BreakSpeed", "blockstate=" + event.getState() + ", blockpos=" + event.getPos() + ", oldspeed = " + event.getOriginalSpeed()); // your code here StartupCommon.methodCallLogger.exitMethod("Event.BreakSpeed", "newspeed=" + event.getNewSpeed() + ", cancelled=" + event.isCanceled()); }
@SubscribeEvent public void calcBreakSpeed(BreakSpeed event) { ItemStack stack = event.getEntityPlayer().getHeldItem(EnumHand.MAIN_HAND); if(stack.getItem() instanceof ItemAxe && event.getState().getMaterial() == Material.LEAVES) event.setNewSpeed(((ItemTool) stack.getItem()).getDestroySpeed(stack, Blocks.PLANKS.getDefaultState())); }
@SubscribeEvent public void onBreakSpeedEvent(PlayerEvent.BreakSpeed evt) { if (isEquipped(evt.getEntityPlayer())) { if (!evt.getEntityPlayer().isSneaking() && isPowered(evt.getEntityPlayer(), DarkSteelConfig.axePowerUsePerDamagePointMultiHarvest) && FarmersRegistry.isLog(evt.getState().getBlock())) { evt.setNewSpeed(evt.getOriginalSpeed() / DarkSteelConfig.axeSpeedPenaltyMultiHarvest.get()); } else if (evt.getState().getMaterial() == Material.LEAVES) { evt.setNewSpeed(6); } } }
@SubscribeEvent public void onBreakSpeedEvent(PlayerEvent.BreakSpeed evt) { if (evt.getOriginalSpeed() > 2.0 && isEquippedAndPowered(evt.getEntityPlayer(), DarkSteelConfig.shearsPowerUsePerDamagePoint)) { evt.setNewSpeed(evt.getOriginalSpeed() * DarkSteelConfig.shearsEfficiencyBoostWhenPowered.get()); } }
@Override public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) { World world = event.getEntityPlayer().getEntityWorld(); // target speed float speed = ToolHelper.getActualMiningSpeed(tool); int level = getLevel(tool); // mitigate block hardness float hardness = event.getState().getBlockHardness(world, event.getPos()); if(hardness <= 0f) { // hardness 0 -> already instabreaks. otherwise we set speed to 0 return; } speed *= hardness; if(level > 2) { speed /= 1.1f; } else if(level > 1) { speed /= 5f; } else { speed /= 10f; } float weight1 = (float) level / (float) maxLevel; float weight2 = 1f - (float) level / (float) maxLevel; // we weight the speed depending on how much the current level is. So 0 = full old speed, 10 = full new speed, 5 = in the middle float totalSpeed = speed * weight1 + event.getOriginalSpeed() * weight2; event.setNewSpeed(totalSpeed); }
@SubscribeEvent public void breakFaster( final PlayerEvent.BreakSpeed event ) { if( event.getState().getBlock() == this && event.getEntityPlayer() != null ) { final ItemStack is = event.getEntityPlayer().getItemStackFromSlot( EntityEquipmentSlot.MAINHAND ); int level = -1; if( !is.isEmpty() ) { level = is.getItem().getHarvestLevel( is, "pickaxe", event.getEntityPlayer(), event.getState() ); } if( this.type != SkystoneType.STONE || level >= 3 || event.getOriginalSpeed() > BREAK_SPEAK_THRESHOLD ) { event.setNewSpeed( event.getNewSpeed() / BREAK_SPEAK_SCALAR ); } } }
@SubscribeEvent public void offhandBreakSpeed(PlayerEvent.BreakSpeed event) { EntityPlayer player = event.getEntityPlayer(); if(shouldUseOffhand(player, event.getState(), player.getHeldItemMainhand())) { ItemStack main = player.getHeldItemMainhand(); ItemStack offhand = player.getHeldItemOffhand(); // we use this instead of player.setItemStackToSlot because that one plays an equip sound ;_; player.inventory.mainInventory.set(player.inventory.currentItem, offhand); float speed = player.getDigSpeed(event.getState(), event.getPos()); player.inventory.mainInventory.set(player.inventory.currentItem, main); event.setNewSpeed(speed); } } }
@Override public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) { float coeff = 1f; // is the player in water? if(event.getEntityPlayer().isInWater()) { coeff += 5.5f; // being in water causes speed to be 1/5th. These values work fine. } // is it raining? if(event.getEntityPlayer().getEntityWorld().isRaining()) { coeff += event.getEntityPlayer().getEntityWorld().getBiomeForCoordsBody(event.getEntityPlayer().getPosition()).getRainfall() / 1.6f; } event.setNewSpeed(event.getNewSpeed() + event.getOriginalSpeed() * coeff); } }
@Override public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) { // speedup or slowdown depending on biome temperature. hotter areas are much faster float coeff = calcAridiculousness(event.getEntityPlayer().getEntityWorld(), event.getPos()) / 10f; // /10 = 10% for a coeff of 1. But can be bigger. event.setNewSpeed(event.getNewSpeed() + event.getOriginalSpeed() * coeff); }
@Override public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) { float boost = Momentum.getLevel(event.getEntityPlayer()); boost /= 80f; // 40% boost max event.setNewSpeed(event.getNewSpeed() + event.getOriginalSpeed() * boost); }
@Override public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) { Block block = event.getState().getBlock(); int hlvl = tool.getItem().getHarvestLevel(tool, block.getHarvestTool(event.getState()), event.getEntityPlayer(), event.getState()); int dif = hlvl - block.getHarvestLevel(event.getState()); // 1 speed per harvest level above if(dif > 0) { event.setNewSpeed(event.getNewSpeed() + dif); } }