124 lines
5.2 KiB
JavaScript
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
|
|
})
|
|
})
|