create-the-brass-oncerto/kubejs/server_scripts/add/tools/tool.js

180 lines
7.3 KiB
JavaScript

BlockEvents.leftClicked("#dut_create:breakable", event => {
if (event.item.damageValue < 32000 && event.item.id == "kubejs:steel_impact_drill" && event.block.hasTag("dut_create:breakable")) {
event.item.damageValue++
event.level.destroyBlock(event.block.pos, true, event.player)
}
})
ItemEvents.rightClicked("kubejs:tin_hard_disk", event => {
if (event.item.damageValue > 0 && event.player.getOffHandItem().id == "create:clipboard") {
event.item.damageValue -= 12
event.player.addItemCooldown("kubejs:tin_hard_disk",5)
}
})
ItemEvents.rightClicked("kubejs:steel_power_sword", event => {
if (event.item.damageValue < 80000) {
event.item.damageValue += 5
event.player.addItemCooldown("kubejs:steel_power_sword", 200)
event.player.runCommandSilent('/execute as ' + event.player.getUsername() + ' run particle minecraft:electric_spark ~ ~1.0 ~ 0.25 0.8 0.25 0.1 32')
event.player.runCommandSilent('/execute as ' + event.player.getUsername() + ' run function dut:particle/scan_set')
event.player.runCommandSilent('/execute as ' + event.player.getUsername() + ' run effect give @s minecraft:absorption 12 14 true')
event.player.runCommandSilent('/execute as ' + event.player.getUsername() + ' run effect give @s minecraft:speed 12 2 true')
event.player.runCommandSilent('/execute as ' + event.player.getUsername() + ' run playsound createaddition:electric_charge player @a[distance=..16] ~ ~ ~ 0.6 1')
}
})
ItemEvents.rightClicked("kubejs:rocket_sword", event => {
if (event.item.damageValue < 80000) {
event.item.damageValue += 3
const Motion = event.player.getViewVector(1)
event.player.hurtMarked = true
event.player.deltaMovement = Motion
event.player.runCommandSilent('/execute as ' + event.player.getUsername() + ' run particle createbigcannons:shrapnel_cloud ^ ^1 ^-0.1 0 0 0 1.2 5')
event.player.runCommandSilent('/execute as ' + event.player.getUsername() + ' run effect give @s minecraft:absorption 12 4 true')
event.player.runCommandSilent('/execute as ' + event.player.getUsername() + ' run effect give @s minecraft:speed 12 2 true')
event.player.runCommandSilent('/execute as ' + event.player.getUsername() + ' run effect give @s minecraft:slow_falling 3 0 true')
event.player.runCommandSilent('/execute as ' + event.player.getUsername() + ' run playsound create:steam player @a[distance=..16] ~ ~ ~ 0.4')
}
})
ItemEvents.entityInteracted("kubejs:mycetozoan", event => {
if (event.target.type == "minecraft:slime" || event.target.type == "minecraft:magma_cube") {
let size = event.target.size
if (size < 9) {
event.item.count -= 1
event.target.mergeNbt({ "Size": size })
}
}
})
//以下代码修改自JSI Production Team
const $OreVeinGenerator = Java.loadClass("com.tom.createores.OreVeinGenerator")
const $OreVeinAtlasItem = Java.loadClass("com.tom.createores.item.OreVeinAtlasItem")
ItemEvents.rightClicked("kubejs:scanner", e => {
const { player, level, server } = e
if (player.cooldowns.isOnCooldown(e.item.item))
return
const MAX_SEARCH_DIST_IN_BLOCK = 16 // 最大搜索距离
if (e.item.damageValue >= 16) {
return
}
let excludedVein = []
player.inventory.allItems.forEach(item => {
if (item.id == "createoreexcavation:vein_atlas" && item.nbt != null) {
let exclude = item.nbt[$OreVeinAtlasItem.EXCLUDE]
exclude.forEach(tag => {
excludedVein.push(tag.getAsString())
})
}
})
let blockPosition = player.blockPosition()
let { first: pos, second: info } = $OreVeinGenerator.getPicker(level).locate(
blockPosition,
level,
MAX_SEARCH_DIST_IN_BLOCK,
(vein) => excludedVein.indexOf(vein.getId()) == -1
)
let distance = Math.floor(Math.sqrt(
Math.pow(blockPosition.x - pos.x, 2)
+ Math.pow(blockPosition.z - pos.z, 2)
))
const LocalTime = Math.floor((level.time % 24000) * 3.6)
player.tell(Text.translate("kubejs.message.satellite").color(Color.YELLOW).append(Math.floor((LocalTime / 3600)) + ':' + Math.floor((LocalTime / 60)) % 60 + ':' + Math.floor(LocalTime % 60)))
player.tell(Text.translate("kubejs.message.nearest_vein").color(Color.GREEN).append(info.getName().color(Color.YELLOW)))
player.tell(Text.translate("kubejs.message.pos").color(Color.GREEN).append(pos.x + ' ' + pos.z))
player.tell(Text.translate("kubejs.message.distance").color(Color.GREEN).append(distance))
e.item.damageValue++
player.addItemCooldown(e.item.item, 60)
server.runCommandSilent('/execute as ' + player.getUsername() + ' at @s run function dut:particle/scan_set')
server.runCommandSilent('/execute as ' + player.getUsername() + ' at @s run playsound minecraft:block.note_block.bell player @a[distance=..16] ~ ~ ~ 1 0.2')
})
//以上代码修改自JSI Production Team
ServerEvents.recipes(event => {
event.custom({
"type": "vintageimprovements:pressurizing",
"heatRequirement": "superheated",
"secondaryFluidInput": 0,
"ingredients": [
{ "fluid": "kubejs:aluminum", "amount": 250 },
{ "fluid": "createbigcannons:molten_steel", "amount": 1000 },
{ "fluid": "kubejs:slime_colloid", "amount": 250 },
{ "item": "createloveandwar:tungsten" },
{ "item": "kubejs:blaze_chlamydia" }
],
"results": [{ "item": "createloveandwar:steel_ingot" }],
"processingTime": 600
}).id("dut_create:tools/plastic_steel")
event.custom({
"type": "create:sequenced_assembly",
"ingredient": { "item": "createloveandwar:steel_ingot" },
"loops": 1,
"results": [
{ "item": "dreadsteel:dreadsteel_ingot", "chance": 0.05 },
{ "item": "createloveandwar:steel_ingot", "chance": 0.95 }
],
"sequence": [
{
"type": "create:filling",
"ingredients": [{ "item": "createloveandwar:steel_ingot" },
{ "amount": 500, "fluid": "kubejs:chromatic_waste" }],
"results": [{ "item": "createloveandwar:steel_ingot" }]
}
],
"transitionalItem": { "item": "createloveandwar:steel_ingot" }
}).id("dut_create:tools/dreadsteel_ingot")
//动力剑
event.custom({
"type": "create:mechanical_crafting",
"acceptMirrored": true,
"key": {
"B": { "item": "createloveandwar:steel_ingot" },
"A": { "item": "create_optical:rose_quartz_catalyst_coil" },
"S": { "item": "kubejs:light_composite_plate" },
"C": { "item": "kubejs:resonant_bacteria" },
"D": { "item": "kubejs:rocket_gyro" }
},
"pattern": [
"ABA",
"ABA",
"ABA",
"ACA",
"SDS",
],
"result": { "item": "kubejs:steel_power_sword" }
}
).id("dut_create:steel_power_sword")
//冲击钻
event.custom({
"type": "create:mechanical_crafting",
"acceptMirrored": true,
"key": {
"A": { "item": "createloveandwar:steel_ingot" },
"B": { "item": "createloveandwar:steel_sheet" },
"C": { "item": "kubejs:speed_module_2" },
"D": { "item": "kubejs:differential" },
"E": { "item": "kubejs:radiator" }
},
"pattern": [
" BBE",
"AAACD",
" BBB "
],
"result": { "item": "kubejs:steel_impact_drill" }
}
).id("dut_create:steel_impact_drill")
//火箭剑
event.custom({
"type": "create:mechanical_crafting",
"acceptMirrored": true,
"key": {
"A": { "item": "kubejs:carrier_rocket" },
"B": { "item": "kubejs:steel_power_sword" },
},
"pattern": [
"A",
"B"
],
"result": { "item": "kubejs:rocket_sword" }
}
).id("dut_create:rocket_sword")
})