Pala 0.1.0: portage contenu (116 items, 38 blocs, 95 recipes, 7 filons) + atlas optionalon

This commit is contained in:
kisakay
2026-10-18 21:18:20 +02:00
parent 3b5e8e7a13
commit 5782acc08a
25 changed files with 518 additions and 73 deletions
+13
View File
@@ -421,6 +421,19 @@
"MD5": "b15fd6703384c58c19d30624923460a5"
}
},
{
"id": "fr.surviepote:pala:0.1.0@jar",
"name": "Pala (SurviePote)",
"type": "FabricMod",
"artifact": {
"size": 1496354,
"url": "https://git.kisakay.com/k/mc/raw/branch/main/atlas/root/servers/SurviePote-26.3/fabricmods/optionalon/pala-0.1.0.jar",
"MD5": "d06d77636129984b2f7614466273452f"
},
"required": {
"value": false
}
},
{
"id": "net.lopymine.patpat.entrypoint.impl:patpat:1.3.2+26.3+fabric@jar",
"name": "PatPat",
+1 -2
View File
@@ -40,8 +40,7 @@
<div id="loadingContainer">
<div id="loadingContent">
<div id="loadSpinnerContainer">
<img id="loadCenterImage" src="assets/images/LoadingSeal.png">
<img id="loadSpinnerImage" class="rotating" src="assets/images/LoadingText.png">
<img id="loadCenterImage" src="assets/images/SealCircle.png">
</div>
</div>
</div>
+1 -9
View File
@@ -3940,18 +3940,10 @@ input:checked + .toggleSwitchSlider:before {
/* Stationary image for the spinner. */
#loadCenterImage {
position: absolute;
width: 277px;
width: 200px;
height: auto;
}
/* Rotating image for the spinner. */
#loadSpinnerImage {
width: 280px;
height: auto;
z-index: 400;
}
/* Rotating animation for the spinner. */
@keyframes rotating {
from {
@@ -1,6 +1,5 @@
const loginOptionsCancelContainer = document.getElementById('loginOptionCancelContainer')
const loginOptionMicrosoft = document.getElementById('loginOptionMicrosoft')
const loginOptionMojang = document.getElementById('loginOptionMojang')
const loginOptionsCancelButton = document.getElementById('loginOptionCancelButton')
let loginOptionsCancellable = false
@@ -28,20 +27,9 @@ loginOptionMicrosoft.onclick = (e) => {
})
}
loginOptionMojang.onclick = (e) => {
switchView(getCurrentView(), VIEWS.login, 500, 500, () => {
loginViewOnSuccess = loginOptionsViewOnLoginSuccess
loginViewOnCancel = loginOptionsViewOnLoginCancel
loginCancelEnabled(true)
})
}
loginOptionsCancelButton.onclick = (e) => {
switchView(getCurrentView(), loginOptionsViewOnCancel, 500, 500, () => {
// Clear login values (Mojang login)
// No cleanup needed for Microsoft.
loginUsername.value = ''
loginPassword.value = ''
if(loginOptionsViewCancelHandler != null){
loginOptionsViewCancelHandler()
loginOptionsViewCancelHandler = null
+5 -16
View File
@@ -342,15 +342,6 @@ settingsNavDone.onclick = () => {
const msftLoginLogger = LoggerUtil.getLogger('Microsoft Login')
const msftLogoutLogger = LoggerUtil.getLogger('Microsoft Logout')
// Bind the add mojang account button.
document.getElementById('settingsAddMojangAccount').onclick = (e) => {
switchView(getCurrentView(), VIEWS.login, 500, 500, () => {
loginViewOnCancel = VIEWS.settings
loginViewOnSuccess = VIEWS.settings
loginCancelEnabled(true)
})
}
// Bind the add microsoft account button.
document.getElementById('settingsAddMicrosoftAccount').onclick = (e) => {
switchView(getCurrentView(), VIEWS.waiting, 500, 500, () => {
@@ -619,7 +610,6 @@ function refreshAuthAccountSelected(uuid){
}
const settingsCurrentMicrosoftAccounts = document.getElementById('settingsCurrentMicrosoftAccounts')
const settingsCurrentMojangAccounts = document.getElementById('settingsCurrentMojangAccounts')
/**
* Add auth account elements for each one stored in the authentication database.
@@ -633,11 +623,15 @@ function populateAuthAccounts(){
const selectedUUID = ConfigManager.getSelectedAccount().uuid
let microsoftAuthAccountStr = ''
let mojangAuthAccountStr = ''
authKeys.forEach((val) => {
const acc = authAccounts[val]
// Les vieux comptes Mojang sont ignorés (auth Mojang supprimée).
if(acc.type !== 'microsoft') {
return
}
const accHtml = `<div class="settingsAuthAccount" uuid="${acc.uuid}">
<div class="settingsAuthAccountLeft">
<img class="settingsAuthAccountImage" alt="${acc.displayName}" src="https://mc-heads.net/body/${acc.uuid}/60">
@@ -662,16 +656,11 @@ function populateAuthAccounts(){
</div>
</div>`
if(acc.type === 'microsoft') {
microsoftAuthAccountStr += accHtml
} else {
mojangAuthAccountStr += accHtml
}
})
settingsCurrentMicrosoftAccounts.innerHTML = microsoftAuthAccountStr
settingsCurrentMojangAccounts.innerHTML = mojangAuthAccountStr
}
/**
+1 -3
View File
@@ -97,9 +97,7 @@ async function showMainUI(data){
}
setTimeout(() => {
$('#loadingContainer').fadeOut(500, () => {
$('#loadSpinnerImage').removeClass('rotating')
})
$('#loadingContainer').fadeOut(500)
}, 250)
}, 750)
-10
View File
@@ -14,16 +14,6 @@
<span><%- lang('loginOptions.loginWithMicrosoft') %></span>
</button>
</div>
<div class="loginOptionButtonContainer">
<button id="loginOptionMojang" class="loginOptionButton">
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 9.677 9.667">
<path d="M-26.332-12.098h2.715c-1.357.18-2.574 1.23-2.715 2.633z" fill="#fff" />
<path d="M2.598.022h7.07L9.665 7c-.003 1.334-1.113 2.46-2.402 2.654H0V2.542C.134 1.2 1.3.195 2.598.022z" fill="#db2331" />
<path d="M1.54 2.844c.314-.76 1.31-.46 1.954-.528.785-.083 1.503.272 2.1.758l.164-.9c.327.345.587.756.964 1.052.28.254.655-.342.86-.013.42.864.408 1.86.54 2.795l-.788-.373C6.9 4.17 5.126 3.052 3.656 3.685c-1.294.592-1.156 2.65.06 3.255 1.354.703 2.953.51 4.405.292-.07.42-.34.87-.834.816l-4.95.002c-.5.055-.886-.413-.838-.89l.04-4.315z" fill="#fff" />
</svg>
<span><%- lang('loginOptions.loginWithMojang') %></span>
</button>
</div>
</div>
<div id="loginOptionCancelContainer" style="display: none;">
<button id="loginOptionCancelButton"><%- lang('loginOptions.cancelButton') %></button>
-20
View File
@@ -48,26 +48,6 @@
<!-- Microsoft auth accounts populated here. -->
</div>
</div>
<div class="settingsAuthAccountTypeContainer">
<div class="settingsAuthAccountTypeHeader">
<div class="settingsAuthAccountTypeHeaderLeft">
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 9.677 9.667">
<path d="M-26.332-12.098h2.715c-1.357.18-2.574 1.23-2.715 2.633z" fill="#fff" />
<path d="M2.598.022h7.07L9.665 7c-.003 1.334-1.113 2.46-2.402 2.654H0V2.542C.134 1.2 1.3.195 2.598.022z" fill="#db2331" />
<path d="M1.54 2.844c.314-.76 1.31-.46 1.954-.528.785-.083 1.503.272 2.1.758l.164-.9c.327.345.587.756.964 1.052.28.254.655-.342.86-.013.42.864.408 1.86.54 2.795l-.788-.373C6.9 4.17 5.126 3.052 3.656 3.685c-1.294.592-1.156 2.65.06 3.255 1.354.703 2.953.51 4.405.292-.07.42-.34.87-.834.816l-4.95.002c-.5.055-.886-.413-.838-.89l.04-4.315z" fill="#fff" />
</svg>
<span><%- lang('settings.mojangAccount') %></span>
</div>
<div class="settingsAuthAccountTypeHeaderRight">
<button class="settingsAddAuthAccount" id="settingsAddMojangAccount"><%- lang('settings.addMojangAccount') %></button>
</div>
</div>
<div class="settingsCurrentAccounts" id="settingsCurrentMojangAccounts">
<!-- Mojang auth accounts populated here. -->
</div>
</div>
</div>
<div id="settingsTabMinecraft" class="settingsTab" style="display: none;">
<div class="settingsTabHeader">
@@ -10,5 +10,6 @@ public final class PalaRegistries {
PalaItems.register();
PalaBlocks.register();
PalaTabs.register();
PalaWorldgen.register();
}
}
@@ -0,0 +1,54 @@
package fr.surviepote.pala;
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
import net.fabricmc.fabric.api.biome.v1.BiomeSelectors;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.Identifier;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.level.levelgen.GenerationStep;
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
// Worldgen des minerais Pala (MC 26.3).
//
// Approche data-driven : les filons sont décrits en JSON datapack
// (data/pala/worldgen/feature/*.json + placed_feature/*.json) et cette classe
// ne fait qu'injecter les placed features dans les biomes via
// BiomeModifications.addFeature. C'est l'approche robuste en 26.3 car :
// - ConfiguredFeature n'existe plus (vérifié au bytecode : Feature est une
// interface, OreFeature prend List<BlockReplacement>) ;
// - FEATURE/PLACED_FEATURE sont des registres datapack dynamiques, pas des
// registres statiques : tout-en-code via Registry.register est impossible.
// - Signatures vérifiées au javap contre 26.3.jar :
// BiomeModifications.addFeature(Predicate<BiomeSelectionContext>,
// GenerationStep$Decoration, ResourceKey<PlacedFeature>),
// BiomeSelectors.foundInOverworld/foundInTheEnd,
// GenerationStep$Decoration.UNDERGROUND_ORES,
// ResourceKey.create(ResourceKey<Registry<T>>, Identifier),
// Identifier.fromNamespaceAndPath(String, String).
public final class PalaWorldgen {
private PalaWorldgen() {
}
private static ResourceKey<PlacedFeature> key(String path) {
return ResourceKey.create(Registries.PLACED_FEATURE, Identifier.fromNamespaceAndPath("pala", path));
}
private static void addOverworld(String path) {
BiomeModifications.addFeature(BiomeSelectors.foundInOverworld(),
GenerationStep.Decoration.UNDERGROUND_ORES, key(path));
}
public static void register() {
addOverworld("amethyst_ore");
addOverworld("findium_ore");
addOverworld("kisakay_ore");
addOverworld("paladium_ore");
addOverworld("paladium_green_ore");
// Titane : Surface + End (spawnWorldTypes ["End","Surface"]).
BiomeModifications.addFeature(
BiomeSelectors.foundInOverworld().or(BiomeSelectors.foundInTheEnd()),
GenerationStep.Decoration.UNDERGROUND_ORES, key("titane_ore"));
addOverworld("trixium_ore");
}
}
@@ -0,0 +1,35 @@
{
"type": "minecraft:ore",
"discard_chance_on_air_exposure": 0.0,
"size": 5,
"targets": [
{
"state": "pala:amethyst_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:stone_ore_replaceables"
}
},
{
"state": "pala:amethyst_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:deepslate_ore_replaceables"
}
},
{
"state": "pala:amethyst_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:dirt"
}
},
{
"state": "pala:amethyst_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:gravel"
}
}
]
}
@@ -0,0 +1,35 @@
{
"type": "minecraft:ore",
"discard_chance_on_air_exposure": 0.0,
"size": 3,
"targets": [
{
"state": "pala:findium_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:stone_ore_replaceables"
}
},
{
"state": "pala:findium_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:deepslate_ore_replaceables"
}
},
{
"state": "pala:findium_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:dirt"
}
},
{
"state": "pala:findium_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:gravel"
}
}
]
}
@@ -0,0 +1,35 @@
{
"type": "minecraft:ore",
"discard_chance_on_air_exposure": 0.0,
"size": 1,
"targets": [
{
"state": "pala:kisakay_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:stone_ore_replaceables"
}
},
{
"state": "pala:kisakay_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:deepslate_ore_replaceables"
}
},
{
"state": "pala:kisakay_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:dirt"
}
},
{
"state": "pala:kisakay_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:gravel"
}
}
]
}
@@ -0,0 +1,35 @@
{
"type": "minecraft:ore",
"discard_chance_on_air_exposure": 0.0,
"size": 4,
"targets": [
{
"state": "pala:paladium_green_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:stone_ore_replaceables"
}
},
{
"state": "pala:paladium_green_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:deepslate_ore_replaceables"
}
},
{
"state": "pala:paladium_green_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:dirt"
}
},
{
"state": "pala:paladium_green_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:gravel"
}
}
]
}
@@ -0,0 +1,35 @@
{
"type": "minecraft:ore",
"discard_chance_on_air_exposure": 0.0,
"size": 4,
"targets": [
{
"state": "pala:paladium_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:stone_ore_replaceables"
}
},
{
"state": "pala:paladium_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:deepslate_ore_replaceables"
}
},
{
"state": "pala:paladium_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:dirt"
}
},
{
"state": "pala:paladium_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:gravel"
}
}
]
}
@@ -0,0 +1,42 @@
{
"type": "minecraft:ore",
"discard_chance_on_air_exposure": 0.0,
"size": 4,
"targets": [
{
"state": "pala:titane_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:stone_ore_replaceables"
}
},
{
"state": "pala:titane_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:deepslate_ore_replaceables"
}
},
{
"state": "pala:titane_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:dirt"
}
},
{
"state": "pala:titane_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:gravel"
}
},
{
"state": "pala:titane_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:end_stone"
}
}
]
}
@@ -0,0 +1,35 @@
{
"type": "minecraft:ore",
"discard_chance_on_air_exposure": 0.0,
"size": 8,
"targets": [
{
"state": "pala:trixium_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:stone_ore_replaceables"
}
},
{
"state": "pala:trixium_ore",
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:deepslate_ore_replaceables"
}
},
{
"state": "pala:trixium_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:dirt"
}
},
{
"state": "pala:trixium_ore",
"target": {
"predicate_type": "minecraft:block_match",
"block": "minecraft:gravel"
}
}
]
}
@@ -0,0 +1,27 @@
{
"feature": "pala:amethyst_ore",
"placement": [
{
"type": "minecraft:count",
"count": 5
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:uniform",
"min_inclusive": {
"absolute": 1
},
"max_inclusive": {
"absolute": 25
}
}
},
{
"type": "minecraft:biome"
}
]
}
@@ -0,0 +1,27 @@
{
"feature": "pala:findium_ore",
"placement": [
{
"type": "minecraft:count",
"count": 5
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:uniform",
"min_inclusive": {
"absolute": 1
},
"max_inclusive": {
"absolute": 33
}
}
},
{
"type": "minecraft:biome"
}
]
}
@@ -0,0 +1,27 @@
{
"feature": "pala:kisakay_ore",
"placement": [
{
"type": "minecraft:count",
"count": 2
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:uniform",
"min_inclusive": {
"absolute": 1
},
"max_inclusive": {
"absolute": 16
}
}
},
{
"type": "minecraft:biome"
}
]
}
@@ -0,0 +1,27 @@
{
"feature": "pala:paladium_green_ore",
"placement": [
{
"type": "minecraft:count",
"count": 4
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:uniform",
"min_inclusive": {
"absolute": 1
},
"max_inclusive": {
"absolute": 18
}
}
},
{
"type": "minecraft:biome"
}
]
}
@@ -0,0 +1,27 @@
{
"feature": "pala:paladium_ore",
"placement": [
{
"type": "minecraft:count",
"count": 3
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:uniform",
"min_inclusive": {
"absolute": 1
},
"max_inclusive": {
"absolute": 18
}
}
},
{
"type": "minecraft:biome"
}
]
}
@@ -0,0 +1,27 @@
{
"feature": "pala:titane_ore",
"placement": [
{
"type": "minecraft:count",
"count": 6
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:uniform",
"min_inclusive": {
"absolute": 1
},
"max_inclusive": {
"absolute": 19
}
}
},
{
"type": "minecraft:biome"
}
]
}
@@ -0,0 +1,27 @@
{
"feature": "pala:trixium_ore",
"placement": [
{
"type": "minecraft:count",
"count": 3
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:uniform",
"min_inclusive": {
"absolute": 1
},
"max_inclusive": {
"absolute": 25
}
}
},
{
"type": "minecraft:biome"
}
]
}