magento2 – Upgrading from magento 2.4.0 to 2.4.1, side effects

So I upgraded from 2.4.0 to 2.4.1, everything went fine, but then I get following when I try to run setup:di:compile:

    In ClassReader.php line 45:
                                                                                                        
  Impossible to process constructor argument Parameter #2 ( <required> MagentoInventorySalesApiApiS  
  tockResolverInterface $stockResolver ) of MagentoInventoryVisualMerchandiserPluginModelResolver  
  QuantityAndStockPlugin class                                                                          
                                                                                                        

In ClassReader.php line 34:
                                                                             
  Class MagentoInventorySalesApiApiStockResolverInterface does not exist  
                                                                         

I am disabling all MSI modules in my composer since I’m not using them, if I enable them, my cart suddenly says something: “There are no source items with the in-stock status”.

My composer.json (Running php7.4):

{
    "name": "magento/project-community-edition",
    "description": "eCommerce Platform for Growth (Community Edition)",
    "type": "project",
    "license": (
        "OSL-3.0",
        "AFL-3.0"
    ),
    "config": {
        "preferred-install": "dist",
        "sort-packages": true
    },
    "require": {
    "magento/product-community-edition": "2.4.1",
    "magento/composer-root-update-plugin": "~1.0",
        "bambora/module-payment-magento2": "^2.2",
        "magento/data-migration-tool": "2.4.1",
        "mageplaza/magento-2-danish-language-pack": "dev-master"
    },
    "require-dev": {
        "allure-framework/allure-phpunit": "~1.2.0",
        "friendsofphp/php-cs-fixer": "~2.16.0",
        "lusitanian/oauth": "~0.8.10",
        "magento/magento-coding-standard": "~3.0.0",
        "magento/magento2-functional-testing-framework": "^3.0",
        "pdepend/pdepend": "~2.7.1",
        "phpmd/phpmd": "^2.8.0",
        "phpunit/phpunit": "^9",
        "sebastian/phpcpd": "~5.0.0",
        "squizlabs/php_codesniffer": "~3.5.4"
    },
    "replace": {
    "amzn/amazon-pay-and-login-magento-2-module": "*",
        "amzn/amazon-pay-and-login-with-amazon-core-module": "*",
        "amzn/amazon-pay-module": "*",
        "amzn/amazon-pay-sdk-php": "*",
        "amzn/login-with-amazon-module": "*",
        "astock/stock-api-libphp": "*",
        "braintree/braintree": "*",
        "braintree/braintree_php": "*",
        "dotmailer/dotmailer-magento2-extension": "*",
        "dotmailer/dotmailer-magento2-extension-chat": "*",
        "dotmailer/dotmailer-magento2-extension-enterprise": "*",
        "dotmailer/dotmailer-magento2-extension-package": "*",
        "klarna/m2-payments": "*",
        "klarna/module-core": "*",
        "klarna/module-kp": "*",
        "klarna/module-ordermanagement": "*",
        "magento/adobe-stock-integration": "*",
        "magento/google-shopping-ads": "*",
        "magento/inventory-composer-installer": "*",
        "magento/inventory-composer-metapackage": "*",
        "magento/module-adobe-ims": "*",
        "magento/module-adobe-ims-api": "*",
        "magento/module-adobe-stock-admin-ui": "*",
        "magento/module-adobe-stock-asset": "*",
        "magento/module-adobe-stock-asset-api": "*",
        "magento/module-adobe-stock-client": "*",
        "magento/module-adobe-stock-client-api": "*",
        "magento/module-adobe-stock-image": "*",
        "magento/module-adobe-stock-image-admin-ui": "*",
        "magento/module-adobe-stock-image-api": "*",
        "magento/module-amqp": "*",
        "magento/module-amqp-store": "*",
        "magento/module-analytics": "*",
        "magento/module-authorizenet": "*",
        "magento/module-authorizenet-acceptjs": "*",
        "magento/module-authorizenet-cardinal": "*",
        "magento/module-authorizenet-graph-ql": "*",
        "magento/module-braintree": "*",
        "magento/module-braintree-graph-ql": "*",
        "magento/module-bundle-graph-ql": "*",
        "magento/module-bundle-import-export": "*",
        "magento/module-bundle-import-export-staging": "*",
        "magento/module-bundle-staging": "*",
        "magento/module-cardinal-commerce": "*",
        "magento/module-catalog-analytics": "*",
        "magento/module-catalog-cms-graph-ql": "*",
        "magento/module-catalog-customer-graph-ql": "*",
        "magento/module-catalog-customer-ql": "*",
        "magento/module-catalog-graph-ql": "*",
        "magento/module-catalog-import-export-staging": "*",
        "magento/module-catalog-inventory-graph-ql": "*",
        "magento/module-catalog-inventory-staging": "*",
        "magento/module-catalog-page-builder-analytics-staging": "*",
        "magento/module-catalog-rule-staging": "*",
        "magento/module-catalog-staging": "*",
        "magento/module-catalog-staging-page-builder": "*",
        "magento/module-catalog-url-rewrite-graph-ql": "*",
        "magento/module-catalog-url-rewrite-staging": "*",
        "magento/module-checkout-agreements-graph-ql": "*",
        "magento/module-checkout-staging": "*",
        "magento/module-cms-graph-ql": "*",
        "magento/module-cms-page-builder-analytics-staging": "*",
        "magento/module-cms-staging": "*",
        "magento/module-cms-url-rewrite-graph-ql": "*",
        "magento/module-configurable-product-graph-ql": "*",
        "magento/module-configurable-product-staging": "*",
        "magento/module-customer-analytics": "*",
        "magento/module-customer-balance-graph-ql": "*",
        "magento/module-customer-downloadable-graph-ql": "*",
        "magento/module-customer-graph-ql": "*",
        "magento/module-cybersource": "*",
        "magento/module-dhl": "*",
        "magento/module-directory-graph-ql": "*",
        "magento/module-downloadable-graph-ql": "*",
        "magento/module-downloadable-import-export": "*",
        "magento/module-downloadable-staging": "*",
        "magento/module-eav-graph-ql": "*",
        "magento/module-eway": "*",
        "magento/module-fedex": "*",
        "magento/module-gift-card-account-graph-ql": "*",
        "magento/module-gift-card-graph-ql": "*",
        "magento/module-gift-card-staging": "*",
        "magento/module-gift-message-staging": "*",
        "magento/module-gift-wrapping-staging": "*",
        "magento/module-graph-ql": "*",
        "magento/module-graph-ql-cache": "*",
        "magento/module-grouped-import-export": "*",
        "magento/module-grouped-product-graph-ql": "*",
        "magento/module-grouped-product-staging": "*",
        "magento/module-inventory": "*",
        "magento/module-inventory-admin-ui": "*",
        "magento/module-inventory-advanced-checkout": "*",
        "magento/module-inventory-requisition-list": "*",
        "magento/module-inventory-api": "*",
        "magento/module-inventory-bundle-import-export": "*",
        "magento/module-inventory-bundle-product": "*",
        "magento/module-inventory-bundle-product-indexer": "*",
        "magento/module-inventory-bundle-product-admin-ui": "*",
        "magento/module-inventory-cache": "*",
        "magento/module-inventory-catalog": "*",
        "magento/module-inventory-catalog-admin-ui": "*",
        "magento/module-inventory-catalog-api": "*",
        "magento/module-inventory-catalog-search": "*",
        "magento/module-inventory-configurable-product": "*",
        "magento/module-inventory-configurable-product-admin-ui": "*",
        "magento/module-inventory-configurable-product-indexer": "*",
        "magento/module-inventory-configuration": "*",
        "magento/module-inventory-configuration-api": "*",
        "magento/module-inventory-distance-based-source-selection": "*",
        "magento/module-inventory-distance-based-source-selection-admin-ui": "*",
        "magento/module-inventory-distance-based-source-selection-api": "*",
        "magento/module-inventory-export-stock": "*",
        "magento/module-inventory-export-stock-api": "*",
        "magento/module-inventory-elasticsearch": "*",
        "magento/module-inventory-graph-ql": "*",
        "magento/module-inventory-grouped-product": "*",
        "magento/module-inventory-grouped-product-admin-ui": "*",
        "magento/module-inventory-grouped-product-indexer": "*",
        "magento/module-inventory-import-export": "*",
        "magento/module-inventory-indexer": "*",
        "magento/module-inventory-in-store-pickup": "*",
        "magento/module-inventory-in-store-pickup-admin-ui": "*",
        "magento/module-inventory-in-store-pickup-api": "*",
        "magento/module-inventory-in-store-pickup-frontend": "*",
        "magento/module-inventory-in-store-pickup-graph-ql": "*",
        "magento/module-inventory-in-store-pickup-multishipping": "*",
        "magento/module-inventory-in-store-pickup-quote": "*",
        "magento/module-inventory-in-store-pickup-quote-graph-ql": "*",
        "magento/module-inventory-in-store-pickup-sales": "*",
        "magento/module-inventory-in-store-pickup-sales-admin-ui": "*",
        "magento/module-inventory-in-store-pickup-sales-api": "*",
        "magento/module-inventory-in-store-pickup-shipping": "*",
        "magento/module-inventory-in-store-pickup-shipping-admin-ui": "*",
        "magento/module-inventory-in-store-pickup-shipping-api": "*",
        "magento/module-inventory-in-store-pickup-webapi-extension": "*",
        "magento/module-inventory-low-quantity-notification": "*",
        "magento/module-inventory-low-quantity-notification-admin-ui": "*",
        "magento/module-inventory-low-quantity-notification-api": "*",
        "magento/module-inventory-multi-dimensional-indexer-api": "*",
        "magento/module-inventory-product-alert": "*",
        "magento/module-inventory-reservations": "*",
        "magento/module-inventory-reservations-api": "*",
        "magento/module-inventory-reservation-cli": "*",
        "magento/module-inventory-sales": "*",
        "magento/module-inventory-sales-admin-ui": "*",
        "magento/module-inventory-sales-api": "*",
        "magento/module-inventory-sales-frontend-ui": "*",
        "magento/module-inventory-setup-fixture-generator": "*",
        "magento/module-inventory-shipping": "*",
        "magento/module-inventory-shipping-admin-ui": "*",
        "magento/module-inventory-source-deduction-api": "*",
        "magento/module-inventory-source-selection": "*",
        "magento/module-inventory-source-selection-api": "*",
        "magento/module-layered-navigation-staging": "*",
        "magento/module-marketplace": "*",
        "magento/module-msrp-staging": "*",
        "magento/module-multishipping": "*",
        "magento/module-new-relic-reporting": "*",
        "magento/module-payment-staging": "*",
        "magento/module-paypal-graph-ql": "*",
        "magento/module-product-video-staging": "*",
        "magento/module-quote-analytics": "*",
        "magento/module-quote-graph-ql": "*",
        "magento/module-related-product-graph-ql": "*",
        "magento/module-review-analytics": "*",
        "magento/module-review-staging": "*",
        "magento/module-reward-graph-ql": "*",
        "magento/module-reward-staging": "*",
        "magento/module-rma-graph-ql": "*",
        "magento/module-rma-staging": "*",
        "magento/module-sales-analytics": "*",
        "magento/module-sales-graph-ql": "*",
        "magento/module-sales-rule-staging": "*",
        "magento/module-sample-data": "*",
        "magento/module-search-staging": "*",
        "magento/module-send-friend": "*",
        "magento/module-send-friend-graph-ql": "*",
        "magento/module-signifyd": "*",
        "magento/module-staging": "*",
        "magento/module-staging-page-builder": "*",
        "magento/module-store-graph-ql": "*",
        "magento/module-swagger": "*",
        "magento/module-swagger-webapi": "*",
        "magento/module-swagger-webapi-async": "*",
        "magento/module-swatches-graph-ql": "*",
        "magento/module-tax-graph-ql": "*",
        "magento/module-tax-import-export": "*",
        "magento/module-theme-graph-ql": "*",
        "magento/module-ups": "*",
        "magento/module-url-rewrite-graph-ql": "*",
        "magento/module-usps": "*",
        "magento/module-vault-graph-ql": "*",
        "magento/module-version": "*",
        "magento/module-weee-graph-ql": "*",
        "magento/module-weee-staging": "*",
        "magento/module-wishlist-analytics": "*",
        "magento/module-wishlist-graph-ql": "*",
        "magento/module-worldpay": "*",
        "paypal/module-braintree-core": "*",
        "paypal/module-braintree": "*",
        "temando/module-shipping": "*",
        "temando/module-shipping-m2": "*",
        "temando/module-shipping-remover": "*",
        "vertex/module-address-validation": "*",
        "vertex/module-tax": "*",
        "vertex/product-magento-module": "*",
        "vertex/sdk": "*",
        "yotpo/magento2-module-yotpo-reviews": "*",
        "yotpo/magento2-module-yotpo-reviews-bundle": "*"
    },
    "conflict": {
        "gene/bluefoot": "*"
    },
    "autoload": {
        "psr-4": {
            "Magento\Framework\": "lib/internal/Magento/Framework/",
            "Magento\Setup\": "setup/src/Magento/Setup/",
            "Magento\": "app/code/Magento/",
            "Zend\Mvc\Controller\": "setup/src/Zend/Mvc/Controller/"
        },
        "psr-0": {
            "": (
                "app/code/",
                "generated/code/"
            )
        },
        "files": (
            "app/etc/NonComposerComponentRegistration.php"
        ),
        "exclude-from-classmap": (
            "**/dev/**",
            "**/update/**",
            "**/Test/**"
        )
    },
    "autoload-dev": {
        "psr-4": {
            "Magento\Sniffs\": "dev/tests/static/framework/Magento/Sniffs/",
            "Magento\Tools\": "dev/tools/Magento/Tools/",
            "Magento\Tools\Sanity\": "dev/build/publication/sanity/Magento/Tools/Sanity/",
            "Magento\TestFramework\Inspection\": "dev/tests/static/framework/Magento/TestFramework/Inspection/",
            "Magento\TestFramework\Utility\": "dev/tests/static/framework/Magento/TestFramework/Utility/"
        }
    },
    "version": "2.4.1",
    "minimum-stability": "stable",
    "repositories": {
        "0": {
            "type": "composer",
            "url": "https://repo.magento.com/"
        },
        "magento": {
            "type": "composer",
            "url": "https://repo.magento.com"
        },
        "data-migration-tool": {
            "type": "git",
            "url": "https://github.com/magento/data-migration-tool"
        }
    },
    "extra": {
        "magento-force": "override"
    }
}

spells – Can creatures teleport through Prismatic effects?

Yes, this works.

Dimension Door and (Greater) Teleport work a bit differently, but there is nothing preventing their use to travel around Prismatic Wall or Sphere.

Dimension Door says:

You always arrive at exactly the spot desired – whether by simply visualizing the area or by stating direction.

(Greater) Teleport says:

This spell instantly transports you to a designated destination, which may be as distant as 100 miles per caster level.1

Neither of these spells would require you to interact with the Prismatic obstruction in any way.


1 (Greater) Teleport actually says: “This spell functions like teleport, except that there is no range limit”.

What is the major effects of merging two major websites ?

Hello Everyone,

I need your help in this website related problem. I have 2 major websites, I want to merge it, so how can I do that?

dnd 5e – What spells or other effects cause a creature to make a saving throw to avoid being knocked out?

I saw that a hydra has “advantage on saving throws against being… knocked unconscious” and was curious as to what spells or effects would cause such a thing to happen. The only effect that came to mind is the sleep spell, which operates on hit points rather than a saving throw. What else can knock a creature unconscious?

dnd 5e – How can I design a magical weapon that grants an advantage against fire-base creatures without using water and choking effects?

The party I am DM’ing is going for an adventure to the Elemental Plane of Fire. I want to design a magical weapon that can grant an advantage against fire-based creatures. I see that Fire Elementals have Water Susceptibility (Cold Damage) but I have already house-ruled that elemental planes can not include magical effects of elements from other elemental planes, but just the spells that have elements of the current plane can be cast (as the plane purely consists of element of itself). For example, in the Elemental Plane of Air, not only Earth-based spells but all the spells are impeded, except air-based ones.

After I realized that I can’t use a magical weapon that has cold damage due to my house-rule, I wanted to give the weapon a “heavy smoke” effect to choke the fire, as I thought that fire can not live without oxygen. But this option conflicts with my house-rule, also I saw that the fire-based creatures any other fire source in the Elemental Plane of Fire don’t need air to live.

Now I have no idea how can I design a magical weapon that gives an advantage against fire-based creatures without cold damage and choking the fire via leaving without oxygen is not an option. I can not cancel my house-ruling because of the sake of my setting. I am open to any house ruling ideas beside the official ruling.

TLDR: as in title, how can I design a magical weapon that grants an advantage against fire-base creatures without using water and choking effects?

If the question shows up to be opinion-based, please accept my apologies.

javascript – Loading sound effects into an array

I’m loading my game’s sound effects into an array to easily pick a random one and play it. Previously, I used a switch statement to select a random sound but it looks less verbose to just pick an array key.

Is it inefficient to use an array to store and play my sound effects? Is there a better way to do this or any improvements I can make to my implementation?

let sounds = ();

function loadSounds() {
  const sources = ('sound1.ogg', 'sound2.ogg', 'sound3.ogg', 'sound4.ogg', 'sound5.ogg', 'sound6.ogg');
    
  for (let i = 0; i < sources.length; i++) {
      sounds(i) = new Audio(sources(i));
  }
}

function playRandomSound() {
    const randomNumber = Math.floor(Math.random() * 6);
    
    sounds(randomNumber).play();
}

Are there negative performance effects when collecting performance data in IIS?

I’m using Windows Server 2019 with IIS version 10.0.17763.1, where I count the incoming GET requests to my website using the Performance monitor. As sample interval I have chosen 15 seconds. Now I want to know whether there are any negative performance effects on my website if I run this monitoring over days, weeks or even months.

dnd 5e – Are there any attacks or effects that reduce max HP to 0 without stating what happens?

Jeremy Crawford’s 2017 tweet

This question regarding “death by leveling” was inspired by Jeremy Crawford’s tweet that you could take a hit to your Max HP when leveling up.

The fact that you’re unlikely to take such a hit unless your constitution score is very low means you’re likely to have a low Max HP to start with, and having it drop to 0 when leveling up becomes a real possibility if you roll for it.

For Example:

Jeremiah, a Sorcerer, rolled so many 3s at character creation that he decided to put one into Constitution. At level one, that’s 6 + (-4) for a Max HP of 2.

If he doesn’t roll for Max HP gains when he levels up, 4 – 4 will never give any net gains. If he chooses to gamble for an extra point or two, however, he could drop to 0 at the very first level!

This is the most extreme example of this effect I’m aware of RAW, but the same basic effect is possible with a constitution score of 4 or 5 too. In fact, any Constitution score below 8 could leave you with 0 Max HP with enough bad rolls in a row when leveling up. Start with 6-2=4 Max, roll 4 1s, there you are.

The question you linked was asked because this didn’t seem to be directly addressed in the rules. However…

2018 Errata

In 2018 the Wizards of the Coast official Player’s Handbook Errata adjusted the wording regarding leveling up on p.15 of the PHB to read:

Each time you gain a level, you gain 1 additional Hit Die. Roll that Hit Die, add your Constitution modifier to the roll, and add the total (minimum of 1) to your hit point maximum. – PHB p.15 with errata

I’d consider that where there are two official rulings that definitely contradict one another, the later ruling would supersede the earlier one. This means that Jeremiah can no longer lose hitpoints when he levels up.

An interesting follow on effect: It seems to me that the text regarding taking the fixed average (instead of rolling your hit die) that completes that paragraph does not change the “minimum of 1” that is applied to the total:

Alternatively, you can use the fixed value shown in your class entry, which is the average result of the die roll (rounded up) – PHB p.15

So there’s not even that way to get a zero gain, but rolling, for Jeremiah, which used to carry the risk of death, now cannot be worse than taking the average – rolling: 1d6 + (-4) (minimum of 1) yields 1 or 2, but the average: 4 + (-4) (minimum of 1) always yields 1. Not a big difference, but it still means that what used to be a risky move becomes the obvious best and safest!

summoning – Do Summoned creatures trigger “on death” effects?

Taking Leshies as an example, they can be summoned with the Summon Plant or Fungus spell. They also have the Verdant Burst ability (abbreviated):

When a leaf leshy dies, a burst of primal energy explodes from its body

The entry is slightly different for each form of Leshy, but they all give an instantaneous healing effect to nearby plant creatures, and most cause the area to become difficult terrain for 24 hours or permanently.

However, they also gain the Summoned trait, which states:

They are automatically banished if reduced to 0 Hit Points or if the spell that called them ends.

Which of these triggers first? What if the leshy is killed by massive damage? Is there a distinction between the instantaneous healing and the lingering difficult terrain (if the healing occurs, is the terrain then banished with the Leshy)?

damage – Does the pressurized lung augmentation in Starfinder protect a character from the effects of sudden decompression?

According to the Starfinder rules, the pressurized lungs biotech augmentation has the following effect:

“You can hold your breath for up to 1 hour and are immune to the normal environmental effects of being in a vacuum.”

The rules on vacuums are as follows:

Vacuum

The void of space is effectively empty of matter, and this vacuum is perhaps the greatest danger of outer space. A creature introduced to a vacuum immediately begins to suffocate (see Suffocation and Drowning) and takes 1d6 bludgeoning damage per round (no saving throw). Because a vacuum has no effective temperature, the void of outer space presents no dangers from cold temperatures. A creature retains its body heat for several hours in a vacuum. Sound doesn’t travel in a vacuum.

Decompression occurs when a creature suddenly transitions from a pressurized environment to a vacuum, such as by being flung out of an airlock or being inside a sealed structure that becomes heavily damaged. Such a creature takes 3d6 bludgeoning damage (no saving throw) in addition to any suffocation damage.

Most creatures travel the vacuum of space in a starship.

Do the 3d6 points suffered from sudden decompression (discussed in the second paragraph under Vacuum) count as the “normal environmental effects of being in a vacuum”? Or do normal environmental effects only pertain to the suffoction and 1d6 per round?


Here is an article about the real science.

It is logical for lungs that hold an hour’s worth of air to protect you from suffocation in a vacuum, and they theoretically could stop your lungs from bursting (another danger in a vacuum). I don’t see how they would prevent your blood from vaporizing and stopping circulation. Scientifically, even with pressurized lungs, the vacuum should damage/kill you. Granted, it is a fantasy game.