(function () {
// 1) Basic bot filter (extend if you like)
function isBot() {
return /(bot|crawl|spider|google|bing|slurp|yandex|facebook|linkedin|pinterest|preview|whatsapp|discord|telegram|headless|puppeteer)/i
.test(navigator.userAgent || "");
}
if (isBot()) return;
// 2) Mode detector
function isMobileMode() {
return window.matchMedia("(max-width: 767px)").matches ||
/Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent || "");
}
// 3) Your ad configs (swap keys/sizes to match your network units)
const AD = {
mobile: { key: "aa6d52a6037d0558c2a19dc52b6aa824", width: 320, height: 50 }, // 320x50
desktop: { key: "a49752dcde88f4fde5987d25efbb7168", width: 468, height: 60 } // 468x60
};
// 4) Create container if it doesn't exist
function ensureContainer() {
let container = document.getElementById("ad-container");
if (!container) {
container = document.createElement("div");
container.id = "ad-container";
container.style.display = "none";
document.body.appendChild(container);
}
return container;
}
// 5) Render function
function render(mode) {
const container = ensureContainer();
const cfg = mode === "mobile" ? AD.mobile : AD.desktop;
// Set global atOptions for ad network
window.atOptions = {
key: cfg.key,
format: "iframe",
height: cfg.height,
width: cfg.width,
params: {}
};
// Clear previous ad/script then inject
container.innerHTML = "";
container.style.display = "block";
const s = document.createElement("script");
s.src = `//selfportraitproved.com/${cfg.key}/invoke.js`;
s.async = true;
container.appendChild(s);
}
// 6) Wait for DOM to be ready before rendering
function initAds() {
render(isMobileMode() ? "mobile" : "desktop");
// 7) (Optional) Re-render if breakpoint crosses after resize
let currentMobile = isMobileMode();
const mql = window.matchMedia("(max-width: 767px)");
if (mql.addEventListener) {
mql.addEventListener("change", (e) => {
const nowMobile = e.matches;
if (nowMobile !== currentMobile) {
currentMobile = nowMobile;
render(currentMobile ? "mobile" : "desktop");
}
});
} else if (mql.addListener) { // older browsers
mql.addListener((e) => {
const nowMobile = e.matches;
if (nowMobile !== currentMobile) {
currentMobile = nowMobile;
render(currentMobile ? "mobile" : "desktop");
}
});
}
}
// 8) Execute when DOM is ready
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", initAds);
} else {
initAds();
}
})();
Minecraft has steadily been adding new mobs to the game with almost every new update. One of its notable newer additions is the aquatic creature known as the axolotl. These creatures move quickly and can be hard to find, so if you hope to find and tame one, then you need to make sure you are prepared.
To find an axolotl, you should first take to searching for an azalea tree so you can then follow it down to its roots to a lush cave. When they were first introduced into Minecraft, axolotls could be found in many different locations in various bodies of water. But as of the 1.18 update, lush caves are now the only place where axolotls can be found.
Unlike most other mobs in the game, you do not need to feed an axolotl anything to tame it. Instead, all you have to do is pick it up using a water bucket and the cute little creature is yours to keep. You can place it back down anywhere by replacing the water bucket containing the axolotl the same way that you picked it up.
If you are looking to create your own personal army of axolotls, you can breed two adult axolotls by feeding them with a bucket of tropical fish. Just make sure you keep them near water, as they need to return to it frequently to survive.
👉 For more insights, check out this resource.
Whether you want an axolotl as a loyal pet to keep you company or as a fierce sidekick to help you fend off those pesky drowned, these colorful creatures are sure to delight and help as your faithful companions.
👉 Discover more in this in-depth guide.