Files
custom_ore_gem/kubejs_ores_command.js
T

124 lines
5.2 KiB
JavaScript

// Custom Ore Gem - Commande pour voir les minerais du biome actuel
// Placez ce fichier dans: kubejs/server_scripts/
// Commande: /ores
ServerEvents.commandRegistry(event => {
const oresByBiome = {
// Biomes froids (taiga, snowy_*, frozen_*, ice_spikes, grove, cold_ocean)
cold: {
biomes: ['minecraft:taiga', 'minecraft:frozen_ocean', 'minecraft:frozen_river',
'minecraft:snowy_plains', 'minecraft:snowy_beach', 'minecraft:snowy_taiga',
'minecraft:old_growth_pine_taiga', 'minecraft:grove', 'minecraft:snowy_slopes',
'minecraft:jagged_peaks', 'minecraft:frozen_peaks', 'minecraft:cold_ocean',
'minecraft:deep_cold_ocean', 'minecraft:deep_frozen_ocean', 'minecraft:ice_spikes'],
ores: ['Lapis (stone)', 'Lapis (deepslate)', 'Diamant Concentre']
},
// Biomes chauds (desert, jungle, savanna, badlands)
hot: {
biomes: ['minecraft:desert', 'minecraft:jungle', 'minecraft:sparse_jungle',
'minecraft:savanna', 'minecraft:savanna_plateau', 'minecraft:stony_peaks',
'minecraft:warm_ocean', 'minecraft:windswept_savanna', 'minecraft:eroded_badlands',
'minecraft:bamboo_jungle', 'minecraft:mangrove_swamp', 'minecraft:badlands',
'minecraft:wooded_badlands'],
ores: ['Or Pur (stone)', 'Or Pur (deepslate)', 'Redstone (stone)',
'Redstone (deepslate)', 'Cuivre (haut)', 'Cuivre (bas)']
},
// Biomes montagnes (peaks, slopes, meadow)
mountain: {
biomes: ['minecraft:jagged_peaks', 'minecraft:frozen_peaks', 'minecraft:stony_peaks',
'minecraft:savanna_plateau', 'minecraft:wooded_badlands', 'minecraft:meadow',
'minecraft:grove', 'minecraft:snowy_slopes', 'minecraft:windswept_hills'],
ores: ['Emeraude (haute altitude)']
},
// Biomes tempérés (plains, forest, swamp, coniferous)
tempered: {
biomes: ['minecraft:plains', 'minecraft:snowy_plains', 'minecraft:meadow',
'minecraft:sunflower_plains', 'minecraft:swamp', 'minecraft:mangrove_swamp',
'minecraft:taiga', 'minecraft:snowy_taiga', 'minecraft:old_growth_pine_taiga',
'minecraft:grove', 'minecraft:cherry_grove', 'minecraft:windswept_hills',
'minecraft:windswept_forest', 'minecraft:beach', 'minecraft:river', 'minecraft:stony_shore',
'minecraft:ocean', 'minecraft:lukewarm_ocean', 'minecraft:deep_ocean',
'minecraft:deep_lukewarm_ocean', 'minecraft:dripstone_caves', 'minecraft:lush_caves'],
ores: ['Charbon Concentre', 'Fer (stone)', 'Fer (deepslate)']
},
// Biomes rares (mushroom_fields, flower_forest, ice_spikes, etc.)
rare: {
biomes: ['minecraft:mushroom_fields', 'minecraft:sparse_jungle', 'minecraft:savanna_plateau',
'minecraft:sunflower_plains', 'minecraft:windswept_gravelly_hills',
'minecraft:flower_forest', 'minecraft:ice_spikes', 'minecraft:old_growth_birch_forest',
'minecraft:old_growth_spruce_taiga', 'minecraft:windswept_savanna',
'minecraft:eroded_badlands', 'minecraft:bamboo_jungle', 'minecraft:deep_dark',
'minecraft:dark_forest'],
ores: ['Emeraude (basse altitude)']
}
}
const oresEverywhere = ['Diamant Shard (deepslate)', 'Bloc Diamant Shard']
// Enregistrement de la commande /ores
const oresCmd = event.register('ores')
oresCmd.executes(function (ctx) {
const player = ctx.source.player
if (!player) {
ctx.source.sendFailure('Cette commande ne peut etre utilisee que par un joueur')
return 1
}
const level = player.getLevel()
const pos = player.blockPosition()
const biomeHolder = level.getBiome(pos)
if (!biomeHolder) {
ctx.source.sendFailure('Impossible de determiner le biome')
return 1
}
const biomeKey = biomeHolder.unwrapKey().toString()
const biomeName = biomeHolder.value().getName().getString()
const biomeId = biomeKey.replace('minecraft:', '').replace(/^.*:/, '')
// Trouver les minerais pour ce biome
const foundOres = Java.to(['empty'], 'java.util.Set')
const foundCategories = []
for (const category in oresByBiome) {
const data = oresByBiome[category]
if (data.biomes.indexOf(biomeKey) >= 0 || data.biomes.indexOf('minecraft:' + biomeId) >= 0) {
for (let i = 0; i < data.ores.length; i++) {
foundOres.add(data.ores[i])
}
foundCategories.push(category)
}
}
// Ajouter les minerais presents partout
for (let i = 0; i < oresEverywhere.length; i++) {
foundOres.add(oresEverywhere[i])
}
// Afficher le resultat
ctx.source.sendSuccess('=== Minerais dans: ' + biomeName + ' ===')
ctx.source.sendSuccess('Biome ID: ' + biomeId)
ctx.source.sendSuccess('Tags: ' + (foundCategories.join(', ') || 'standard'))
if (foundOres.size() > 0) {
ctx.source.sendSuccess('Minerais trouvables:')
const iterator = foundOres.iterator()
while (iterator.hasNext()) {
ctx.source.sendSuccess(' * ' + iterator.next())
}
} else {
ctx.source.sendSuccess('Aucun minerai specifique a ce biome')
}
return 1
})
// Alias /ore
const oreCmd = event.register('ore')
oreCmd.executes(function (ctx) {
ctx.source.server.commands.executeCommand(ctx.source.source, 'ores')
return 1
})
})