diff --git a/src/index.toml b/src/index.toml index 5142d15..a3a0456 100644 --- a/src/index.toml +++ b/src/index.toml @@ -95,6 +95,10 @@ hash = "db260149b77ba74370499e28c922aeb6d2fbfcf8313e3d3b9772fd6672fe05e8" file = "kubejs/client_scripts/cape.js" hash = "d86fdabd2650706a673bc235e3fa19b4339f7d6e3dec2c0dd938f40c7ef880dd" +[[files]] +file = "kubejs/client_scripts/observeMekanism.js" +hash = "09c7fadd2f8c25a4f20afe523a441d12e6302b39bacb1ab5e0ad6e81900ea555" + [[files]] file = "kubejs/client_scripts/ponder/fission_mek.js" hash = "7aec59883862a2fa254457f544e54d2ee9d0b1c8c0c59a892bc033d142e2eebd" diff --git a/src/kubejs/client_scripts/observeMekanism.js b/src/kubejs/client_scripts/observeMekanism.js new file mode 100644 index 0000000..d7deddc --- /dev/null +++ b/src/kubejs/client_scripts/observeMekanism.js @@ -0,0 +1,76 @@ +const $TileEntityMultiblock = Java.loadClass('mekanism.common.tile.prefab.TileEntityMultiblock') +const $TileEntityMekanism = Java.loadClass('mekanism.common.tile.base.TileEntityMekanism') +//const $CompoundTag = Java.loadClass('net.minecraft.nbt.CompoundTag') + +const mapMekanismMultiblockToTaskID = { + "dynamicTank":"", + "inductionMatrix":"621A4E28BD50F96C", + "thermoelectricBoiler":"", + "evaporation":"", + "sps":"2A13A1B1A85C2981", + "industrialTurbine":"71DB5E5857993B3F", + "fissionReactor":"34D8628732B36EDF", + "fusionReactor": "0B31B1E6089BB33E" +} + +const mapMekanismGasToTaskID = { + "mekanism:fissile_fuel": "4E04F8F091D18EA4", + "mekanism:uranium_oxide": "29D6CA9A77ACACC6", + "mekanism:sulfuric_acid": "66C97246C3EEFB7C", + "mekanism:hydrofluoric_acid": "510CE57C709D5A44", + "mekanism:uranium_hexafluoride": "05A215BE7EE2F35D" + +} + +ClientEvents.tick(event => { + if (Client.hitResult != null && Client.hitResult.getType() == 'BLOCK') { + let block = event.level.getBlock(Client.hitResult.getBlockPos()) + if (block.id.contains('mekanism')) { + let blockEntity = block.entity + // Multiblock handler + if (blockEntity && blockEntity instanceof $TileEntityMultiblock) { + // Multiblock is complete + if (blockEntity.getMultiblock().isFormed()) { + let manager = blockEntity.getManager() + if (manager) { + let managerName = manager.getName() + if (managerName) { + let taskString = mapMekanismMultiblockToTaskID[managerName] + if (taskString) { + let tag = new $CompoundTag + tag.putString('task', taskString) + event.player.sendData('customTask', tag) + } + } + } + } + } + // Capability TE's + if (blockEntity instanceof $TileEntityMekanism) { + // Handles Gas + if (blockEntity.canHandleGas()) { + let tanks = blockEntity.getGasTanks(null) + tanks.forEach(tank => { + let gas = tank.getStack().getTypeRegistryName() + let taskString = mapMekanismGasToTaskID[gas.toString()] + if (taskString) { + let tag = new $CompoundTag + tag.putString('task', taskString) + event.player.sendData('customTask', tag) + } + }) + } + } + } + } +}) + +NetworkEvents.dataReceived('customTask', event => { + const {entity, data, level} = event + let taskString = data.task + let task = FTBQuests.getObject(level, taskString) + let playerQuestData = FTBQuests.getData(entity) + if (task && playerQuestData && !playerQuestData.isCompleted(task) && playerQuestData.canStartTasks(task.quest)) { + playerQuestData.addProgress(task, 1) + } +}) \ No newline at end of file diff --git a/src/pack.toml b/src/pack.toml index 9becf6d..954d53e 100644 --- a/src/pack.toml +++ b/src/pack.toml @@ -6,7 +6,7 @@ pack-format = "packwiz:1.1.0" [index] file = "index.toml" hash-format = "sha256" -hash = "2b206a7b01eb63b152efd38b7423baea5426c2b9bee90b8ca24e0b275fd0da9b" +hash = "1ffb01e741f6829cecfa174e7bd4700773b6ed5f961459ece7feb7fe604c0d1d" [versions] forge = "47.2.0"