779 lines
47 KiB
JavaScript
779 lines
47 KiB
JavaScript
"use strict";
|
|
|
|
// TODO
|
|
TFGServerEvents.dimensionalPowerConsumption(event => {
|
|
event["add(java.lang.String,double)"]("minecraft:overworld", 10000);
|
|
event["add(java.lang.String,double)"]("minecraft:the_nether", 20000);
|
|
event["add(java.lang.String,double)"]("ad_astra:earth_orbit", 20000);
|
|
event["add(java.lang.String,double)"]("ad_astra:moon", 50000);
|
|
event["add(java.lang.String,double)"]("ad_astra:moon_orbit", 50000);
|
|
event["add(java.lang.String,double)"]("ad_astra:mars", 100000);
|
|
event["add(java.lang.String,double)"]("ad_astra:mars_orbit", 100000);
|
|
});
|
|
|
|
//#region Medicine
|
|
|
|
//Pills & Tablets
|
|
const pill_event = [
|
|
'haste',
|
|
'luck',
|
|
'night_vision',
|
|
'poison',
|
|
'regeneration',
|
|
'slowness',
|
|
'speed',
|
|
'water_breathing',
|
|
'weakness',
|
|
];
|
|
|
|
pill_event.forEach(pill_event => {
|
|
|
|
ItemEvents.rightClicked(event => {
|
|
const { item, server, player, player: { x, y, z } } = event
|
|
if (item.id !== `tfg:${pill_event}_pill`) return
|
|
item.count--
|
|
player.addItemCooldown(item, 100)
|
|
server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 480 0 true`)
|
|
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`)
|
|
});
|
|
|
|
ItemEvents.rightClicked(event => {
|
|
const { item, server, player, player: { x, y, z } } = event
|
|
if (item.id !== `tfg:${pill_event}_tablet`) return
|
|
item.count--
|
|
player.addItemCooldown(item, 100)
|
|
server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 1800 0 true`)
|
|
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`)
|
|
});
|
|
});
|
|
|
|
ItemEvents.rightClicked(event => {
|
|
const { item, server, player, player: { x, y, z } } = event
|
|
if (item.id !== `tfg:antipoison_pill`) return
|
|
item.count--
|
|
player.addItemCooldown(item, 50)
|
|
event.player.removeEffect('minecraft:poison')
|
|
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`)
|
|
});
|
|
|
|
ItemEvents.rightClicked(event => {
|
|
const { item, server, player, player: { x, y, z } } = event
|
|
if (item.id !== `tfg:antipoison_tablet`) return
|
|
item.count--
|
|
player.addItemCooldown(item, 50)
|
|
event.player.removeEffect('minecraft:poison')
|
|
event.player.removeEffect('minecraft:wither')
|
|
event.player.removeEffect('minecraft:weakness')
|
|
event.player.removeEffect('minecraft:slowness')
|
|
event.player.removeEffect('minecraft:mining_fatigue')
|
|
event.player.removeEffect('minecraft:nausea')
|
|
event.player.removeEffect('minecraft:blindness')
|
|
event.player.removeEffect('minecraft:hunger')
|
|
event.player.removeEffect('minecraft:bad_omen')
|
|
event.player.removeEffect('minecraft:darkness')
|
|
event.player.removeEffect('minecraft:unluck')
|
|
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`)
|
|
});
|
|
|
|
//salvos
|
|
const salvo_event = [
|
|
'fire_resistance',
|
|
'invisibility',
|
|
'luck',
|
|
'resistance',
|
|
];
|
|
|
|
salvo_event.forEach(salvo_event => {
|
|
|
|
ItemEvents.rightClicked(event => {
|
|
const { item, server, player, player: { x, y, z } } = event
|
|
if (item.id !== `tfg:${salvo_event}_salvo`) return
|
|
item.count--
|
|
player.addItemCooldown(item, 100)
|
|
server.runCommandSilent(`effect give ${player.username} minecraft:${salvo_event} 480 0 true`)
|
|
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`)
|
|
});
|
|
});
|
|
|
|
ItemEvents.rightClicked(event => {
|
|
const { item, server, player, player: { x, y, z } } = event
|
|
if (item.id !== `tfg:absorption_salvo`) return
|
|
item.count--
|
|
player.addItemCooldown(item, 200)
|
|
server.runCommandSilent(`effect give ${player.username} minecraft:absorption 480 4 true`)
|
|
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`)
|
|
});
|
|
|
|
ItemEvents.rightClicked(event => {
|
|
const { item, server, player, player: { x, y, z } } = event
|
|
if (item.id !== `tfg:instant_health_salvo`) return
|
|
item.count--
|
|
player.addItemCooldown(item, 100)
|
|
server.runCommandSilent(`effect give ${player.username} minecraft:instant_health 1 1 true`)
|
|
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`)
|
|
});
|
|
|
|
//#endregion
|
|
|
|
// Vase Sounds
|
|
global.MINECRAFT_DYE_NAMES.forEach(color => {
|
|
BlockEvents.rightClicked(event => {
|
|
const { block, server, player } = event
|
|
if (block.id !== `tfg:decorative_vase/${color}`) return
|
|
server.runCommandSilent(`playsound tfc:block.quern.drag block ${player.username} ${block.x} ${block.y} ${block.z} 0.3 2.0 0.1`)
|
|
|
|
})
|
|
});
|
|
|
|
|
|
BlockEvents.rightClicked(event => {
|
|
const { block, server, player } = event
|
|
if (block.id !== 'tfg:decorative_vase') return
|
|
server.runCommandSilent(`playsound tfc:block.quern.drag block ${player.username} ${block.x} ${block.y} ${block.z} 0.3 2.0 0.1`)
|
|
});
|
|
//#endregion
|
|
|
|
BlockEvents.rightClicked(event => {
|
|
let item = event.item
|
|
if (item.id !== 'tfg:armor_stand_arms') return
|
|
let mob = event.block[event.facing].createEntity('minecraft:armor_stand')
|
|
mob.mergeNbt('{ShowArms:1b}')
|
|
mob.setPos(mob.x + 0.5, mob.y, mob.z + 0.5)
|
|
mob.setYaw(event.player.yaw + 180)
|
|
mob.spawn()
|
|
if (event.player.isCreative() === false) {
|
|
item.shrink(1)
|
|
}
|
|
})
|
|
|
|
/**
|
|
*
|
|
* @param {Internal.Player} player
|
|
* @returns {Internal.CompoundTag}
|
|
*/
|
|
function getTFGPersistentDataRoot(player) {
|
|
if (!player.persistentData.contains("tfg:custom_data")) {
|
|
player.persistentData.put("tfg:custom_data", {});
|
|
}
|
|
return player.persistentData.getCompound("tfg:custom_data")
|
|
}
|
|
|
|
//#region Fishing Net
|
|
const fish = [
|
|
'cod',
|
|
'crappie',
|
|
'jellyfish',
|
|
'lake_trout',
|
|
'largemouth_bass',
|
|
'rainbow_trout',
|
|
'salmon',
|
|
'smallmouth_bass',
|
|
'tropical_fish',
|
|
'bluegill'
|
|
];
|
|
|
|
const shellfish = [
|
|
'lobster',
|
|
'isopod',
|
|
'crayfish'
|
|
];
|
|
|
|
//tags wont work here (or at least I couldnt get it to work) so we need to manually declare each net tier.
|
|
const tiers = [
|
|
'wood',
|
|
'brass',
|
|
'rose_gold',
|
|
'sterling_silver',
|
|
'invar',
|
|
'tin_alloy',
|
|
'cupronickel',
|
|
'magnalium'
|
|
];
|
|
|
|
//Event detects if fish is right clicked with fishing net and then teleports the mob into the void, plays some actions and gives the player the proper item.
|
|
tiers.forEach(tier => {
|
|
fish.forEach(fish => {
|
|
ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => {
|
|
const { item, player, server, target } = event;
|
|
|
|
if (target.type !== `tfc:${fish}`) return
|
|
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
|
|
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
|
|
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
|
|
event.player.give(`tfc:food/${fish}`)
|
|
player.swing()
|
|
if (player.isCreative() === false) {
|
|
item.damageValue++
|
|
if (item.damageValue >= item.maxDamage) {
|
|
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`)
|
|
item.count--
|
|
}
|
|
}
|
|
})
|
|
})
|
|
|
|
//Shellfish Exception
|
|
shellfish.forEach(shellfish => {
|
|
ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => {
|
|
const { item, player, server, target } = event;
|
|
|
|
if (target.type !== `tfc:${shellfish}`) return
|
|
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
|
|
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
|
|
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
|
|
event.player.give('tfc:food/shellfish')
|
|
player.swing()
|
|
if (player.isCreative() === false) {
|
|
item.damageValue++
|
|
if (item.damageValue >= item.maxDamage) {
|
|
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`)
|
|
item.count--
|
|
}
|
|
}
|
|
})
|
|
})
|
|
|
|
//Pufferfish Exception
|
|
ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => {
|
|
const { item, player, server, target } = event;
|
|
|
|
if (target.type !== 'tfc:pufferfish') return
|
|
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
|
|
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
|
|
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
|
|
event.player.give('minecraft:pufferfish')
|
|
player.swing()
|
|
if (player.isCreative() === false) {
|
|
item.damageValue++
|
|
if (item.damageValue >= item.maxDamage) {
|
|
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`)
|
|
item.count--
|
|
}
|
|
}
|
|
})
|
|
})
|
|
//#endregion
|
|
|
|
//#region Block Interactions
|
|
|
|
/**
|
|
* @typedef {Object} BrickVariant
|
|
* @property {string} brick_type - The name of the brick variant.
|
|
* @property {string|null} brick - Main brick block ID.
|
|
* @property {string|null} brick_stairs - Brick stairs block ID.
|
|
* @property {string|null} brick_slab - Brick slab block ID.
|
|
* @property {string|null} brick_wall - Brick wall block ID.
|
|
* @property {string|null} cracked_brick - Cracked brick block ID.
|
|
* @property {string|null} cracked_stairs - Cracked brick stairs block ID.
|
|
* @property {string|null} cracked_slab - Cracked brick slab block ID.
|
|
* @property {string|null} cracked_wall - Cracked brick wall block ID.
|
|
* @property {string|null} mossy_brick - Mossy brick block ID.
|
|
* @property {string|null} mossy_stairs - Mossy brick stairs block ID.
|
|
* @property {string|null} mossy_slab - Mossy brick slab block ID.
|
|
* @property {string|null} mossy_wall - Mossy brick wall block ID.
|
|
* @property {string|null} smooth_brick - Smooth brick block ID.
|
|
* @property {string|null} smooth_stairs - Smooth brick stairs block ID.
|
|
* @property {string|null} smooth_slab - Smooth brick slab block ID.
|
|
* @property {string|null} smooth_wall - Smooth brick wall block ID.
|
|
* @property {string|null} chiseled_brick - Chiseled brick block ID.
|
|
*/
|
|
|
|
const AA_REGULAR_STONES = ['moon', 'mars', 'venus', 'mercury', 'glacio']
|
|
|
|
// #region BRICK_INDEX
|
|
/** @type {BrickVariant[]} */
|
|
global.BRICK_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({
|
|
brick_type: tfc_stone,
|
|
brick: `tfc:rock/bricks/${tfc_stone}`, brick_stairs: `tfc:rock/bricks/${tfc_stone}_stairs`, brick_slab: `tfc:rock/bricks/${tfc_stone}_slab`, brick_wall: `tfc:rock/bricks/${tfc_stone}_wall`,
|
|
cracked_brick: `tfc:rock/cracked_bricks/${tfc_stone}`, cracked_stairs: `tfc:rock/cracked_bricks/${tfc_stone}_stairs`, cracked_slab: `tfc:rock/cracked_bricks/${tfc_stone}_slab`, cracked_wall: `tfc:rock/cracked_bricks/${tfc_stone}_wall`,
|
|
mossy_brick: `tfc:rock/mossy_bricks/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_bricks/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_bricks/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_bricks/${tfc_stone}_wall`,
|
|
smooth_brick: `tfc:rock/smooth/${tfc_stone}`, smooth_stairs: `tfc:rock/smooth/${tfc_stone}_stairs`, smooth_slab: `tfc:rock/smooth/${tfc_stone}_slab`, smooth_wall: `tfc:rock/smooth/${tfc_stone}_wall`,
|
|
chiseled_brick: `tfc:rock/chiseled/${tfc_stone}`
|
|
}));
|
|
(global.CREATE_DECO_BRICK_TYPES ? global.CREATE_DECO_BRICK_TYPES : []).slice(0, -1).forEach(create_brick => {
|
|
global.BRICK_INDEX.push({
|
|
brick_type: create_brick,
|
|
brick: `createdeco:${create_brick}_bricks`, brick_stairs: `createdeco:${create_brick}_brick_stairs`, brick_slab: `createdeco:${create_brick}_brick_slab`, brick_wall: `createdeco:${create_brick}_brick_wall`,
|
|
cracked_brick: `createdeco:cracked_${create_brick}_bricks`, cracked_stairs: `createdeco:cracked_${create_brick}_brick_stairs`, cracked_slab: `createdeco:cracked_${create_brick}_brick_slab`, cracked_wall: `createdeco:cracked_${create_brick}_brick_wall`,
|
|
mossy_brick: `createdeco:mossy_${create_brick}_bricks`, mossy_stairs: `createdeco:mossy_${create_brick}_brick_stairs`, mossy_slab: `createdeco:mossy_${create_brick}_brick_slab`, mossy_wall: `createdeco:mossy_${create_brick}_brick_wall`,
|
|
smooth_brick: `createdeco:corner_${create_brick}_bricks`, smooth_stairs: `createdeco:corner_${create_brick}_brick_stairs`, smooth_slab: `createdeco:corner_${create_brick}_brick_slab`, smooth_wall: `createdeco:corner_${create_brick}_brick_wall`,
|
|
chiseled_brick: `createdeco:tiled_${create_brick}_bricks`
|
|
})
|
|
});
|
|
global.BRICK_INDEX = global.BRICK_INDEX.concat([
|
|
// { brick_type: '',
|
|
// brick: '', brick_stairs: '', brick_slab: '', brick_wall: '',
|
|
// cracked_brick: '', cracked_stairs: '', cracked_slab: '', cracked_wall: '',
|
|
// mossy_brick: '', mossy_stairs: '', mossy_slab: '', mossy_wallL: '',
|
|
// smooth_brick: '', smooth_stairs: '', smooth_slab: '', smooth_wall: '',
|
|
// chiseled_brick: '' },
|
|
|
|
{
|
|
brick_type: 'red',
|
|
brick: 'minecraft:bricks', brick_stairs: 'minecraft:brick_stairs', brick_slab: 'minecraft:brick_slab', brick_wall: 'minecraft:brick_wall',
|
|
cracked_brick: 'createdeco:cracked_red_bricks', cracked_stairs: 'createdeco:cracked_red_brick_stairs', cracked_slab: 'createdeco:cracked_red_brick_slab', cracked_wall: 'createdeco:cracked_red_brick_wall',
|
|
mossy_brick: 'createdeco:mossy_red_bricks', mossy_stairs: 'createdeco:mossy_red_brick_stairs', mossy_slab: 'createdeco:mossy_red_brick_slab', mossy_wall: 'createdeco:mossy_red_brick_wall',
|
|
smooth_brick: 'createdeco:corner_red_bricks', smooth_stairs: 'createdeco:corner_red_brick_stairs', smooth_slab: 'createdeco:corner_red_brick_slab', smooth_wall: 'createdeco:corner_red_brick_wall',
|
|
chiseled_brick: 'createdeco:tiled_red_bricks'
|
|
},
|
|
|
|
{
|
|
brick_type: 'light_concrete',
|
|
brick: 'gtceu:light_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null,
|
|
cracked_brick: 'gtceu:cracked_light_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null,
|
|
mossy_brick: 'gtceu:mossy_light_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null,
|
|
smooth_brick: 'gtceu:polished_light_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null,
|
|
chiseled_brick: 'gtceu:chiseled_light_concrete'
|
|
},
|
|
|
|
{
|
|
brick_type: 'dark_concrete',
|
|
brick: 'gtceu:dark_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null,
|
|
cracked_brick: 'gtceu:cracked_dark_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null,
|
|
mossy_brick: 'gtceu:mossy_dark_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null,
|
|
smooth_brick: 'gtceu:polished_dark_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null,
|
|
chiseled_brick: 'gtceu:chiseled_dark_concrete'
|
|
},
|
|
|
|
{
|
|
brick_type: 'deepslate',
|
|
brick: 'minecraft:deepslate_bricks', brick_stairs: 'minecraft:deepslate_brick_stairs', brick_slab: 'minecraft:deepslate_brick_slab', brick_wall: 'minecraft:deepslate_brick_wall',
|
|
cracked_brick: 'minecraft:cracked_deepslate_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_deepslate_slab', cracked_wall: 'tfg:rock/cracked_bricks_deepslate_wall',
|
|
mossy_brick: 'tfg:rock/mossy_bricks_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_deepslate_slab', mossy_wall: 'tfg:rock/mossy_bricks_deepslate_wall',
|
|
smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall',
|
|
chiseled_brick: 'minecraft:chiseled_deepslate'
|
|
},
|
|
|
|
{
|
|
brick_type: 'deepslate_tiles',
|
|
brick: 'minecraft:deepslate_tiles', brick_stairs: 'minecraft:deepslate_tile_stairs', brick_slab: 'minecraft:deepslate_tile_slab', brick_wall: 'minecraft:deepslate_tile_wall',
|
|
cracked_brick: 'minecraft:cracked_deepslate_tiles', cracked_stairs: 'tfg:rock/cracked_tiles_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_tiles_deepslate_slab', cracked_wall: 'tfg:rock/cracked_tiles_deepslate_wall',
|
|
mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null,
|
|
smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall',
|
|
chiseled_brick: 'minecraft:chiseled_deepslate'
|
|
},
|
|
|
|
{
|
|
brick_type: 'blackstone',
|
|
brick: 'minecraft:polished_blackstone_bricks', brick_stairs: 'minecraft:polished_blackstone_brick_stairs', brick_slab: 'minecraft:polished_blackstone_brick_slab', brick_wall: 'minecraft:polished_blackstone_brick_wall',
|
|
cracked_brick: 'minecraft:cracked_polished_blackstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_blackstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_blackstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_blackstone_wall',
|
|
mossy_brick: 'tfg:rock/mossy_bricks_blackstone', mossy_stairs: 'tfg:rock/mossy_bricks_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_blackstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_blackstone_wall',
|
|
smooth_brick: 'minecraft:polished_blackstone', smooth_stairs: 'minecraft:polished_blackstone_stairs', smooth_slab: 'minecraft:polished_blackstone_slab', smooth_wall: 'minecraft:polished_blackstone_wall',
|
|
chiseled_brick: 'minecraft:chiseled_blackstone'
|
|
},
|
|
|
|
{
|
|
brick_type: 'dripstone',
|
|
brick: 'create:cut_dripstone_bricks', brick_stairs: 'create:cut_dripstone_brick_stairs', brick_slab: 'create:cut_dripstone_brick_slab', brick_wall: 'create:cut_dripstone_brick_wall',
|
|
cracked_brick: 'tfg:rock/cracked_bricks_dripstone', cracked_stairs: 'tfg:rock/cracked_bricks_dripstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_dripstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_dripstone_wall',
|
|
mossy_brick: 'tfg:rock/mossy_bricks_dripstone', mossy_stairs: 'tfg:rock/mossy_bricks_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_dripstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_dripstone_wall',
|
|
smooth_brick: 'create:polished_cut_dripstone', smooth_stairs: 'create:polished_cut_dripstone_stairs', smooth_slab: 'create:polished_cut_dripstone_slab', smooth_wall: 'create:polished_cut_dripstone_wall',
|
|
chiseled_brick: 'create:small_dripstone_bricks'
|
|
},
|
|
|
|
{
|
|
brick_type: 'crackrack',
|
|
brick: 'minecraft:nether_bricks', brick_stairs: 'minecraft:nether_bricks_stairs', brick_slab: 'minecraft:nether_bricks_slab', brick_wall: 'minecraft:nether_bricks_wall',
|
|
cracked_brick: 'minecraft:cracked_nether_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_nether_stairs', cracked_slab: 'tfg:rock/cracked_bricks_nether_slab', cracked_wall: 'tfg:rock/cracked_bricks_nether_wall',
|
|
mossy_brick: 'tfg:rock/mossy_bricks_nether', mossy_stairs: 'tfg:rock/mossy_bricks_nether_stairs', mossy_slab: 'tfg:rock/mossy_bricks_nether_slab', mossy_wall: 'tfg:rock/mossy_bricks_nether_wall',
|
|
smooth_brick: 'tfg:rock/polished_crackrack', smooth_stairs: 'tfg:rock/polished_crackrack_stairs', smooth_slab: 'tfg:rock/polished_crackrack_slab', smooth_wall: 'tfg:rock/polished_crackrack_wall',
|
|
chiseled_brick: 'minecraft:chiseled_nether_bricks'
|
|
},
|
|
|
|
{
|
|
brick_type: 'moon_deepslate',
|
|
brick: 'tfg:rock/bricks_moon_deepslate', brick_stairs: 'tfg:rock/bricks_moon_deepslate_stairs', brick_slab: 'tfg:rock/bricks_moon_deepslate_slab', brick_wall: 'tfg:rock/bricks_moon_deepslate_wall',
|
|
cracked_brick: 'tfg:rock/cracked_bricks_moon_deepslate', cracked_stairs: 'tfg:rock/cracked_bricks_moon_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_moon_slab', cracked_wall: 'tfg:rock/cracked_bricks_moon_wall',
|
|
mossy_brick: 'tfg:rock/mossy_bricks_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_moon_slab', mossy_wall: 'tfg:rock/mossy_bricks_moon_deepslate_wall',
|
|
smooth_brick: 'tfg:rock/polished_moon_deepslate', smooth_stairs: 'tfg:rock/polished_moon_deepslate_stairs', smooth_slab: 'ad_astra:polished_moon_stone_slab', smooth_wall: 'tfg:rock/polished_moon_deepslate_wall',
|
|
chiseled_brick: 'tfg:rock/chiseled_bricks_moon_deepslate'
|
|
},
|
|
|
|
{
|
|
brick_type: 'permafrost',
|
|
brick: 'ad_astra:permafrost_bricks', brick_stairs: 'ad_astra:permafrost_brick_stairs', brick_slab: 'ad_astra:permafrost_brick_slab', brick_wall: 'ad_astra:permafrost_brick_wall',
|
|
cracked_brick: 'ad_astra:cracked_permafrost_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_permafrost_stairs', cracked_slab: 'tfg:rock/cracked_bricks_permafrost_slab', cracked_wall: 'tfg:rock/cracked_bricks_permafrost_wall',
|
|
mossy_brick: 'tfg:rock/mossy_bricks_permafrost', mossy_stairs: 'tfg:rock/mossy_bricks_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_bricks_permafrost_slab', mossy_wall: 'tfg:rock/mossy_bricks_permafrost_wall',
|
|
smooth_brick: 'ad_astra:polished_permafrost', smooth_stairs: 'ad_astra:polished_permafrost_stairs', smooth_slab: 'ad_astra:polished_permafrost_slab', smooth_wall: 'tfg:rock/polished_permafrost_wall',
|
|
chiseled_brick: 'ad_astra:chiseled_permafrost_bricks'
|
|
},
|
|
|
|
{
|
|
brick_type: 'red_granite',
|
|
brick: 'gtceu:red_granite_bricks', brick_stairs: 'tfg:rock/bricks_red_granite_stairs', brick_slab: 'tfg:rock/bricks_red_granite_slab', brick_wall: 'tfg:rock/bricks_red_granite_wall',
|
|
cracked_brick: 'gtceu:cracked_red_granite_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_red_granite_stairs', cracked_slab: 'tfg:rock/cracked_bricks_red_granite_slab', cracked_wall: 'tfg:rock/cracked_bricks_red_granite_wall',
|
|
mossy_brick: 'gtceu:mossy_red_granite_bricks', mossy_stairs: 'tfg:rock/mossy_bricks_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_bricks_red_granite_slab', mossy_wall: 'tfg:rock/mossy_bricks_red_granite_wall',
|
|
smooth_brick: 'gtceu:polished_red_granite', smooth_stairs: 'tfg:rock/polished_red_granite_stairs', smooth_slab: 'tfg:rock/polished_red_granite_slab', smooth_wall: 'tfg:rock/polished_red_granite_wall',
|
|
chiseled_brick: 'gtceu:chiseled_red_granite'
|
|
},
|
|
|
|
{
|
|
brick_type: 'venus_sandstone',
|
|
brick: 'ad_astra:venus_sandstone_bricks', brick_stairs: 'ad_astra:venus_sandstone_brick_stairs', brick_slab: 'ad_astra:venus_sandstone_brick_slab', brick_wall: 'tfg:rock/bricks_venus_sandstone_wall',
|
|
cracked_brick: 'ad_astra:cracked_venus_sandstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_venus_sandstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_venus_sandstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall',
|
|
mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null,
|
|
smooth_brick: null, smooth_stairs: null, smooth_slab: null, smooth_wall: null,
|
|
chiseled_brick: null
|
|
},
|
|
|
|
{
|
|
brick_type: 'stone',
|
|
brick: 'minecraft:stone_bricks', brick_stairs: 'minecraft:stone_brick_stairs', brick_slab: 'minecraft:stone_brick_slab', brick_wall: 'minecraft:stone_brick_wall',
|
|
cracked_brick: 'minecraft:cracked_stone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_stone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_stone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall',
|
|
mossy_brick: 'minecraft:mossy_stone_bricks', mossy_stairs: 'minecraft:mossy_stone_brick_stairs', mossy_slab: 'minecraft:mossy_stone_brick_slab', mossy_wall: 'minecraft:mossy_stone_brick_wall',
|
|
smooth_brick: 'minecraft:smooth_stone', smooth_stairs: 'tfg:rock/smooth_stone_stairs', smooth_slab: 'minecraft:smooth_stone_slab', smooth_wall: 'tfg:rock/smooth_stone_wall',
|
|
chiseled_brick: 'minecraft:chiseled_stone_bricks'
|
|
}
|
|
]);
|
|
|
|
global.BRICK_INDEX = global.BRICK_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => (
|
|
{
|
|
brick_type: stone,
|
|
brick: `ad_astra:${stone}_stone_bricks`, brick_stairs: `ad_astra:${stone}_stone_brick_stairs`, brick_slab: `ad_astra:${stone}_stone_brick_slab`, brick_wall: `ad_astra:${stone}_stone_brick_wall`,
|
|
cracked_brick: `ad_astra:cracked_${stone}_stone_bricks`, cracked_stairs: `tfg:rock/cracked_bricks_${stone}_stairs`, cracked_slab: `tfg:rock/cracked_bricks_${stone}_slab`, cracked_wall: `tfg:rock/cracked_bricks_${stone}_wall`,
|
|
mossy_brick: `tfg:rock/mossy_bricks_${stone}`, mossy_stairs: `tfg:rock/mossy_bricks_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_bricks_${stone}_slab`, mossy_wall: `tfg:rock/mossy_bricks_${stone}_wall`,
|
|
smooth_brick: `ad_astra:polished_${stone}_stone`, smooth_stairs: `ad_astra:polished_${stone}_stone_stairs`, smooth_slab: `ad_astra:polished_${stone}_stone_slab`, smooth_wall: `tfg:rock/polished_${stone}_wall`,
|
|
chiseled_brick: `ad_astra:chiseled_${stone}_stone_bricks`
|
|
}
|
|
)))
|
|
|
|
// #endregion BRICK_INDEX
|
|
|
|
// #region COBBLE_INDEX
|
|
global.COBBLE_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({
|
|
cobble_type: tfc_stone,
|
|
block: `tfc:rock/cobble/${tfc_stone}`, stairs: `tfc:rock/cobble/${tfc_stone}_stairs`, slab: `tfc:rock/cobble/${tfc_stone}_slab`, wall: `tfc:rock/cobble/${tfc_stone}_wall`,
|
|
mossy_block: `tfc:rock/mossy_cobble/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_cobble/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_cobble/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_cobble/${tfc_stone}_wall`
|
|
}));
|
|
|
|
global.COBBLE_INDEX = global.COBBLE_INDEX.concat([
|
|
{
|
|
cobble_type: 'deepslate',
|
|
block: 'minecraft:cobbled_deepslate', stairs: 'minecraft:cobbled_deepslate_stairs', slab: 'minecraft:cobbled_deepslate_slab', wall: 'minecraft:cobbled_deepslate_wall',
|
|
mossy_block: 'tfg:rock/mossy_cobble_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_deepslate_wall'
|
|
},
|
|
|
|
{
|
|
cobble_type: 'blackstone',
|
|
block: 'tfg:rock/cobble_blackstone', stairs: 'tfg:rock/cobble_blackstone_stairs', slab: 'tfg:rock/cobble_blackstone_slab', wall: 'tfg:rock/cobble_blackstone_wall',
|
|
mossy_block: 'tfg:rock/mossy_cobble_blackstone', mossy_stairs: 'tfg:rock/mossy_cobble_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_blackstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_blackstone_wall'
|
|
},
|
|
|
|
{
|
|
cobble_type: 'dripstone',
|
|
block: 'tfg:rock/cobble_dripstone', stairs: 'tfg:rock/cobble_dripstone_stairs', slab: 'tfg:rock/cobble_dripstone_slab', wall: 'tfg:rock/cobble_dripstone_wall',
|
|
mossy_block: 'tfg:rock/mossy_cobble_dripstone', mossy_stairs: 'tfg:rock/mossy_cobble_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_dripstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_dripstone_wall'
|
|
},
|
|
|
|
{
|
|
cobble_type: 'crackrack',
|
|
block: 'tfg:rock/cobble_crackrack', stairs: 'tfg:rock/cobble_crackrack_stairs', slab: 'tfg:rock/cobble_crackrack_slab', wall: 'tfg:rock/cobble_crackrack_wall',
|
|
mossy_block: 'tfg:rock/mossy_cobble_crackrack', mossy_stairs: 'tfg:rock/mossy_cobble_crackrack_stairs', mossy_slab: 'tfg:rock/mossy_cobble_crackrack_slab', mossy_wall: 'tfg:rock/mossy_cobble_crackrack_wall'
|
|
},
|
|
|
|
{
|
|
cobble_type: 'moon_deepslate',
|
|
block: 'tfg:rock/cobble_moon_deepslate', stairs: 'tfg:rock/cobble_moon_deepslate_stairs', slab: 'tfg:rock/cobble_moon_deepslate_slab', wall: 'tfg:rock/cobble_moon_deepslate_wall',
|
|
mossy_block: 'tfg:rock/mossy_cobble_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_moon_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_moon_deepslate_wall'
|
|
},
|
|
|
|
{
|
|
cobble_type: 'permafrost',
|
|
block: 'tfg:rock/cobble_permafrost', stairs: 'tfg:rock/cobble_permafrost_stairs', slab: 'tfg:rock/cobble_permafrost_slab', wall: 'tfg:rock/cobble_permafrost_wall',
|
|
mossy_block: 'tfg:rock/mossy_cobble_permafrost', mossy_stairs: 'tfg:rock/mossy_cobble_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_cobble_permafrost_slab', mossy_wall: 'tfg:rock/mossy_cobble_permafrost_wall'
|
|
},
|
|
|
|
{
|
|
cobble_type: 'red_granite',
|
|
block: 'gtceu:red_granite_cobblestone', stairs: 'tfg:rock/cobble_red_granite_stairs', slab: 'tfg:rock/cobble_red_granite_slab', wall: 'tfg:rock/cobble_red_granite_wall',
|
|
mossy_block: 'gtceu:mossy_red_granite_cobblestone', mossy_stairs: 'tfg:rock/mossy_cobble_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_cobble_red_granite_slab', mossy_wall: 'tfg:rock/mossy_cobble_red_granite_wall'
|
|
},
|
|
|
|
{
|
|
cobble_type: 'stone',
|
|
block: 'minecraft:cobblestone', stairs: 'minecraft:cobblestone_stairs', slab: 'minecraft:cobblestone_slab', wall: 'minecraft:cobblestone_wall',
|
|
mossy_block: 'minecraft:mossy_cobblestone', mossy_stairs: 'minecraft:mossy_cobblestone_stairs', mossy_slab: 'minecraft:mossy_cobblestone_slab', mossy_wall: 'minecraft:mossy_cobblestone_wall'
|
|
}
|
|
]);
|
|
|
|
global.COBBLE_INDEX = global.COBBLE_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => (
|
|
{
|
|
cobble_type: stone,
|
|
block: `ad_astra:${stone}_cobblestone`, stairs: `ad_astra:${stone}_cobblestone_stairs`, slab: `ad_astra:${stone}_cobblestone_slab`, wall: `tfg:rock/cobble_${stone}_wall`,
|
|
mossy_block: `tfg:rock/mossy_cobble_${stone}`, mossy_stairs: `tfg:rock/mossy_cobble_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_cobble_${stone}_slab`, mossy_wall: `tfg:rock/mossy_cobble_${stone}_wall`
|
|
}
|
|
)))
|
|
|
|
// #endregion COBBLE_INDEX
|
|
|
|
/**
|
|
* Function for replacing a block with another block by crouch-right-clicking with a tool.
|
|
*
|
|
* If input and output is null recipe will just return.
|
|
*
|
|
* @param {*} event
|
|
* @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended.
|
|
* @param {string} outputBlock -Block ID of the replacement.
|
|
* @param {string} toolId -Item ID of the tool.
|
|
* @param {boolean} damageTool -Sets wether the tool should be damaged on use.
|
|
* @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null.
|
|
* @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null.
|
|
* @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block.
|
|
*/
|
|
function transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) {
|
|
const { server, item, player, block } = event;
|
|
|
|
if (!inputBlock || !outputBlock) return;
|
|
|
|
if (inputBlock.startsWith('#')) {
|
|
if (!block.hasTag(inputBlock.substring(1))) return;
|
|
} else {
|
|
if (block.id.toString() !== inputBlock) return;
|
|
}
|
|
|
|
if (toolId.startsWith('#')) {
|
|
if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return;
|
|
} else {
|
|
if (item.isEmpty() || player.mainHandItem.id !== toolId) return;
|
|
}
|
|
|
|
if (!player.crouching) return;
|
|
|
|
let state = block.getBlockState().toString();
|
|
if (state.includes('[') && copyBlockstate === true) {
|
|
state = state.substring(state.indexOf('['));
|
|
} else {
|
|
state = '';
|
|
}
|
|
|
|
if (soundId) {
|
|
server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`)
|
|
}
|
|
if (particleId) {
|
|
server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`)
|
|
}
|
|
player.swing();
|
|
|
|
if (!player.isCreative() && damageTool) {
|
|
item.damageValue++;
|
|
if (item.damageValue >= item.maxDamage) {
|
|
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`);
|
|
item.count--;
|
|
}
|
|
}
|
|
|
|
const dim = block.level.name.getString();
|
|
server.runCommandSilent(`execute in ${dim} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`);
|
|
server.runCommandSilent(`execute in ${dim} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`);
|
|
};
|
|
|
|
/**
|
|
* Function for replacing a block with another block by crouch-right-clicking with a tool and receiving an item.
|
|
*
|
|
* If input and output is null recipe will just return.
|
|
*
|
|
* @param {*} event
|
|
* @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended.
|
|
* @param {string} outputBlock -Block ID of the replacement.
|
|
* @param {string} outputItem -Item ID of item to receive
|
|
* @param {number} outputCount -Number of items to be returned
|
|
* @param {string} toolId -Item ID of the tool.
|
|
* @param {boolean} damageTool -Sets wether the tool should be damaged on use.
|
|
* @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null.
|
|
* @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null.
|
|
* @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block.
|
|
*/
|
|
function transformBlockWithToolReturn(event, inputBlock, outputBlock, outputItem, outputCount, toolId, damageTool, soundId, particleId, copyBlockstate) {
|
|
const { server, item, player, block } = event;
|
|
|
|
if (!inputBlock || !outputBlock) return;
|
|
|
|
if (inputBlock.startsWith('#')) {
|
|
if (!block.hasTag(inputBlock.substring(1))) return;
|
|
} else {
|
|
if (block.id.toString() !== inputBlock) return;
|
|
}
|
|
|
|
if (toolId.startsWith('#')) {
|
|
if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return;
|
|
} else {
|
|
if (item.isEmpty() || player.mainHandItem.id !== toolId) return;
|
|
}
|
|
|
|
transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate)
|
|
|
|
const dim = block.level.name.getString();
|
|
server.runCommandSilent(`execute in ${dim} run summon item ${player.x} ${player.y} ${player.z} {Item:{id:'${outputItem}', Count:${outputCount}b}}`);
|
|
|
|
}
|
|
/**
|
|
* Function for replacing a block with another block by crouch-right-clicking with an item.
|
|
*
|
|
* If input and output is null recipe will just return.
|
|
*
|
|
* @param {*} event
|
|
* @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended.
|
|
* @param {string} outputBlock -Block ID of the replacement.
|
|
* @param {string} itemId -Item ID of the consumed item. Accepts Tags.
|
|
* @param {boolean} consumeItem -Sets wether the item should be comsumed or not.
|
|
* @param {number} consumeAmount -Number of items to consume, can't be greater than stacksize.
|
|
* @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null.
|
|
* @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null.
|
|
* @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block.
|
|
*/
|
|
function transformBlockWithItem(event, inputBlock, outputBlock, itemId, consumeItem, consumeAmount, soundId, particleId, copyBlockstate) {
|
|
const { server, item, player, block } = event;
|
|
|
|
if (!inputBlock || !outputBlock) return;
|
|
|
|
if (inputBlock.startsWith('#')) {
|
|
if (!block.hasTag(inputBlock.substring(1))) return;
|
|
} else {
|
|
if (block.id.toString() !== inputBlock) return;
|
|
}
|
|
|
|
if (itemId.startsWith('#')) {
|
|
if (item.isEmpty() || !player.mainHandItem.hasTag(itemId.substring(1))) return;
|
|
} else {
|
|
if (item.isEmpty() || player.mainHandItem.id !== itemId) return;
|
|
}
|
|
if (!player.crouching) return;
|
|
|
|
let state = block.getBlockState().toString()
|
|
if (state.includes('[') && copyBlockstate === true) {
|
|
state = state.substring(block.getBlockState().toString().indexOf('['));
|
|
} else {
|
|
state = ''
|
|
}
|
|
|
|
if (!player.isCreative() && consumeItem === true) {
|
|
if (item.count < consumeAmount) {
|
|
player.tell(`Item count is too low. Held amount = ${item.count}, required amount = ${consumeAmount}`)
|
|
return;
|
|
}
|
|
item.count -= consumeAmount;
|
|
}
|
|
if (soundId) {
|
|
server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`)
|
|
}
|
|
if (particleId) {
|
|
server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`)
|
|
}
|
|
player.swing()
|
|
event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`)
|
|
event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`)
|
|
};
|
|
|
|
// Declare Events
|
|
BlockEvents.rightClicked(event => {
|
|
//Brick index events
|
|
for (const b of global.BRICK_INDEX) {
|
|
//brick -> cracked
|
|
transformBlockWithTool(event, b.brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
|
|
transformBlockWithTool(event, b.brick_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
|
|
transformBlockWithTool(event, b.brick_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
|
|
transformBlockWithTool(event, b.brick_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
|
|
//brick -> mossy
|
|
transformBlockWithItem(event, b.brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.brick_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.brick_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.brick_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.brick_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
//cracked -> mossy
|
|
transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
//mossy -> cracked
|
|
transformBlockWithTool(event, b.mossy_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
|
|
transformBlockWithTool(event, b.mossy_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
|
|
transformBlockWithTool(event, b.mossy_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
|
|
transformBlockWithTool(event, b.mossy_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
|
|
//mossy -> brick
|
|
transformBlockWithTool(event, b.mossy_brick, b.brick, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.mossy_brick, b.brick, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithTool(event, b.mossy_stairs, b.brick_stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.mossy_stairs, b.brick_stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithTool(event, b.mossy_slab, b.brick_slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.mossy_slab, b.brick_slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithTool(event, b.mossy_wall, b.brick_wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.mossy_wall, b.brick_wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
//cracked -> brick
|
|
transformBlockWithItem(event, b.cracked_brick, b.brick, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true);
|
|
transformBlockWithItem(event, b.cracked_stairs, b.brick_stairs, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true);
|
|
transformBlockWithItem(event, b.cracked_slab, b.brick_slab, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true);
|
|
transformBlockWithItem(event, b.cracked_wall, b.brick_wall, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true);
|
|
// brick -> smooth
|
|
transformBlockWithTool(event, b.brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true);
|
|
transformBlockWithTool(event, b.mossy_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true);
|
|
transformBlockWithTool(event, b.cracked_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true);
|
|
// smooth -> brick
|
|
transformBlockWithTool(event, b.smooth_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
|
|
transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithTool(event, b.smooth_brick, b.brick, '#forge:tools/files', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
|
|
}
|
|
|
|
//Cobble index events
|
|
for (const c of global.COBBLE_INDEX) {
|
|
//cobble -> mossy
|
|
transformBlockWithItem(event, c.block, c.mossy_block, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, c.block, c.mossy_block, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, c.stairs, c.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, c.stairs, c.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, c.slab, c.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, c.slab, c.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, c.wall, c.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, c.wall, c.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
|
|
//mossy -> cobble
|
|
transformBlockWithTool(event, c.mossy_block, c.block, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, c.mossy_block, c.block, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithTool(event, c.mossy_stairs, c.stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, c.mossy_stairs, c.stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithTool(event, c.mossy_slab, c.slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, c.mossy_slab, c.slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithTool(event, c.mossy_wall, c.wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
transformBlockWithItem(event, c.mossy_wall, c.wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
|
|
}
|
|
|
|
//Misc Events
|
|
transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool_frame', 'tfg:glacian_wool', true, 2, 'block.wool.place', 'minecraft:happy_villager', true);
|
|
transformBlockWithToolReturn(event, 'tfg:glacian_wool_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool', 2,'#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
|
|
|
|
transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_frame', 'tfg:aes_insulation_roll', true, 1, 'block.wool.place', 'minecraft:happy_villager', true);
|
|
transformBlockWithToolReturn(event, 'tfg:aes_insulation_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_roll', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
|
|
|
|
transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:moderate_core_frame', 'tfg:graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true);
|
|
transformBlockWithToolReturn(event, 'tfg:moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
|
|
|
|
transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:impure_moderate_core_frame', 'tfg:impure_graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true);
|
|
transformBlockWithToolReturn(event, 'tfg:impure_moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
|
|
|
|
});
|
|
|
|
// Makes scythes, hoes, and knives take damage when cutting grass
|
|
BlockEvents.broken('tfc:mineable_with_sharp_tool', event => {
|
|
let player = event.player;
|
|
let toolUsed = player.mainHandItem;
|
|
|
|
if (!toolUsed.hasTag('tfc:sharp_tools')) {
|
|
return;
|
|
}
|
|
|
|
if (!player.isCreative()) {
|
|
toolUsed.damageValue++;
|
|
if (toolUsed.damageValue >= toolUsed.maxDamage) {
|
|
event.server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`);
|
|
toolUsed.count--;
|
|
}
|
|
}
|
|
});
|
|
|
|
//#endregion
|