public void on(final PlayerEvent.BreakSpeed event) if (colony.isCoordInColony(event.getEntity().world, event.getPos()) && Configurations.gameplay.pvp_mode && event.getState().getBlock() == ModBlocks.blockHutTownHall && event.getEntityPlayer().world instanceof WorldServer) final double hardness = event.getState().getBlockHardness(world, event.getPos()) * 20.0 * 1.5 / event.getNewSpeed();
@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 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 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); } } } } }
@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 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) { int y = event.getPos().getY(); y = 72 - y; // actual sealevel is 64, we chose 72 because we're nice if(y > 0) { event.setNewSpeed(event.getNewSpeed() + (float) y / 30f); } } }
@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); }